Index: LayoutTests/http/tests/serviceworker/update.html |
diff --git a/LayoutTests/http/tests/serviceworker/update.html b/LayoutTests/http/tests/serviceworker/update.html |
index 9eb392a9898336b51f14b1d476611b9d50b2046c..61a8a2dfba6db07c3e7c9bf7f93ddae77365578d 100644 |
--- a/LayoutTests/http/tests/serviceworker/update.html |
+++ b/LayoutTests/http/tests/serviceworker/update.html |
@@ -17,42 +17,59 @@ promise_test(function(t) { |
}) |
.then(function() { |
assert_equals(registration.installing, null, |
- 'installing should be null in the initial state'); |
+ 'installing should be null in the initial state.'); |
assert_equals(registration.waiting, null, |
- 'waiting should be null in the initial state'); |
+ 'waiting should be null in the initial state.'); |
assert_equals(registration.active.scriptURL, expected_url, |
- 'active should exist in the initial state'); |
+ 'active should exist in the initial state.'); |
- // A new worker should be found. |
- registration.update(); |
- return wait_for_update(t, registration); |
+ // A new worker (generated by update-worker.php) should be found. |
+ // The returned promise should resolve when a new worker script is |
+ // fetched and starts installing. |
+ return Promise.all([registration.update(), |
+ wait_for_update(t, registration)]); |
}) |
.then(function() { |
assert_equals(registration.installing.scriptURL, expected_url, |
- 'new installing should be set after updatefound'); |
+ 'new installing should be set after update resolves.'); |
assert_equals(registration.waiting, null, |
- 'waiting should still be null after updatefound'); |
+ 'waiting should still be null after update resolves.'); |
assert_equals(registration.active.scriptURL, expected_url, |
- 'active should still exist after update found'); |
+ 'active should still exist after update found.'); |
return wait_for_state(t, registration.installing, 'installed'); |
}) |
.then(function() { |
assert_equals(registration.installing, null, |
- 'installing should be null after installing'); |
+ 'installing should be null after installing.'); |
assert_equals(registration.waiting.scriptURL, expected_url, |
- 'waiting should be set after installing'); |
+ 'waiting should be set after installing.'); |
assert_equals(registration.active.scriptURL, expected_url, |
- 'active should still exist after installing'); |
+ 'active should still exist after installing.'); |
return wait_for_state(t, registration.waiting, 'activated'); |
}) |
.then(function() { |
assert_equals(registration.installing, null, |
- 'installing should be null after activated'); |
+ 'installing should be null after activated.'); |
assert_equals(registration.waiting, null, |
- 'waiting should be null after activated'); |
+ 'waiting should be null after activated.'); |
assert_equals(registration.active.scriptURL, expected_url, |
- 'new worker should be promoted to active'); |
- return service_worker_unregister_and_done(t, scope); |
+ 'new worker should be promoted to active.'); |
+ }) |
+ .then(function() { |
+ // A new worker(generated by update-worker.php) should be found. |
+ // The returned promise should reject as update-worker.php sets the |
+ // mimetype to a disallowed value for this attempt. |
+ return registration.update(); |
}) |
- }, 'Update a registration'); |
+ .then( |
+ function() { assert_unreached("update() should reject."); }, |
+ function(e) { |
+ assert_throws('SecurityError', function() { throw e; }, |
+ 'Using a disallowed mimetype should make update() ' + |
+ 'promise reject with a SecurityError.'); |
+ assert_equals(registration.active.scriptURL, expected_url, |
+ 'active should still exist after update failure.'); |
+ return service_worker_unregister_and_done(t, scope); |
+ }); |
+ }, 'Update a registration.'); |
</script> |