| <!DOCTYPE html> | |
| <html class="test-wait"> | |
| <meta charset="utf-8"> | |
| <script> | |
| const script = ` | |
| postMessage("hi"); | |
| // This line runs until worker.terminate() happens, which terminates this function too. | |
| self.reportError(new Int16Array(2147483648)) | |
| // And thus this line runs after the termination. | |
| navigator.locks.request("weblock_0", () => {}); | |
| `; | |
| const worker = new Worker(URL.createObjectURL(new Blob([script]))); | |
| worker.onmessage = () => { | |
| worker.terminate(); | |
| // We want to wait for the full termination but there is no API for that | |
| // So, just wait for a random time | |
| setTimeout(() => document.documentElement.classList.remove("test-wait"), 100); | |
| } | |
| </script> |