<!DOCTYPE html>
<title>
  Request's destination must be "webbundle" with the script-based API
</title>
<link
  rel="help"
  href="https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md"
/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/test-helpers.js"></script>
<body>
  <script>
    setup(() => {
      assert_true(HTMLScriptElement.supports("webbundle"));
    });

    // check-sec-fetch-dest-header-and-return-bundle.py returns a valid format
    // bundle only if a 'Sec-Fetch-Dest: webbundle' header is present in a request.
    // Otherwise, returns an empty body with 400 status code.
    //
    // In this wpt, we assume that a <link> element fires a load event correctly if
    // a valid format webbundle is returned.

    const same_origin_bundle =
      "../resources/check-sec-fetch-dest-header-and-return-bundle.py";
    const cross_origin_bundle =
      "https://{{domains[www1]}}:{{ports[https][0]}}/web-bundle/resources/check-sec-fetch-dest-header-and-return-bundle.py";

    promise_test(async () => {
      for (const bundle of [same_origin_bundle, cross_origin_bundle]) {
        const element = createWebBundleElement(bundle, /*resources=*/ []);
        await addElementAndWaitForLoad(element);
        element.remove();
      }
    }, '"Sec-Fetch-Dest: webbundle" header must be present in a request for a bundle' + " with the <link>-based API.");

    promise_test(async () => {
      const res = await fetch(same_origin_bundle);
      assert_false(res.ok);
    }, '"Sec-Fetch-Dest: webbundle" header must not be present in a fetch request' + " for a same-origin resource.");

    promise_test(async () => {
      const res = await fetch(cross_origin_bundle);
      assert_false(res.ok);
    }, '"Sec-Fetch-Dest: webbundle" header must not be present in a fetch request' + " for a cross-origin resource.");
  </script>
</body>
