diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2023-11-25 20:02:23 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2023-11-25 20:02:23 +0000 |
commit | 4cb38c4704e4ed11cf10fc046b32ef6ef5afa78f (patch) | |
tree | 2815b0f576b192a9bd84d386b6f4c0e0cee38197 /content/handlers | |
parent | 41de6cb6f8ee73a712e305f8c1b6d34090a24523 (diff) | |
download | netsurf-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.c | 4 | ||||
-rw-r--r-- | content/handlers/html/box_construct.c | 13 | ||||
-rw-r--r-- | content/handlers/html/css.c | 5 |
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); } |