| <!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"; | |
| script.textContent = "invalid json"; | |
| return new Promise((resolve, reject) => { | |
| script.onload = () => reject(script); | |
| script.onerror = () => reject(script); | |
| window.onerror = function (message, url, line, col, error) { | |
| assert_equals(error.name, "SyntaxError"); | |
| resolve(script); | |
| }; | |
| document.body.appendChild(script); | |
| }); | |
| }, "Invalid JSON rule should throw a SyntaxError on the window."); | |
| 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(error.name, "TypeError"); | |
| resolve(script); | |
| }; | |
| document.body.appendChild(script); | |
| }); | |
| }, "JSON rule with a type error should throw a TypeError on the window."); | |
| </script> | |
| </body> |