| <!DOCTYPE html> |
| <html> |
| |
| <head> |
| <title>WebGPU caching test</title> |
| <style type="text/css"> |
| .nomargin { |
| margin: 0px auto; |
| } |
| </style> |
| |
| <script type="module"> |
| import { webGpuUnitTests } from './webgpu-unittest-utils.js'; |
| |
| function finish(success, errors) { |
| if (!success) { |
| console.error(errors.join('\n')); |
| errors.forEach(e => domAutomationController.log(e)); |
| domAutomationController.send('FAILED'); |
| } else { |
| console.log('SUCCESS'); |
| domAutomationController.send('SUCCESS'); |
| } |
| } |
| |
| async function main() { |
| const parsedString = new URLSearchParams(window.location.search); |
| |
| // Get the test parameters. |
| const testId = parsedString.get('testId'); |
| const hostname = parsedString.get('hostname'); |
| const worker_string = parsedString.get('worker'); |
| const use_worker = |
| (worker_string != null) ? worker_string == 'true' : false; |
| const runs_string = parsedString.get('runs'); |
| const runs = (runs_string != null) ? parseInt(runs_string) : 1; |
| const iframe_string = parsedString.get('iframe'); |
| const is_iframe = |
| (iframe_string != null) ? iframe_string == 'true' : false; |
| |
| // If we pass an explicit hostname, then forward the parameters inside |
| // an iframe at the hostname. |
| if (hostname != null) { |
| parsedString.delete('hostname'); |
| parsedString.set('iframe', 'true'); |
| const iframe = document.createElement('iframe'); |
| const path = window.location.pathname; |
| const search = parsedString.toString(); |
| const port = window.location.port; |
| iframe.src = `http://${hostname}:${port}${path}?${search}`; |
| document.body.append(iframe); |
| |
| const [success, errors] = await (new Promise( |
| resolve => { |
| window.addEventListener('message', |
| e => { |
| resolve(e.data); |
| }, |
| { once: true }) |
| } |
| )); |
| finish(success, errors); |
| return; |
| } |
| |
| var success = true; |
| var errors = []; |
| for (let i = 0; i < runs; i++) { |
| if (!use_worker) { |
| const [run_success, run_errors] = |
| await webGpuUnitTests.runTest(testId); |
| success = success && run_success; |
| errors = errors.concat(run_errors); |
| } else { |
| const worker = new Worker( |
| './webgpu-unittest-worker.js', |
| { type: 'module' } |
| ); |
| const promise = new Promise( |
| resolve => { |
| worker.addEventListener('message', |
| e => { |
| resolve(e.data); |
| }, |
| { once: true }) |
| } |
| ); |
| worker.postMessage({ testId }); |
| const [run_success, run_errors] = await promise; |
| success = success && run_success; |
| errors = errors.concat(run_errors); |
| } |
| } |
| |
| if (is_iframe) { |
| // In this case, we are an iframe embedded inside a parent, so |
| // post the results back to the parent to be handled. |
| parent.postMessage([success, errors], '*'); |
| } else { |
| finish(success, errors); |
| } |
| } |
| |
| await main(); |
| </script> |
| </head> |
| |
| <body> |
| </body> |
| |
| </html> |