summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html')
-rw-r--r--testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html71
1 files changed, 71 insertions, 0 deletions
diff --git a/testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html b/testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html
new file mode 100644
index 0000000000..25b4440ef4
--- /dev/null
+++ b/testing/web-platform/tests/trusted-types/require-trusted-types-for-report-only.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<head>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<script>
+
+ function promise_violation(filter_arg) {
+ return _ => new Promise((resolve, reject) => {
+ function handler(e) {
+ let matches = (filter_arg instanceof Function)
+ ? filter_arg(e)
+ : (e.originalPolicy.includes(filter_arg));
+ if (matches) {
+ document.removeEventListener("securitypolicyviolation", handler);
+ e.stopPropagation();
+ resolve(e);
+ }
+ }
+
+ document.addEventListener("securitypolicyviolation", handler);
+ });
+ }
+
+ promise_test(t => {
+ let p = Promise.resolve()
+ .then(promise_violation("require-trusted-types-for 'script'"));
+
+ d = document.createElement("div");
+ d.innerHTML = "a";
+ assert_equals("a", d.innerHTML);
+ return p;
+ }, "Require trusted types for 'script' block create HTML.");
+
+ promise_test(t => {
+ let p = Promise.resolve()
+ .then(promise_violation("require-trusted-types-for 'script'"));
+
+ d = document.createElement("script");
+ d.innerText = "a";
+ assert_equals("a", d.innerText);
+ return p;
+ }, "Require trusted types for 'script' block create script.");
+
+ promise_test(t => {
+ let p = Promise.resolve()
+ .then(promise_violation("require-trusted-types-for 'script'"));
+
+ s = document.createElement("script");
+ s.src = "a";
+ assert_true(s.src.includes("/trusted-types/a"));
+ return p;
+ }, "Require trusted types for 'script' block create script URL.");
+
+ promise_test(t => {
+ return new Promise(resolve => {
+ p = trustedTypes.createPolicy("policyA", {createScript: s => s+1});
+ p1 = trustedTypes.createPolicy("policyA", {createHTML: _ => ""});
+ p2 = trustedTypes.createPolicy("default", {});
+ script = p.createScript("1");
+ assert_equals(script.toString(), "11");
+ s = document.createElement("script");
+ s.innerText = script;
+ assert_equals(script.toString(), s.innerText.toString());
+ s.innerText = "1";
+ assert_equals("1", s.innerText);
+ resolve();
+ });
+ }, "Set require trusted types for 'script' without CSP for trusted types don't block policy creation and using.");
+</script> \ No newline at end of file