| <!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 correctly follows CSP</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 isn't allowed by CSP. |
| try { |
| var blocked_worker = new Worker('https://www.google.com/blocked_worker.js'); |
| blocked_worker.onerror = function (event) { |
| ++worker_onerror_count; |
| console.log('worker got onerror', event.message); |
| if (event.message.includes('blocked_worker.js')) { |
| assertIncludes('rejected by security policy', event.message); |
| assertEqual('https://www.google.com/blocked_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> |