| <!DOCTYPE html> |
| <title>ServiceWorkerGlobalScope: update</title> |
| <script src='/resources/testharness.js'></script> |
| <script src='/resources/testharnessreport.js'></script> |
| <script src='../resources/test-helpers.sub.js'></script> |
| <script> |
| |
| promise_test(function(t) { |
| var script = 'resources/update-worker.py'; |
| var scope = 'resources/scope/update'; |
| var registration; |
| var frame1; |
| |
| return service_worker_unregister_and_register(t, script, scope) |
| .then(function(r) { |
| t.add_cleanup(function() { |
| return service_worker_unregister(t, scope); |
| }); |
| |
| registration = r; |
| return wait_for_state(t, registration.installing, 'activated'); |
| }) |
| .then(function() { return with_iframe(scope); }) |
| .then(function(f) { |
| frame1 = f; |
| registration.active.postMessage('update'); |
| return wait_for_update(t, registration); |
| }) |
| .then(function() { return with_iframe(scope); }) |
| .then(function(frame2) { |
| var expected_events_seen = [ |
| 'updatefound', // by register(). |
| 'activate', |
| 'fetch', |
| 'message', |
| 'updatefound', // by update() in the message handler. |
| 'fetch', |
| ]; |
| assert_equals( |
| frame2.contentDocument.body.textContent, |
| expected_events_seen.toString(), |
| 'events seen by the worker'); |
| frame1.remove(); |
| frame2.remove(); |
| }); |
| }, 'Update a registration on ServiceWorkerGlobalScope'); |
| |
| </script> |