tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Atesting/web-platform/tests/domparsing/DOMParser-parseFromString-stylesheets.html | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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>