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

Side by Side Diff: LayoutTests/http/tests/serviceworker/install-phase-event-waituntil.html

Issue 352423005: Add ServiceWorker InstallPhaseEvent.waitUntil() layout test. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: add FIXME Created 6 years, 5 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
(Empty)
1 <!DOCTYPE html>
2 <title>InstallPhaseEvent: waitUntil</title>
3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script>
5 <script src="resources/test-helpers.js"></script>
6 <script>
7 function runTest(test, scope, onRegister) {
8 var script = 'resources/install-phase-event-waituntil.js';
9 test.step(function() {
10 service_worker_unregister_and_register(
11 test, script, scope
12 ).then(
13 test.step_func(onRegister)
14 );
15 });
16 }
17
18 function syncWorker(test, worker, obj) {
19 var channel = new MessageChannel();
20 channel.port1.onmessage = test.step_func(function(e) {
21 var message = e.data;
22 assert_equals(message, 'SYNC', 'Should receive sync message from worker. ');
23 obj.synced = true;
24 channel.port1.postMessage('ACK');
25 });
26 worker.postMessage({port: channel.port2}, [channel.port2]);
27 }
28
29 async_test(function(t) {
30 // Passing scope as the test switch for worker script.
31 var scope = 'install-fulfilled';
32 var onRegister = function(worker) {
33 var obj = {};
34 worker.onstatechange = t.step_func(function() {
35 if (worker.state == 'installing') {
36 syncWorker(t, worker, obj);
37 } else if (worker.state == 'installed') {
38 assert_true(obj.synced,
39 'state should be "installed" after the waitUntil pro mise for "oninstall" is fulfilled.');
40 service_worker_unregister_and_done(t, scope);
41 }
42 });
43 };
44 runTest(t, scope, onRegister);
45 }, 'Test install event waitUntil fulfilled');
46
47 async_test(function(t) {
48 var scope = 'activate-fulfilled';
49 var onRegister = function(worker) {
50 var obj = {};
51 worker.onstatechange = t.step_func(function() {
52 if (worker.state == 'activating') {
53 syncWorker(t, worker, obj);
54 } else if (worker.state == 'activated') {
55 assert_true(obj.synced,
56 'state should be "activated" after the waitUntil pro mise for "onactivate" is fulfilled.');
57 service_worker_unregister_and_done(t, scope);
58 }
59 });
60 };
61 runTest(t, scope, onRegister);
62 }, 'Test activate event waitUntil fulfilled');
63
64 async_test(function(t) {
65 var scope = 'install-rejected';
66 var onRegister = function(worker) {
67 worker.onstatechange = t.step_func(function() {
68 console.log(worker.state);
69 if (worker.state == 'redundant')
70 service_worker_unregister_and_done(t, scope);
71 });
72 };
73 runTest(t, scope, onRegister);
74 }, 'Test install event waitUntil rejected');
75
76 async_test(function(t) {
77 var scope = 'activate-rejected';
78 var onRegister = function(worker) {
79 worker.onstatechange = t.step_func(function() {
80 if (worker.state == 'redundant')
81 service_worker_unregister_and_done(t, scope);
82 });
83 };
84 runTest(t, scope, onRegister);
85 }, 'Test activate event waitUntil rejected.');
86
87 async_test(function(t) {
88 var scope = 'activate-multiple-fulfilled';
89 var onRegister = function(worker) {
90 var obj1 = {};
91 var obj2 = {};
92 worker.onstatechange = t.step_func(function() {
93 if (worker.state == 'activating') {
94 syncWorker(t, worker, obj1);
95 syncWorker(t, worker, obj2);
96 } else if (worker.state == 'activated') {
97 assert_true(obj1.synced && obj2.synced,
98 'state should be "activated" after all waitUnitl pro mises for "onactivate" are fulfilled.');
99 service_worker_unregister_and_done(t, scope);
100 }
101 });
102 };
103 runTest(t, scope, onRegister);
104 }, 'Test InstallPhaseEvent multiple waitUntil fulfilled.');
105
106 async_test(function(t) {
107 var scope = 'activate-reject-precedence';
108 var onRegister = function(worker) {
109 worker.onstatechange = t.step_func(function() {
110 if (worker.state == 'redundant')
111 service_worker_unregister_and_done(t, scope);
112 });
113 };
114 runTest(t, scope, onRegister);
115 }, 'Test InstallPhaseEvent waitUntil reject precedence.');
116 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698