From f94472fc31b7e7eb19a07aef66999a6fb2310f11 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Fri, 27 Jun 2025 22:18:50 +0200 Subject: [PATCH 1/2] Render-blocking dark-theme initialization for dartdoc pages. --- app/lib/dartdoc/dartdoc_page.dart | 3 +++ app/test/dartdoc/dartdoc_page_test.dart | 8 ++++++++ .../goldens/documentation/oxygen/1.0.0/index.html | 1 + .../oxygen/1.0.0/oxygen/MainClass-class.html | 1 + .../oxygen/1.0.0/oxygen/MainClass/MainClass.html | 1 + .../documentation/oxygen/1.0.0/oxygen/MainClass/text.html | 1 + .../oxygen/1.0.0/oxygen/MainClass/toLowerCase.html | 1 + .../oxygen/1.0.0/oxygen/MainClass/toString.html | 1 + .../documentation/oxygen/1.0.0/oxygen/TypeEnum.html | 1 + .../oxygen/1.0.0/oxygen/TypeEnum/values-constant.html | 1 + .../goldens/documentation/oxygen/1.0.0/oxygen/index.html | 1 + .../goldens/documentation/oxygen/1.0.0/oxygen/main.html | 1 + .../goldens/documentation/oxygen/2.0.0/index.html | 1 + .../oxygen/2.0.0/oxygen/MainClass-class.html | 1 + .../oxygen/2.0.0/oxygen/MainClass/MainClass.html | 1 + .../documentation/oxygen/2.0.0/oxygen/MainClass/text.html | 1 + .../oxygen/2.0.0/oxygen/MainClass/toLowerCase.html | 1 + .../oxygen/2.0.0/oxygen/MainClass/toString.html | 1 + .../documentation/oxygen/2.0.0/oxygen/TypeEnum.html | 1 + .../oxygen/2.0.0/oxygen/TypeEnum/values-constant.html | 1 + .../goldens/documentation/oxygen/2.0.0/oxygen/index.html | 1 + .../goldens/documentation/oxygen/2.0.0/oxygen/main.html | 1 + .../goldens/documentation/oxygen/latest/index.html | 1 + .../oxygen/latest/oxygen/MainClass-class.html | 1 + .../oxygen/latest/oxygen/MainClass/MainClass.html | 1 + .../oxygen/latest/oxygen/MainClass/text.html | 1 + .../oxygen/latest/oxygen/MainClass/toLowerCase.html | 1 + .../oxygen/latest/oxygen/MainClass/toString.html | 1 + .../documentation/oxygen/latest/oxygen/TypeEnum.html | 1 + .../oxygen/latest/oxygen/TypeEnum/values-constant.html | 1 + .../goldens/documentation/oxygen/latest/oxygen/index.html | 1 + .../goldens/documentation/oxygen/latest/oxygen/main.html | 1 + static/js/dark-init.js | 7 +++++++ 33 files changed, 48 insertions(+) diff --git a/app/lib/dartdoc/dartdoc_page.dart b/app/lib/dartdoc/dartdoc_page.dart index c71c3a969a..0f368bd136 100644 --- a/app/lib/dartdoc/dartdoc_page.dart +++ b/app/lib/dartdoc/dartdoc_page.dart @@ -301,6 +301,9 @@ extension DartDocPageRender on DartDocPage { 'width': '0', 'style': 'display:none;visibility:hidden', })), + // NOTE: dartdoc's own initialization will still run, but it is not in conflict + // with the current script. + d.script(src: staticUrls.getAssetUrl('/static/js/dark-init.js')), d.div(id: 'overlay-under-drawer'), _renderHeader(options), _renderMain(options), diff --git a/app/test/dartdoc/dartdoc_page_test.dart b/app/test/dartdoc/dartdoc_page_test.dart index 3cd7a479b8..acd96acf2c 100644 --- a/app/test/dartdoc/dartdoc_page_test.dart +++ b/app/test/dartdoc/dartdoc_page_test.dart @@ -185,6 +185,14 @@ void main() { contains('https://www.googletagmanager.com/')); firstNoScript.remove(); + // removing extra dark-theme initializer script + renderedXmlDoc.descendantElements + .where((e) => + e.localName == 'script' && + e.getAttribute('src')!.endsWith('/dark-init.js')) + .single + .remove(); + // removing extra logo final firstLogo = renderedXmlDoc.descendantElements.firstWhere( (e) => diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/index.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/index.html index ac3b4e57b3..32a68344b2 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/index.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/index.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html index 499e2fd26c..049a6b70dc 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html index 35c6fed2e2..4d35453300 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html index a02737f389..bdb019dcd1 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html index fbcaad0792..5ead0e1865 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html index 3fe33226e9..f1680326e8 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html index 7ec3db5fdb..2a1e9be63f 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html index 281228f159..4eb7017e74 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/index.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/index.html index f7a583c533..aed70fdd21 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/index.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/index.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/main.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/main.html index 68814ce10b..4b7e9ef39b 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/main.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/main.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/index.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/index.html index 25865f54b7..6630b44b9f 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/index.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/index.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html index 7102a6af6f..8044e97d87 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html index 5904c9e7f9..d73627dc00 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html index f0f20e4f3f..1ca86f987e 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html index 98df85771b..ebe95df9cd 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html index f2f6d956ed..00e1f55bce 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html index e19102f133..dbca4887bd 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html index 73f5a36e4e..5cc1502c83 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/index.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/index.html index e2c2ff4c93..63aaad8b84 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/index.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/index.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/main.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/main.html index 7cd1ed4fb7..ee1d89f0f4 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/main.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/main.html @@ -20,6 +20,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/index.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/index.html index 3339bcd2ff..d97ebfdd54 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/index.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/index.html @@ -18,6 +18,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html index c712d7245b..8fde1a8aa0 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html @@ -18,6 +18,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html index e2b35bdfe1..373946548e 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html @@ -19,6 +19,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html index 6041aa7162..ffe03e38d3 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html @@ -19,6 +19,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html index 866e1c7066..0029aac77c 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html @@ -19,6 +19,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html index 53dd9a2307..baa98eac72 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html @@ -19,6 +19,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html index b5882f3db4..f6d1379877 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html @@ -18,6 +18,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html index 43fd8cb897..a62f5f8db4 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html @@ -19,6 +19,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/index.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/index.html index 930c0a020c..792b3ab2e2 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/index.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/index.html @@ -18,6 +18,7 @@ +
menu diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/main.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/main.html index 8614b54e6d..d0ddce7815 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/main.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/main.html @@ -18,6 +18,7 @@ +
menu diff --git a/static/js/dark-init.js b/static/js/dark-init.js index d85627eea4..646d1e4d91 100644 --- a/static/js/dark-init.js +++ b/static/js/dark-init.js @@ -14,6 +14,13 @@ // ignore errors e.g. when media query matching is not supported } + // NOTE: dartdoc currently does not support externally supported color scheme, + // and we disable that part for the affected URLs. + // TODO: remove this part when dartdoc supports the above detection too + if (window.location.pathname.startsWith('/documentation/')) { + mediaPrefersDarkScheme = false; + } + // Detects whether the control widget was set to use a specific theme let colorTheme = window.localStorage.getItem('colorTheme'); let lightThemeIsSet = colorTheme == 'false'; From 68cedd13c9e46c566265526831e741958da2b5cc Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Tue, 1 Jul 2025 17:25:10 +0200 Subject: [PATCH 2/2] Remove special case for documentation and color-scheme preference. --- static/js/dark-init.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/static/js/dark-init.js b/static/js/dark-init.js index 646d1e4d91..d85627eea4 100644 --- a/static/js/dark-init.js +++ b/static/js/dark-init.js @@ -14,13 +14,6 @@ // ignore errors e.g. when media query matching is not supported } - // NOTE: dartdoc currently does not support externally supported color scheme, - // and we disable that part for the affected URLs. - // TODO: remove this part when dartdoc supports the above detection too - if (window.location.pathname.startsWith('/documentation/')) { - mediaPrefersDarkScheme = false; - } - // Detects whether the control widget was set to use a specific theme let colorTheme = window.localStorage.getItem('colorTheme'); let lightThemeIsSet = colorTheme == 'false';