LibWeb: Don't construct stylesheet when modifying CSSStyleSheet rules

Previously, `CSSStyleSheet.replace()` and `CSSStyleSheet.replaceSync()`
parsed the given CSS text into a temporary stylesheet object, from
which a list of rules was extracted. Doing this had the unintended
side-effect that a fetch request would be started if the given CSS text
referenced any external resources. This fetch request would cause a
crash, since the temporary stylesheet object didn't set the constructed
flag, or constructor document. We now parse the given CSS text as a
list of rules without constructing a temporary stylesheet.
This commit is contained in:
Tim Ledbetter
2025-04-15 18:01:54 +01:00
committed by Sam Atkins
parent 955f6fc9cb
commit ca200142e9
Notes: github-actions[bot] 2025-04-16 21:04:15 +00:00
5 changed files with 95 additions and 6 deletions

View File

@@ -0,0 +1,8 @@
Harness status: OK
Found 3 tests
3 Pass
Pass Constructing sheet with custom base URL ueses that URL for CSS rules
Pass Constructing sheet with relative URL adds to the constructor document's base URL
Pass Constructing sheet with invalid base URL throws a NotAllowedError