<!DOCTYPE html>
<html>
<head>
<title>Embedded Enforcement: Subsumption Algorithm - 'none' keyword.</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": "Empty required csp subsumes empty list of returned policies.", 
        "required_csp": "", 
        "returned_csp_1": "",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Empty required csp subsumes any list of policies.", 
        "required_csp": "", 
        "returned_csp_1": "img-src http://example.com",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Empty required csp subsumes a policy with `none`.", 
        "required_csp": "", 
        "returned_csp_1": "img-src 'none'",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Required policy that allows `none` does not subsume empty list of policies.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Required csp with effective `none` does not subsume a host source expression.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "img-src http://example.com",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Required csp with `none` does not subsume a host source expression.", 
        "required_csp": "img-src 'none'", 
        "returned_csp_1": "img-src http://example.com",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Required csp with effective `none` does not subsume `none` of another directive.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "frame-src 'none'",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Required csp with `none` does not subsume `none` of another directive.", 
        "required_csp": "img-src 'none'", 
        "returned_csp_1": "frame-src 'none'",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Required csp with `none` does not subsume `none` of different directives.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "img-src http://*.one.com",
        "returned_csp_2": "frame-src https://two.com",
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Required csp with `none` subsumes effective list of `none`.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "img-src http://*.one.com",
        "returned_csp_2": "img-src https://two.com",
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Required csp with `none` subsumes effective list of `none` despite other keywords.", 
        "required_csp": "img-src 'none'", 
        "returned_csp_1": "img-src http://*.one.com",
        "returned_csp_2": "img-src 'self'",
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Source list with exprssions other than `none` make `none` ineffective.", 
        "required_csp": "img-src http://example.com 'none'", 
        "returned_csp_1": "img-src http://example.com",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Returned csp with `none` is subsumed by any required csp.", 
        "required_csp": "img-src http://example.com", 
        "returned_csp_1": "img-src 'none'",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Returned csp with effective `none` is subsumed by any required csp.", 
        "required_csp": "img-src http://example.com", 
        "returned_csp_1": "img-src http://example.com",
        "returned_csp_2": "img-src http://non-example.com",
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Both required and returned csp are `none`.", 
        "required_csp": "img-src 'none'", 
        "returned_csp_1": "img-src 'none'",
        "returned_csp_2": "img-src http://non-example.com",
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Both required and returned csp are `none` for only one directive.", 
        "required_csp": "default-src 'none'", 
        "returned_csp_1": "img-src 'none'",
        "returned_csp_2": "script-src 'unsafe-inline'",
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Both required and returned csp are empty.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "img-src ",
        "returned_csp_2": null,
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Both required and returned csp are effectively 'none'.", 
        "required_csp": "img-src ", 
        "returned_csp_1": "img-src http://a.com",
        "returned_csp_2": "img-src http://b.com",
        "expected": IframeLoad.EXPECT_LOAD },
    ];
    tests.forEach(test => {
      async_test(t =>  {
        var url = generateUrlWithPolicies(Host.CROSS_ORIGIN, test.returned_csp_1);
        if (test.returned_csp_2)
          url.searchParams.append("policy2", test.returned_csp_2);
        assert_iframe_with_csp(t, url, test.required_csp, test.expected, test.name, null);
      }, test.name);
    });
  </script>
</body>
</html>