Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /trusted-types/block-string-assignment-to-HTMLIFrameElement-srcdoc.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
<meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
<body>
<script>
// TrustedHTML assignments do not throw.
test(t => {
let p = createHTML_policy(window, 1);
let html = p.createHTML(INPUTS.HTML);
let iframe = document.createElement("iframe");
iframe.srcdoc = html;
assert_equals(iframe.srcdoc, RESULTS.HTML);
}, "iframe.srcdoc assigned via policy (successful HTML transformation).");
// String assignments throw.
test(t => {
let iframe = document.createElement("iframe");
assert_throws_js(TypeError, _ => {
iframe.srcdoc = "A string";
});
}, "`iframe.srcdoc = string` throws.");
// Null assignment throws.
test(t => {
let iframe = document.createElement("iframe");
assert_throws_js(TypeError, _ => {
iframe.srcdoc = null;
});
}, "`iframe.srcdoc = null` throws.");
// After default policy creation string assignment implicitly calls createHTML
test(t => {
let p = window.trustedTypes.createPolicy("default", { createHTML:
(value, _, sink) => {
assert_equals(sink, "HTMLIFrameElement srcdoc");
return createHTMLJS(value);
}
});
let iframe = document.createElement("iframe");
iframe.srcdoc = INPUTS.HTML;
assert_equals(iframe.srcdoc, RESULTS.HTML);
}, "`iframe.srcdoc = string` assigned via default policy (successful HTML transformation).");
// After default policy creation null assignment implicitly calls createHTML.
test(t => {
let iframe = document.createElement("iframe");
iframe.srcdoc = null;
assert_equals(iframe.srcdoc, "null");
}, "`iframe.srcdoc = null` assigned via default policy does not throw");
</script>