| Index: third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/allow_csp_from-header.html
 | 
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/allow_csp_from-header.html b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/allow_csp_from-header.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..a806caf456ff894ec14000ab7e0ae9c2a15e3382
 | 
| --- /dev/null
 | 
| +++ b/third_party/WebKit/LayoutTests/external/wpt/content-security-policy/embedded-enforcement/allow_csp_from-header.html
 | 
| @@ -0,0 +1,88 @@
 | 
| +<!DOCTYPE html>
 | 
| +<html>
 | 
| +<head>
 | 
| +<title>Embedded Enforcement: Allow-CSP-From 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": "Same origin iframes are always allowed.", 
 | 
| +        "origin": Host.SAME_ORIGIN,
 | 
| +        "csp": "style-src 'unsafe-inline'; script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": "¢¥§",
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Same origin iframes are allowed even if the Allow-CSP-From is empty.", 
 | 
| +        "origin": Host.SAME_ORIGIN,
 | 
| +        "csp": "style-src 'unsafe-inline'; script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": "",
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Same origin iframes are allowed even if the Allow-CSP-From is not present.", 
 | 
| +        "origin": Host.SAME_ORIGIN,
 | 
| +        "csp": "style-src 'unsafe-inline'; script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": null,
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Same origin iframes are allowed even if Allow-CSP-From does not match origin.", 
 | 
| +        "origin": Host.SAME_ORIGIN,
 | 
| +        "csp": "style-src 'unsafe-inline'; script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": "http://example.com:888",
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Cross origin iframe with an empty Allow-CSP-From header gets blocked.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": "",
 | 
| +        "expected": IframeLoad.EXPECT_BLOCK,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Cross origin iframe without Allow-CSP-From header gets blocked.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": null,
 | 
| +        "expected": IframeLoad.EXPECT_BLOCK,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "iframe from cross origin does not load without Allow-CSP-From header.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "style-src 'unsafe-inline'; script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": getOrigin(),
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Iframe with improper Allow-CSP-From header gets blocked.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": "* ¢¥§",
 | 
| +        "expected": IframeLoad.EXPECT_BLOCK,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Allow-CSP-From header with a star value can be returned.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "script-src 'unsafe-inline'", 
 | 
| +        "allow_csp_from": "*",
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": null},
 | 
| +      { "name": "Star Allow-CSP-From header enforces EmbeddingCSP.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "script-src 'nonce-123'", 
 | 
| +        "allow_csp_from": "*",
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": "inline"},
 | 
| +      { "name": "Allow-CSP-From header enforces EmbeddingCSP.", 
 | 
| +        "origin": Host.CROSS_ORIGIN,
 | 
| +        "csp": "style-src 'none'; script-src 'nonce-123'", 
 | 
| +        "allow_csp_from": getOrigin(),
 | 
| +        "expected": IframeLoad.EXPECT_LOAD,
 | 
| +        "blockedURI": "inline"},
 | 
| +    ];
 | 
| +
 | 
| +    tests.forEach(test => {
 | 
| +      async_test(t =>  {
 | 
| +        var url = generateUrlWithAllowCSPFrom(test.origin, test.allow_csp_from);
 | 
| +        assert_iframe_with_csp(t, url, test.csp, test.expected, test.name, test.blockedURI);
 | 
| +      }, test.name);
 | 
| +    });
 | 
| +  </script>
 | 
| +</body>
 | 
| +</html>
 | 
| 
 |