| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src='../resources/runner.js'></script> |
| </head> |
| <body> |
| <script> |
| let isDone = false; |
| function testDone() { |
| isDone = true; |
| } |
| |
| function waitForWorkerActive(worker) { |
| return new Promise((resolve) => { |
| worker.addEventListener('statechange', () => { |
| if (worker.state == 'activated') |
| resolve(); |
| }); |
| }); |
| } |
| |
| async function runTest() { |
| const script = |
| `/service_worker/resources/changing-service-worker.generated.js`; |
| const scope = `/service_worker/resources/`; |
| const registration = await navigator.serviceWorker.register( |
| script, { scope: scope }); |
| await waitForWorkerActive(registration.installing); |
| |
| while (!isDone) { |
| const registrations = await navigator.serviceWorker.getRegistrations(); |
| const startTime = performance.now(); |
| await registrations[0].update(); |
| PerfTestRunner.measureValueAsync(performance.now() - startTime); |
| } |
| return; |
| } |
| |
| PerfTestRunner.startMeasureValuesAsync({ |
| description: 'Measure performance of update service worker.', |
| unit: 'ms', |
| run: runTest, |
| done: testDone, |
| iterationCount: 30 |
| }); |
| </script> |
| </body> |
| </html> |