| <!DOCTYPE html> | |
| <!-- | |
| Copyright 2023 The Cobalt Authors. All Rights Reserved. | |
| Licensed under the Apache License, Version 2.0 (the "License"); | |
| you may not use this file except in compliance with the License. | |
| You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, software | |
| distributed under the License is distributed on an "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| See the License for the specific language governing permissions and | |
| limitations under the License. | |
| --> | |
| <head> | |
| <title>Verify that worker loading is blocked and reported as expected</title> | |
| <script src='black_box_js_test_utils.js'></script> | |
| </head> | |
| <body> | |
| <script> | |
| var window_onerror_count = 0; | |
| var worker_onerror_count = 0; | |
| window.onerror = (message, filename, lineno, colno, error) => { | |
| ++window_onerror_count; | |
| console.log('window got onerror', message); | |
| notReached(); | |
| } | |
| // This worker is blocked because the URL can't resolve. | |
| try { | |
| var blocked_worker = new Worker('..:/blocked_worker.js'); | |
| notReached(); | |
| } catch (error) { | |
| console.log(error); | |
| assertEqual('SyntaxError', error.name); | |
| } | |
| // This worker is blocked because the script does not exist. | |
| try { | |
| var nonexisting_worker = new Worker('nonexisting_worker.js'); | |
| nonexisting_worker.onerror = function (event) { | |
| ++worker_onerror_count; | |
| console.log(event.message); | |
| if (event.message.includes('nonexisting_worker.js')) { | |
| assertIncludes('aborted or failed with code 404', event.message); | |
| assertIncludes('/testdata/nonexisting_worker.js', event.filename); | |
| } else { | |
| notReached(); | |
| } | |
| if (worker_onerror_count == 1) { | |
| window.setTimeout( | |
| () => { | |
| assertEqual(1, worker_onerror_count); | |
| assertEqual(0, window_onerror_count); | |
| onEndTest(); | |
| }, 250); | |
| } | |
| }; | |
| } catch (error) { | |
| // The error is thrown asynchronously after the Worker constructor. | |
| notReached(); | |
| } | |
| </script> | |
| </body> |