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
77 lines
3.0 KiB
HTML
77 lines
3.0 KiB
HTML
<!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>
|