commit 72a9493f80b3aaa209b8fbc1f70133ffc1771561
parent 5caa640925516bff1f75dcc33d24b20cd9e5f5c7
Author: Helmut Januschka <helmut@januschka.com>
Date: Wed, 26 Nov 2025 08:54:06 +0000
Bug 2001933 [wpt PR 56217] - Fix styleSheets access for DOMParser-created documents, a=testonly
Automatic update from web-platform-tests
Fix styleSheets access for DOMParser-created documents
Remove document IsActive() check in StyleSheetsForStyleSheetList()
so that documents created via DOMParser have accessible styleSheets
collections.
- https://drafts.csswg.org/cssom/#dom-document-stylesheets
- HTML: https://html.spec.whatwg.org/multipage/semantics.html#update-a-style-block
Bug: 1310198
Change-Id: I128fdd4398633c94a79bfdc9cbe0a818280c2d9f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7181280
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Commit-Queue: Helmut Januschka <helmut@januschka.com>
Cr-Commit-Position: refs/heads/main@{#1549070}
--
wpt-commits: 06822d3e953e9697f2faae74729906380b79bd10
wpt-pr: 56217
Diffstat:
1 file changed, 76 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/domparsing/DOMParser-parseFromString-stylesheets.html b/testing/web-platform/tests/domparsing/DOMParser-parseFromString-stylesheets.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>DOMParser: parseFromString() with stylesheets</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring">
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-document-stylesheets">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+"use strict";
+
+test(() => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString("<style>div { color: green; }</style>", "text/html");
+
+ assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
+}, "DOMParser-created document should have accessible styleSheets collection with one style element");
+
+test(() => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString("<style>div { color: green; }</style>", "text/html");
+
+ assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
+ const sheet = doc.styleSheets[0];
+ assert_true(sheet instanceof CSSStyleSheet, "styleSheets[0] should be a CSSStyleSheet");
+}, "DOMParser-created document styleSheets should contain CSSStyleSheet objects");
+
+test(() => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString("<style>div { color: green; } p { color: red; }</style>", "text/html");
+
+ assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
+ const sheet = doc.styleSheets[0];
+ assert_equals(sheet.cssRules.length, 2, "Stylesheet should have two CSS rules");
+}, "DOMParser-created document styleSheets should have accessible cssRules");
+
+test(() => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(
+ "<style>div { color: green; }</style><style>p { color: red; }</style>",
+ "text/html"
+ );
+
+ assert_equals(doc.styleSheets.length, 2, "Document should have two stylesheets");
+}, "DOMParser-created document should expose multiple style elements in styleSheets");
+
+test(() => {
+ const parser = new DOMParser();
+ const html = `
+ <!DOCTYPE html>
+ <html>
+ <head>
+ <style>
+ .test { color: blue; }
+ </style>
+ </head>
+ <body>
+ <div class="test">Hello</div>
+ </body>
+ </html>
+ `;
+ const doc = parser.parseFromString(html, "text/html");
+
+ assert_equals(doc.styleSheets.length, 1, "Document should have one stylesheet");
+ const sheet = doc.styleSheets[0];
+ assert_equals(sheet.cssRules.length, 1, "Stylesheet should have one CSS rule");
+ assert_equals(sheet.cssRules[0].selectorText, ".test", "CSS rule should have correct selector");
+}, "DOMParser-created document with full HTML structure should have accessible styleSheets");
+
+test(() => {
+ const parser = new DOMParser();
+ const doc = parser.parseFromString("<div>No styles</div>", "text/html");
+
+ assert_equals(doc.styleSheets.length, 0, "Document without style elements should have empty styleSheets");
+}, "DOMParser-created document without style elements should have empty styleSheets collection");
+
+</script>