From 4cb38c4704e4ed11cf10fc046b32ef6ef5afa78f Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 25 Nov 2023 20:02:23 +0000 Subject: 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 --- content/handlers/html/box_construct.c | 13 ++++++++----- content/handlers/html/css.c | 5 +++++ 2 files changed, 13 insertions(+), 5 deletions(-) (limited to 'content/handlers/html') 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); } -- cgit v1.2.3