Skip to content

Commit

Permalink
Rollup merge of #123407 - GuillaumeGomez:js-failed-theme, r=notriddle
Browse files Browse the repository at this point in the history
Default to light theme if JS is enabled but not working

It doesn't [fix] #123399 but it allows to reduce the problem:

* if JS is completely disabled, then `noscript.css` will be applied
* if JS failed for any reason, then the light theme will be applied (because `noscript.css` won't be applied)

r? `@notriddle`
  • Loading branch information
jhpratt committed Apr 5, 2024
2 parents fcb0e9d + a815b97 commit ac29872
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 6 deletions.
@@ -1 +1 @@
0.17.0
0.17.1
4 changes: 2 additions & 2 deletions src/librustdoc/html/static/css/noscript.css
Expand Up @@ -34,7 +34,7 @@ nav.sub {
in rustdoc.css */

/* Begin theme: light */
:root {
:root, :root:not([data-theme]) {
--main-background-color: white;
--main-color: black;
--settings-input-color: #2196f3;
Expand Down Expand Up @@ -140,7 +140,7 @@ nav.sub {

@media (prefers-color-scheme: dark) {
/* Begin theme: dark */
:root {
:root, :root:not([data-theme]) {
--main-background-color: #353535;
--main-color: #ddd;
--settings-input-color: #2196f3;
Expand Down
8 changes: 7 additions & 1 deletion src/librustdoc/html/static/css/rustdoc.css
Expand Up @@ -2315,8 +2315,14 @@ in src-script.js and main.js
tooling to ensure different themes all define all the variables. Do not
alter their formatting. */

/*
About `:root:not([data-theme])`: if for any reason the JS is enabled but cannot be loaded,
`noscript` won't be enabled and the doc will have no color applied. To do around this, we
add a selector check that if `data-theme` is not defined, then we apply the light theme
by default.
*/
/* Begin theme: light */
:root[data-theme="light"] {
:root[data-theme="light"], :root:not([data-theme]) {
--main-background-color: white;
--main-color: black;
--settings-input-color: #2196f3;
Expand Down
7 changes: 5 additions & 2 deletions src/tools/tidy/src/rustdoc_css_themes.rs
Expand Up @@ -74,8 +74,11 @@ fn compare_themes<'a>(
(noscript_css_line_number, noscript_css_line),
) in rustdoc_css_lines.zip(noscript_css_lines)
{
if noscript_css_line.starts_with(":root {")
&& rustdoc_css_line.starts_with(&format!(r#":root[data-theme="{name}"] {{"#))
if noscript_css_line.starts_with(":root, :root:not([data-theme]) {")
&& (rustdoc_css_line.starts_with(&format!(r#":root[data-theme="{name}"] {{"#))
|| rustdoc_css_line.starts_with(&format!(
r#":root[data-theme="{name}"], :root:not([data-theme]) {{"#
)))
{
// selectors are different between rustdoc.css and noscript.css
// that's why they both exist: one uses JS, the other uses media queries
Expand Down
14 changes: 14 additions & 0 deletions tests/rustdoc-gui/javascript-disabled.goml
Expand Up @@ -3,4 +3,18 @@
javascript: false

go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"
show-text: true
assert-css: (".sub", {"display": "none"})

// Even though JS is disabled, we should still have themes applied. Links are never black-colored
// if styles are applied so we check that they are not.
assert-css-false: ("a.src", {"color": "#000"})

javascript: true
fail-on-request-error: false
block-network-request: "*.js"
reload:

// JS is enabled but wasn't loaded, we should still have the light theme applied. Links are never
// black-colored if styles are applied so we check that they are not.
assert-css-false: ("a.src", {"color": "#000"})

0 comments on commit ac29872

Please sign in to comment.