<!DOCTYPE html>
<title>Test fenced frame does not allow triggering download</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="resources/utils.js"></script>
<script src="resources/download-helper.js"></script>

<body>
  <script>
    const testTypes = [
      {
        type: "anchor",
        description: "Anchor click triggering download in fenced frames is blocked."
      },
      {
        type: "navigation",
        description: "Navigation resulted download in fenced frames is blocked."
      }
    ];

    testTypes.forEach(({type, description}) => {
      promise_test(async t => {
        const download_key = token();
        const download_ack_key = token();

        // The download link is clicked inside the fenced frame after the loading
        const fenced_frame_url = generateURL("resources/download-inner.html", [download_key, download_ack_key]) + `&type=${type}`;
        attachFencedFrame(fenced_frame_url);

        const response = await nextValueFromServer(download_ack_key);
        assert_equals(response, 'Triggered the action for download');

        const result = await VerifyDownload(t, download_key);
        assert_false(result, 'Expect no download to happen');
      }, description);
    });
  </script>
</body>
