<!DOCTYPE html>
<meta http-equiv="Content-Security-Policy" content="fenced-frame-src 'none'">
<title>Test Content-Security-Policy fenced-frame-src</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/utils.js"></script>
<script src="/common/utils.js"></script>

<body>
<script>
const key = token();

window.addEventListener('securitypolicyviolation', function(e) {
  // Write to the server even though the listener is in the same file in the
  // test below.
  writeValueToServer(key, e.violatedDirective + ";" + e.blockedURI);
});

promise_test(async () => {
  attachFencedFrame(generateURL(
      "resources/csp-fenced-frame-src-blocked-inner.html",
      [key]));
  const result = await nextValueFromServer(key);

  const expected_blocked_uri = generateURL(
      "resources/csp-fenced-frame-src-blocked-inner.html",
      [key]).toString();
  assert_equals(result, "fenced-frame-src;" + expected_blocked_uri,
                "The fenced frame is blocked because of CSP violation");
}, "csp-fenced-frame-src-blocked");

promise_test(async () => {
  assert_false(navigator.canLoadAdAuctionFencedFrame());
}, "fenced-frame-src none is taken into account with " +
   "navigator.canLoadAdAuctionFencedFrame");
</script>
</body>
