<!DOCTYPE html>
<title>WebBundle subresource loading with script API and invalid JSON</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>
    setup(
      () => {
        assert_true(HTMLScriptElement.supports("webbundle"));
      },
      { allow_uncaught_exception: true }
    );
    promise_test((t) => {
      const script = document.createElement("script");
      script.type = "webbundle";
      const json_rule = { resources: [] };
      script.textContent = JSON.stringify(json_rule);
      return new Promise((resolve, reject) => {
        script.onload = () => reject(script);
        script.onerror = () => reject(script);
        window.onerror = function (message, url, line, col, error) {
          assert_equals(
            message,
            "Uncaught SyntaxError: Failed to parse web bundle: invalid JSON"
          );
          assert_equals(error.name, "SyntaxError");
          resolve(script);
        };
        document.body.appendChild(script);
      });
    }, "Invalid JSON rule should make the script loader report an exception and throw error on the window.");
  </script>
</body>
