Files
sousa-gecko/testing/web-platform/tests/sanitizer-api/sethtml-xml-document.html
T
Daniel Vogelheim 35c7c63651 Bug 2044178 [wpt PR 60322] - [Sanitizer] setHTML + setHTMLUnsafe use HTML fragment parser., a=testonly
Automatic update from web-platform-tests
[Sanitizer] setHTML + setHTMLUnsafe use HTML fragment parser.

setHTML and setHTMLUnsafe should always use HTML syntax.

Also, conservatively always match localname + namespace, but not
prefix. The current implementation uses QualifiedName::operator==
in several places, where QualifedName::Matches (which ignores prefix)
should have been used. Sanitizer API consistently ignores the prefix.

Bug: 518063436
Change-Id: Ifca1067fa1edcc127b861543fbef42d9f62a213b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7890038
Commit-Queue: Daniel Vogelheim <vogelheim@chromium.org>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Reviewed-by: Noam Rosenthal <nrosenthal@google.com>
Cr-Commit-Position: refs/heads/main@{#1639526}

--

wpt-commits: 15dd35afe424c141c46d4fa27cf57b3140756f61
wpt-pr: 60322
2026-06-04 07:41:37 +00:00

54 lines
1.3 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Test that setHTML parses as HTML even in an XML document</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/html5lib-testcase-support.js"></script>
</head>
<body>
<script type="html5lib-tests">
#data
Hello!
#document
| "Hello!"
#data
<br>
#document
| <br>
#data
<p>Hi</p>
#document
| <p>
| "Hi"
#data
<iframe></iframe><p>text</p>
#document
| <p>
| "text"
</script>
<script>
html5lib_testcases_from_script().forEach((testcase, index) => {
test(_ => {
const doc = document.implementation.createDocument("application/xml", "xml");
const context = doc.documentElement;
context.setHTML(testcase.data);
assert_testcase(context, testcase);
}, `Testcase #${index} with xmlDoc.setHTML("${testcase.data}")`);
test(_ => {
const doc = document.implementation.createDocument("application/xml", "xml");
doc.documentElement.appendChild(doc.createElement("div"));
context = doc.documentElement.firstElementChild.attachShadow({mode: "open"});
context.setHTML(testcase.data);
assert_testcase(context, testcase);
}, `Testcase #${index}, shadow inside xmlDoc, shadowroot.setHTML("${testcase.data}")`);
});
</script>
</body>
</html>