<!DOCTYPE html>
<title>
  WebBundle subresource loading for static elements with a base element
</title>
<link
  rel="help"
  href="https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md"
/>
<base href="../resources/wbn/static-element/" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body>
  <script type="webbundle">
    {
      "source": "../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/style-imported-from-tag.css";
    @import "scopes/style-imported-from-tag.css";
  </style>
  <link href="resources/style.css" rel="stylesheet" />
  <link href="scopes/style.css" rel="stylesheet" />
  <script src="resources/script.js"></script>
  <script src="scopes/script.js"></script>
  <script src="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>
