Skip to content

Commit

Permalink
Add TrustedType tests for iframe.srcdoc.
Browse files Browse the repository at this point in the history
It seems we already have some tests for iframe.srcdoc but things are
a bit messy so it's unclear whether we cover blocking, conversion
check and sink names (#494) and null string edge case. Add a simple
test doing that, similar to other `block-string-assignment-to-*`
tests.
  • Loading branch information
fred-wang committed Jan 9, 2025
1 parent e79ed20 commit d248989
Showing 1 changed file with 55 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<!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(result.textContent, RESULTS.HTML);
}, "iframe.srcdoc assigned via policy (successful HTML transformation).");

// String assignments throw.
test(t => {
let iframe = document.createElement("iframe");
iframe.srcdoc = createHTML_policy(window, 1);
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, "iframe 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(container.innerText, "null");
}, "`iframe.srcdoc = null` assigned via default policy does not throw");
</script>

0 comments on commit d248989

Please sign in to comment.