summaryrefslogtreecommitdiff
path: root/content/handlers
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2023-11-25 20:02:23 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2023-11-25 20:02:23 +0000
commit4cb38c4704e4ed11cf10fc046b32ef6ef5afa78f (patch)
tree2815b0f576b192a9bd84d386b6f4c0e0cee38197 /content/handlers
parent41de6cb6f8ee73a712e305f8c1b6d34090a24523 (diff)
downloadnetsurf-4cb38c4704e4ed11cf10fc046b32ef6ef5afa78f.tar.gz
netsurf-4cb38c4704e4ed11cf10fc046b32ef6ef5afa78f.tar.bz2
css: Add option to ignore author level CSS
This adds a new config option, `author_level_css`. When it is disabled, NetSurf will ignore all CSS from the web page. In this case only the default CSS rules from the browser and user CSS rules will be applied. It is enabled by default. Tested by running: ./nsgtk3 --author_level_css=0
Diffstat (limited to 'content/handlers')
-rw-r--r--content/handlers/css/hints.c4
-rw-r--r--content/handlers/html/box_construct.c13
-rw-r--r--content/handlers/html/css.c5
3 files changed, 17 insertions, 5 deletions
diff --git a/content/handlers/css/hints.c b/content/handlers/css/hints.c
index defeae10a..286befab9 100644
--- a/content/handlers/css/hints.c
+++ b/content/handlers/css/hints.c
@@ -1587,6 +1587,10 @@ static void css_hint_list(
dom_exception err;
dom_string *attr;
+ if (nsoption_bool(author_level_css) == false) {
+ return;
+ }
+
err = dom_element_get_attribute(node, corestring_dom_type, &attr);
if (err == DOM_NO_ERR && attr != NULL) {
const char *attr_str = dom_string_data(attr);
diff --git a/content/handlers/html/box_construct.c b/content/handlers/html/box_construct.c
index eeadb8453..8519c2b1d 100644
--- a/content/handlers/html/box_construct.c
+++ b/content/handlers/html/box_construct.c
@@ -249,16 +249,19 @@ box_get_style(html_content *c,
const css_computed_style *root_style,
dom_node *n)
{
- dom_string *s;
- dom_exception err;
+ dom_string *s = NULL;
css_stylesheet *inline_style = NULL;
css_select_results *styles;
nscss_select_ctx ctx;
/* Firstly, construct inline stylesheet, if any */
- err = dom_element_get_attribute(n, corestring_dom_style, &s);
- if (err != DOM_NO_ERR)
- return NULL;
+ if (nsoption_bool(author_level_css)) {
+ dom_exception err;
+ err = dom_element_get_attribute(n, corestring_dom_style, &s);
+ if (err != DOM_NO_ERR) {
+ return NULL;
+ }
+ }
if (s != NULL) {
inline_style = nscss_create_inline_style(
diff --git a/content/handlers/html/css.c b/content/handlers/html/css.c
index be17ac852..69d54580c 100644
--- a/content/handlers/html/css.c
+++ b/content/handlers/html/css.c
@@ -683,6 +683,11 @@ html_css_new_selection_context(html_content *c, css_select_ctx **ret_select_ctx)
origin = CSS_ORIGIN_USER;
}
+ if (origin == CSS_ORIGIN_AUTHOR &&
+ nsoption_bool(author_level_css) == false) {
+ continue;
+ }
+
if (hsheet->sheet != NULL) {
sheet = nscss_get_stylesheet(hsheet->sheet);
}