Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Side by Side Diff: LayoutTests/http/tests/serviceworker/update.html

Issue 1268663003: Service Worker: Make ServiceWorkerRegistration.update() return a promise. (Blink Layout 3/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase. Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>Service Worker: Registration update()</title> 2 <title>Service Worker: Registration update()</title>
3 <script src="../resources/testharness.js"></script> 3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script> 4 <script src="../resources/testharnessreport.js"></script>
5 <script src="resources/test-helpers.js"></script> 5 <script src="resources/test-helpers.js"></script>
6 <script> 6 <script>
7 promise_test(function(t) { 7 promise_test(function(t) {
8 var scope = 'resources/scope/update'; 8 var scope = 'resources/scope/update';
9 var worker_url = 'resources/update-worker.php'; 9 var worker_url = 'resources/update-worker.php';
10 var expected_url = normalizeURL(worker_url); 10 var expected_url = normalizeURL(worker_url);
11 var registration; 11 var registration;
12 12
13 return service_worker_unregister_and_register(t, worker_url, scope) 13 return service_worker_unregister_and_register(t, worker_url, scope)
14 .then(function(r) { 14 .then(function(r) {
15 registration = r; 15 registration = r;
16 return wait_for_state(t, registration.installing, 'activated'); 16 return wait_for_state(t, registration.installing, 'activated');
17 }) 17 })
18 .then(function() { 18 .then(function() {
19 assert_equals(registration.installing, null, 19 assert_equals(registration.installing, null,
20 'installing should be null in the initial state'); 20 'installing should be null in the initial state.');
21 assert_equals(registration.waiting, null, 21 assert_equals(registration.waiting, null,
22 'waiting should be null in the initial state'); 22 'waiting should be null in the initial state.');
23 assert_equals(registration.active.scriptURL, expected_url, 23 assert_equals(registration.active.scriptURL, expected_url,
24 'active should exist in the initial state'); 24 'active should exist in the initial state.');
25 25
26 // A new worker should be found. 26 // A new worker (generated by update-worker.php) should be found.
27 registration.update(); 27 // The returned promise should resolve when a new worker script is
28 return wait_for_update(t, registration); 28 // fetched and starts installing.
29 return Promise.all([registration.update(),
30 wait_for_update(t, registration)]);
29 }) 31 })
30 .then(function() { 32 .then(function() {
31 assert_equals(registration.installing.scriptURL, expected_url, 33 assert_equals(registration.installing.scriptURL, expected_url,
32 'new installing should be set after updatefound'); 34 'new installing should be set after update resolves.');
33 assert_equals(registration.waiting, null, 35 assert_equals(registration.waiting, null,
34 'waiting should still be null after updatefound'); 36 'waiting should still be null after update resolves.');
35 assert_equals(registration.active.scriptURL, expected_url, 37 assert_equals(registration.active.scriptURL, expected_url,
36 'active should still exist after update found'); 38 'active should still exist after update found.');
37 return wait_for_state(t, registration.installing, 'installed'); 39 return wait_for_state(t, registration.installing, 'installed');
38 }) 40 })
39 .then(function() { 41 .then(function() {
40 assert_equals(registration.installing, null, 42 assert_equals(registration.installing, null,
41 'installing should be null after installing'); 43 'installing should be null after installing.');
42 assert_equals(registration.waiting.scriptURL, expected_url, 44 assert_equals(registration.waiting.scriptURL, expected_url,
43 'waiting should be set after installing'); 45 'waiting should be set after installing.');
44 assert_equals(registration.active.scriptURL, expected_url, 46 assert_equals(registration.active.scriptURL, expected_url,
45 'active should still exist after installing'); 47 'active should still exist after installing.');
46 return wait_for_state(t, registration.waiting, 'activated'); 48 return wait_for_state(t, registration.waiting, 'activated');
47 }) 49 })
48 .then(function() { 50 .then(function() {
49 assert_equals(registration.installing, null, 51 assert_equals(registration.installing, null,
50 'installing should be null after activated'); 52 'installing should be null after activated.');
51 assert_equals(registration.waiting, null, 53 assert_equals(registration.waiting, null,
52 'waiting should be null after activated'); 54 'waiting should be null after activated.');
53 assert_equals(registration.active.scriptURL, expected_url, 55 assert_equals(registration.active.scriptURL, expected_url,
54 'new worker should be promoted to active'); 56 'new worker should be promoted to active.');
57 })
58 .then(function() {
59 // A new worker(generated by update-worker.php) should be found.
60 // The returned promise should reject as update-worker.php sets the
61 // mimetype to a disallowed value for this attempt.
62 return registration.update();
63 })
64 .then(
65 function() { assert_unreached("update() should reject."); },
66 function(e) {
67 assert_throws('SecurityError', function() { throw e; },
68 'Using a disallowed mimetype should make update() ' +
69 'promise reject with a SecurityError.');
70 assert_equals(registration.active.scriptURL, expected_url,
71 'active should still exist after update failure.');
55 return service_worker_unregister_and_done(t, scope); 72 return service_worker_unregister_and_done(t, scope);
56 }) 73 });
57 }, 'Update a registration'); 74 }, 'Update a registration.');
58 </script> 75 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698