| Index: third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/embedding_csp-header.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/embedding_csp-header.html b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/embedding_csp-header.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..424233a3ad8266145166f0d0c9f9094eb32e66bd
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/embedding_csp-header.html
|
| @@ -0,0 +1,78 @@
|
| +<!DOCTYPE html>
|
| +<html>
|
| +<head>
|
| +<title>Embedded Enforcement: Embedding-CSP header.</title>
|
| + <script src="/resources/testharness.js"></script>
|
| + <script src="/resources/testharnessreport.js"></script>
|
| + <script src="support/testharness-helper.sub.js"></script>
|
| +</head>
|
| +<body>
|
| + <script>
|
| + var tests = [
|
| + { "name": "Embedding-CSP is not sent if `csp` attribute is not set on <iframe>.",
|
| + "csp": null,
|
| + "expected": null },
|
| + { "name": "Send Embedding-CSP when `csp` attribute of <iframe> is not empty.",
|
| + "csp": "script-src 'unsafe-inline'",
|
| + "expected": "script-src 'unsafe-inline'" },
|
| + { "name": "Send Embedding-CSP Header on change of `src` attribute on iframe.",
|
| + "csp": "script-src 'unsafe-inline'",
|
| + "expected": "script-src 'unsafe-inline'" },
|
| + { "name": "Wrong value of `csp` should not trigger sending Embedding-CSP Header.",
|
| + "csp": "completely wrong csp",
|
| + "expected": null},
|
| + ];
|
| +
|
| + tests.forEach(test => {
|
| + async_test(t => {
|
| + var url = generateURLString(Host.SAME_ORIGIN, PolicyHeader.EMBEDDING_CSP);
|
| + assert_embedding_csp(t, url, test.csp, test.expected);
|
| + }, "Test same origin: " + test.name);
|
| +
|
| + async_test(t => {
|
| + var url = generateURLString(Host.SAME_ORIGIN, PolicyHeader.EMBEDDING_CSP);
|
| + var redirect_url = generateRedirect(Host.SAME_ORIGIN, url);
|
| + assert_embedding_csp(t, redirect_url, test.csp, test.expected);
|
| + }, "Test same origin redirect: " + test.name);
|
| +
|
| + async_test(t => {
|
| + var url = generateURLString(Host.SAME_ORIGIN, PolicyHeader.EMBEDDING_CSP);
|
| + var redirect_url = generateRedirect(Host.CROSS_ORIGIN, url);
|
| + assert_embedding_csp(t, redirect_url, test.csp, test.expected);
|
| + }, "Test cross origin redirect: " + test.name);
|
| +
|
| + async_test(t => {
|
| + var url = generateURLString(Host.CROSS_ORIGIN, PolicyHeader.EMBEDDING_CSP);
|
| + var redirect_url = generateRedirect(Host.CROSS_ORIGIN, url);
|
| + assert_embedding_csp(t, redirect_url, test.csp, test.expected);
|
| + }, "Test cross origin redirect of cross origin iframe: " + test.name);
|
| +
|
| + async_test(t => {
|
| + var i = document.createElement('iframe');
|
| + if (test.csp)
|
| + i.csp = test.csp;
|
| + i.src = generateURLString(Host.SAME_ORIGIN, PolicyHeader.EMBEDDING_CSP);
|
| + var loaded = false;
|
| +
|
| + window.addEventListener('message', t.step_func(e => {
|
| + if (e.source != i.contentWindow || !('embedding_csp' in e.data))
|
| + return;
|
| + if (!loaded) {
|
| + assert_equals(test.expected, e.data['embedding_csp']);
|
| + loaded = true;
|
| + i.csp = "default-src 'unsafe-inline'";
|
| + i.src = generateURLString(Host.CROSS_ORIGIN, PolicyHeader.EMBEDDING_CSP);
|
| + } else {
|
| + // Once iframe has loaded, check that on change of `src` attribute
|
| + // Embedding-CSP value is based on latest `csp` attribute value.
|
| + assert_equals("default-src 'unsafe-inline'", e.data['embedding_csp']);
|
| + t.done();
|
| + }
|
| + }));
|
| +
|
| + document.body.appendChild(i);
|
| + }, "Test Embedding-CSP value on `csp` change: " + test.name);
|
| + });
|
| + </script>
|
| +</body>
|
| +</html>
|
|
|