<!DOCTYPE html>
  <title>Test Content Security Policy</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>
      promise_test(async () => {
        const csp_key = token();

        // The 'csp' property does not appear in the IDL definition for
        // fenced frames, so ensure that the 'csp' property didn't
        // leak over from the IFrame prototype.
        assert_equals(HTMLFencedFrameElement.prototype.hasOwnProperty('csp'),
                      false);

        const new_frame = document.createElement('fencedframe');
        const new_config = new FencedFrameConfig(generateURL(
            "resources/csp-inner.html",
            [csp_key]));
        new_frame.config = new_config;

        // This attribute will be ignored since the IDL for
        // fenced frames do not support the 'csp' attribute.
        new_frame.setAttribute("csp", "style-src 'none';");
        document.body.append(new_frame);

        // Get the result for the top-level fenced frame.
        const fenced_frame_result = await nextValueFromServer(csp_key);
        assert_equals(fenced_frame_result, "pass");

      }, "Fenced Frames should not honor the csp attribute from parent page");
    </script>

  </body>
</html>
