| <!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 service worker registration correctly follow CSP</title> |
| <script src='black_box_js_test_utils.js'></script> |
| </head> |
| |
| <body> |
| <script> |
| h5vcc.storage.clearServiceWorkerCache(); |
| |
| var window_onerror_count = 0; |
| window.onerror = (message, filename, lineno, colno, error) => { |
| ++window_onerror_count; |
| // Note: Worker execution errors currently don't pass line or column |
| // number in the error message. |
| assertIncludes('SecurityError', message); |
| assertIncludes('worker_csp_test.js', filename); |
| } |
| |
| // This worker attempts to do an XHR request that is blocked by CSP. |
| navigator.serviceWorker.register( |
| 'worker_csp_test.js', { scope: './' }) |
| .then(registration => { |
| notReached(); |
| }) |
| .catch(error => { |
| console.log(`Registration failed: ${error}`); |
| assertIncludes('TypeError', error); |
| }); |
| |
| window.setTimeout( |
| () => { |
| assertEqual(0, window_onerror_count); |
| onEndTest(); |
| }, 250); |
| </script> |
| </body> |