diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2022-07-30 21:32:37 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2022-07-30 21:32:37 +0100 |
commit | d082717ea653b61c36ebf067a12d468abedc8e5f (patch) | |
tree | 30db118a57ce16e784441ed78b366c98c01b65c2 /content/handlers/html | |
parent | 64d90e014b3d95fe3fa37cdad09c37bee3e384d9 (diff) | |
download | netsurf-d082717ea653b61c36ebf067a12d468abedc8e5f.tar.gz netsurf-d082717ea653b61c36ebf067a12d468abedc8e5f.tar.bz2 |
HTML: CSS media spec: Pass in dark mode preference.
Diffstat (limited to 'content/handlers/html')
-rw-r--r-- | content/handlers/html/html.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/content/handlers/html/html.c b/content/handlers/html/html.c index c6a28724c..2b6b1a865 100644 --- a/content/handlers/html/html.c +++ b/content/handlers/html/html.c @@ -458,6 +458,8 @@ html_create_html_data(html_content *c, const http_parameter *params) dom_hubbub_error error; dom_exception err; void *old_node_data; + const char *prefer_color_mode = (nsoption_bool(prefer_dark_mode)) ? + "dark" : "light"; c->parser = NULL; c->parse_completed = false; @@ -505,6 +507,13 @@ html_create_html_data(html_content *c, const http_parameter *params) return NSERROR_NOMEM; } + if (lwc_intern_string(prefer_color_mode, strlen(prefer_color_mode), + &c->media.prefers_color_scheme) != lwc_error_ok) { + lwc_string_unref(c->universal); + c->universal = NULL; + return NSERROR_NOMEM; + } + c->sel = selection_create((struct content *)c); nerror = http_parameter_list_find_item(params, corestring_lwc_charset, &charset); @@ -516,6 +525,8 @@ html_create_html_data(html_content *c, const http_parameter *params) if (c->encoding == NULL) { lwc_string_unref(c->universal); c->universal = NULL; + lwc_string_unref(c->media.prefers_color_scheme); + c->media.prefers_color_scheme = NULL; return NSERROR_NOMEM; } @@ -552,6 +563,8 @@ html_create_html_data(html_content *c, const http_parameter *params) lwc_string_unref(c->universal); c->universal = NULL; + lwc_string_unref(c->media.prefers_color_scheme); + c->media.prefers_color_scheme = NULL; return libdom_hubbub_error_to_nserror(error); } @@ -568,6 +581,8 @@ html_create_html_data(html_content *c, const http_parameter *params) lwc_string_unref(c->universal); c->universal = NULL; + lwc_string_unref(c->media.prefers_color_scheme); + c->media.prefers_color_scheme = NULL; NSLOG(netsurf, INFO, "Unable to set user data."); return NSERROR_DOM; @@ -1274,6 +1289,11 @@ static void html_destroy(struct content *c) html->universal = NULL; } + if (html->media.prefers_color_scheme != NULL) { + lwc_string_unref(html->media.prefers_color_scheme); + html->media.prefers_color_scheme = NULL; + } + /* Free stylesheets */ html_css_free_stylesheets(html); |