<!DOCTYPE html>
<html>
<head>
<title>Embedded Enforcement: Subsumption Algorithm - 'unsafe-eval' 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": "'unsafe-eval' is properly subsumed.", 
        "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-hashed-attributes' 'strict-dynamic' 'unsafe-eval'", 
        "returned_csp_1": "style-src http://example1.com/foo/bar.html 'unsafe-eval'",
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "No other keyword has the same effect as 'unsafe-eval'.", 
        "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-eval'", 
        "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-inline'",
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Other expressions have to be subsumed.", 
        "required_csp": "style-src http://example1.com/foo/ 'self' 'unsafe-eval'", 
        "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-inline' 'unsafe-eval'",
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Effective policy is properly found.", 
        "required_csp": "style-src http://example1.com/foo/ 'self'  'unsafe-eval'", 
        "returned_csp_1": "style-src http://example1.com/foo/ 'unsafe-hashed-attributes' 'unsafe-eval'",
        "returned_csp_2": "style-src http://example1.com/foo/ 'self' 'unsafe-eval'",
        "expected": IframeLoad.EXPECT_LOAD },
      { "name": "Required csp must allow 'unsafe-eval'.", 
        "required_csp": "style-src http://example1.com/foo/ 'self'", 
        "returned_csp_1": "style-src http://example1.com/foo/ 'self'  'unsafe-eval'",
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Effective policy is properly found where 'unsafe-eval' is not subsumed.", 
        "required_csp": "style-src http://example1.com/foo/ 'self'", 
        "returned_csp_1": "style-src 'unsafe-hashed-attributes' 'unsafe-eval'",
        "returned_csp_2": "style-src 'unsafe-eval' 'unsafe-inline'",
        "expected": IframeLoad.EXPECT_BLOCK },
      { "name": "Effective policy is properly found where 'unsafe-eval' is not part of it.", 
        "required_csp": "style-src http://example1.com/foo/ 'self'", 
        "returned_csp_1": "style-src 'unsafe-hashed-attributes' 'self'",
        "returned_csp_2": "style-src 'unsafe-eval' 'self'",
        "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>
