<!DOCTYPE html>
<title>CSP for subresource WebBundle (allowed cases)</title>
<link
  rel="help"
  href="https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md"
/>
<meta
  http-equiv="Content-Security-Policy"
  content="
    script-src
      https://web-platform.test:8444/web-bundle/resources/wbn/uuid-in-package.wbn
      https://web-platform.test:8444/resources/testharness.js
      https://web-platform.test:8444/resources/testharnessreport.js
      'unsafe-inline';
    img-src
      https://web-platform.test:8444/web-bundle/resources/wbn/pass.png"
/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
  <script type="webbundle">
    {
      "source": "../resources/wbn/subresource.wbn",
      "resources": ["https://web-platform.test:8444/web-bundle/resources/wbn/pass.png"]
    }
  </script>
  <script type="webbundle">
    {
      "source": "../resources/wbn/uuid-in-package.wbn",
      "resources": ["uuid-in-package:020111b3-437a-4c5c-ae07-adb6bbffb720"
      ]
    }
  </script>
  <script>
    promise_test(() => {
      return new Promise((resolve, reject) => {
        const img = document.createElement("img");
        img.src =
          "https://web-platform.test:8444/web-bundle/resources/wbn/pass.png";
        img.onload = resolve;
        img.onerror = reject;
        document.body.appendChild(img);
      });
    }, "URL matching of CSP should be done based on the subresource URL " +
       "when the subresource URL is HTTPS URL.");

    promise_test(async () => {
      const result = await new Promise((resolve) => {
        // This function will be called from the script.
        window.report_result = resolve;
        const script = document.createElement("script");
        script.src = "uuid-in-package:020111b3-437a-4c5c-ae07-adb6bbffb720";
        document.body.appendChild(script);
      });
      assert_equals(result, "OK");
    }, "URL matching of script-src CSP should be done based on the bundle URL " +
       "when the subresource URL is uuid-in-package: URL.");

  </script>
</body>
