| <!DOCTYPE html> |
| <title>SharedWorker: parse error failure</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../support/check-error-arguments.js"></script> |
| <script> |
| |
| // Check if module shared worker is supported. |
| // In this test scope, we only use simple non-nested static import as a feature |
| // of module shared worker, so we only check if static import is supported. |
| // |
| // This check is necessary to appropriately test parse error handling because |
| // we need to distingusih the parse error invoked by unsupported "import" in |
| // the top-level script from the parse error invoked by the statically imported |
| // script which is the one we want to check in this test. |
| promise_setup(async () => { |
| const scriptURL = 'resources/static-import-worker.js'; |
| const worker = new SharedWorker(scriptURL, { type: 'module' }); |
| const supportsModuleWorkers = await new Promise((resolve, reject) => { |
| worker.port.onmessage = e => { |
| resolve(e.data.length == 1 && e.data[0] == 'export-on-load-script.js'); |
| }; |
| worker.onerror = () => resolve(false); |
| }); |
| assert_implements( |
| supportsModuleWorkers, |
| "Static import must be supported on module shared worker to run this test." |
| ); |
| }); |
| |
| promise_test(async () => { |
| const scriptURL = 'resources/syntax-error.js'; |
| const worker = new SharedWorker(scriptURL, { type: 'module' }); |
| const args = await new Promise(resolve => |
| worker.onerror = (...args) => resolve(args)); |
| window.checkErrorArguments(args); |
| }, 'Module shared worker construction for script with syntax error should ' + |
| 'dispatch an event named error.'); |
| |
| promise_test(async () => { |
| const scriptURL = 'resources/static-import-syntax-error.js'; |
| const worker = new SharedWorker(scriptURL, { type: 'module' }); |
| const args = await new Promise(resolve => |
| worker.onerror = (...args) => resolve(args)); |
| window.checkErrorArguments(args); |
| }, 'Static import on module shared worker for script with syntax error ' + |
| 'should dispatch an event named error.'); |
| |
| </script> |