<!DOCTYPE html>
<title>WebBundle subresource loading for static elements</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>
<body>
  <script type="webbundle">
    {
      "source": "../resources/wbn/static-element.wbn",
      "resources": [
        "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/static-element/resources/script.js",
        "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/static-element/resources/style.css",
        "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/static-element/resources/style-imported-from-file.css",
        "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/static-element/resources/style-imported-from-tag.css"
      ],
      "scopes": [
        "https://{{domains[]}}:{{ports[https][0]}}/web-bundle/resources/wbn/static-element/scopes/"
      ]
    }
  </script>
  <style type="text/css">
    @import "../resources/wbn/static-element/resources/style-imported-from-tag.css";
    @import "../resources/wbn/static-element/scopes/style-imported-from-tag.css";
  </style>
  <link
    href="../resources/wbn/static-element/resources/style.css"
    rel="stylesheet"
  />
  <link
    href="../resources/wbn/static-element/scopes/style.css"
    rel="stylesheet"
  />
  <script src="../resources/wbn/static-element/resources/script.js"></script>
  <script src="../resources/wbn/static-element/scopes/script.js"></script>
  <script src="../resources/wbn/static-element/out-of-scope/script.js"></script>

  <script>
    setup(() => {
      assert_true(HTMLScriptElement.supports("webbundle"));
    });

    promise_test(async () => {
      assert_equals(resources_script_result, "loaded from webbundle");
      assert_equals(scopes_script_result, "loaded from webbundle");
      assert_equals(out_of_scope_script_result, "loaded from network");

      ["resources_", "scopes_"].forEach((type) => {
        [
          "style_target",
          "style_imported_from_file_target",
          "style_imported_from_tag_target",
        ].forEach((target) => {
          const element = document.createElement("div");
          element.id = type + target;
          document.body.appendChild(element);
          assert_equals(
            window.getComputedStyle(element).color,
            "rgb(0, 0, 255)",
            element.id + " color must be blue"
          );
        });
      });
    }, "Subresources from static elements should be loaded from web bundle.");
  </script>
</body>
