| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="resources/test-helpers.js"></script> |
| <script> |
| async_test(function(t) { |
| var scope = 'resources/scope/installing-waiting-active-after-registration'; |
| var worker_url = 'resources/empty-worker.js'; |
| var expected_url = normalizeURL(worker_url); |
| |
| service_worker_unregister_and_register(t, worker_url, scope) |
| .then(function(r) { |
| registration = r; |
| assert_equals(registration.installing.scriptURL, expected_url, |
| 'installing before updatefound'); |
| assert_equals(registration.waiting, null, |
| 'waiting before updatefound'); |
| assert_equals(registration.active, null, |
| 'active before updatefound'); |
| return wait_for_update(t, registration); |
| }) |
| .then(function(worker) { |
| assert_equals(registration.installing.scriptURL, expected_url, |
| 'installing after updatefound'); |
| assert_equals(registration.waiting, null, |
| 'waiting after updatefound'); |
| assert_equals(registration.active, null, |
| 'active after updatefound'); |
| return wait_for_state(t, registration.installing, 'installed'); |
| }) |
| .then(function() { |
| assert_equals(registration.installing, null, |
| 'installing after installed'); |
| assert_equals(registration.waiting.scriptURL, expected_url, |
| 'waiting after installed'); |
| assert_equals(registration.active, null, |
| 'active after installed'); |
| return wait_for_state(t, registration.waiting, 'activated'); |
| }) |
| .then(function() { |
| assert_equals(registration.installing, null, |
| 'installing after activated'); |
| assert_equals(registration.waiting, null, |
| 'waiting after activated'); |
| assert_equals(registration.active.scriptURL, expected_url, |
| 'active after activated'); |
| return Promise.all([ |
| wait_for_state(t, registration.active, 'redundant'), |
| registration.unregister() |
| ]); |
| }) |
| .then(function() { |
| assert_equals(registration.installing, null, |
| 'installing after redundant'); |
| assert_equals(registration.waiting, null, |
| 'waiting after redundant'); |
| assert_equals(registration.active.scriptURL, expected_url, |
| 'active after redundant'); |
| t.done(); |
| }) |
| .catch(unreached_rejection(t)); |
| }, 'installing/waiting/active after registration'); |
| </script> |