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

Side by Side Diff: third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/getregistrations.https.html

Issue 2853383004: Upstream service worker registration tests to WPT (Closed)
Patch Set: Incorporate review feedback Created 3 years, 7 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: getRegistrations()</title> 2 <title>Service Worker: getRegistrations()</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.sub.js"></script> 5 <script src="resources/test-helpers.sub.js"></script>
6 <script src="/common/get-host-info.sub.js"></script> 6 <script src="/common/get-host-info.sub.js"></script>
7 <script src="../fetch/resources/fetch-test-helpers.sub.js"></script>
8 <script> 7 <script>
9 // Purge the existing registrations for the origin. 8 // Purge the existing registrations for the origin.
10 // getRegistrations() is used in order to avoid adding additional complexity 9 // getRegistrations() is used in order to avoid adding additional complexity
11 // e.g. adding an internal function. 10 // e.g. adding an internal function.
12 promise_test(function(t) { 11 promise_test(function() {
13 return navigator.serviceWorker.getRegistrations() 12 return navigator.serviceWorker.getRegistrations()
14 .then(function(registrations) { 13 .then(function(registrations) {
15 return registrations.reduce(function(sequence, registration) { 14 return registrations.reduce(function(sequence, registration) {
16 return sequence.then(function() { 15 return sequence.then(function() {
17 return registration.unregister(); 16 return registration.unregister();
18 }); 17 });
19 }, Promise.resolve()); 18 }, Promise.resolve());
20 }); 19 })
21 }, 'Purge the existing registrations.'); 20 .then(function() {
22 21 return navigator.serviceWorker.getRegistrations();
23 promise_test(function(t) { 22 })
24 return navigator.serviceWorker.getRegistrations()
25 .then(function(value) { 23 .then(function(value) {
26 assert_array_equals( 24 assert_array_equals(
27 value, 25 value,
28 [], 26 [],
29 'getRegistrations should resolve with an empty array.'); 27 'getRegistrations should resolve with an empty array.');
30 }); 28 });
31 }, 'getRegistrations'); 29 }, 'registrations are not returned following unregister');
32 30
33 promise_test(function(t) { 31 promise_test(function(t) {
34 var scope = 'resources/scope/getregistrations/normal'; 32 var scope = 'resources/scope/getregistrations/normal';
35 var script = 'resources/empty-worker.js'; 33 var script = 'resources/empty-worker.js';
36 var registrations = []; 34 var registrations = [];
37 return service_worker_unregister_and_register(t, script, scope) 35 return service_worker_unregister_and_register(t, script, scope)
38 .then(function(r) { 36 .then(function(r) {
39 registrations.push(r); 37 registrations.push(r);
40 return navigator.serviceWorker.getRegistrations(); 38 return navigator.serviceWorker.getRegistrations();
41 }) 39 })
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 value, 87 value,
90 [], 88 [],
91 'getRegistrations should resolve with an empty array.'); 89 'getRegistrations should resolve with an empty array.');
92 }); 90 });
93 }, 'Register then Unregister then getRegistrations'); 91 }, 'Register then Unregister then getRegistrations');
94 92
95 promise_test(function(t) { 93 promise_test(function(t) {
96 var scope = 'resources/scope/getregistrations/register-unregister-controlled '; 94 var scope = 'resources/scope/getregistrations/register-unregister-controlled ';
97 var script = 'resources/empty-worker.js'; 95 var script = 'resources/empty-worker.js';
98 var registrations; 96 var registrations;
99 var frame;
100 return service_worker_unregister_and_register(t, script, scope) 97 return service_worker_unregister_and_register(t, script, scope)
101 .then(function(r) { 98 .then(function(r) {
102 registration = r; 99 registration = r;
103 return wait_for_state(t, registration.installing, 'activated'); 100 return wait_for_state(t, registration.installing, 'activated');
104 }) 101 })
105 .then(function() { 102 .then(function() {
106 return with_iframe(scope); 103 return with_iframe(scope);
107 }) 104 })
108 .then(function(f) { 105 .then(function(f) {
109 frame = f; 106 t.add_cleanup(function() { f.remove(); });
110 return registration.unregister(); 107 return registration.unregister();
111 }) 108 })
112 .then(function() { 109 .then(function() {
113 return navigator.serviceWorker.getRegistrations(); 110 return navigator.serviceWorker.getRegistrations();
114 }) 111 })
115 .then(function(value) { 112 .then(function(value) {
116 assert_array_equals( 113 assert_array_equals(
117 value, 114 value,
118 [], 115 [],
119 'getRegistrations should resolve with an empty array.'); 116 'getRegistrations should resolve with an empty array.');
120 assert_equals(registration.installing, null); 117 assert_equals(registration.installing, null);
121 assert_equals(registration.waiting, null); 118 assert_equals(registration.waiting, null);
122 assert_equals(registration.active.state, 'activated'); 119 assert_equals(registration.active.state, 'activated');
123 frame.remove();
124 }); 120 });
125 }, 'Register then Unregister with controlled frame then getRegistrations'); 121 }, 'Register then Unregister with controlled frame then getRegistrations');
126 122
127 promise_test(function(t) { 123 promise_test(function(t) {
128 var host_info = get_host_info(); 124 var host_info = get_host_info();
129 // Rewrite the url to point to remote origin. 125 // Rewrite the url to point to remote origin.
130 var frame_same_origin_url = new URL("resources/frame-for-getregistrations.ht ml", window.location); 126 var frame_same_origin_url = new URL("resources/frame-for-getregistrations.ht ml", window.location);
131 var frame_url = host_info['HTTPS_REMOTE_ORIGIN'] + frame_same_origin_url.pat hname; 127 var frame_url = host_info['HTTPS_REMOTE_ORIGIN'] + frame_same_origin_url.pat hname;
132 var scope = 'resources/scope-for-getregistrations'; 128 var scope = 'resources/scope-for-getregistrations';
133 var script = 'resources/empty-worker.js'; 129 var script = 'resources/empty-worker.js';
(...skipping 16 matching lines...) Expand all
150 }); 146 });
151 } 147 }
152 148
153 // We need this special frame loading function because the frame is going 149 // We need this special frame loading function because the frame is going
154 // to register it's own service worker and there is the possibility that tha t 150 // to register it's own service worker and there is the possibility that tha t
155 // register() finishes after the register() for the same domain later in the 151 // register() finishes after the register() for the same domain later in the
156 // test. So we have to wait until the cross origin register() is done, and n ot 152 // test. So we have to wait until the cross origin register() is done, and n ot
157 // just until the frame loads. 153 // just until the frame loads.
158 return with_iframe_ready(frame_url) 154 return with_iframe_ready(frame_url)
159 .then(function(f) { 155 .then(function(f) {
156 t.add_cleanup(function() { f.remove(); });
160 frame = f; 157 frame = f;
161 return service_worker_unregister_and_register(t, script, scope); 158 return service_worker_unregister_and_register(t, script, scope);
162 }) 159 })
163 .then(function(r) { 160 .then(function(r) {
164 registrations.push(r); 161 registrations.push(r);
165 return navigator.serviceWorker.getRegistrations(); 162 return navigator.serviceWorker.getRegistrations();
166 }) 163 })
167 .then(function(value) { 164 .then(function(value) {
168 assert_array_equals( 165 assert_array_equals(
169 value, 166 value,
170 registrations, 167 registrations,
171 'getRegistrations should only return same origin registrations.'); 168 'getRegistrations should only return same origin registrations.');
172 169
173 var channel = new MessageChannel(); 170 var channel = new MessageChannel();
174 var resolve; 171 var resolve;
175 var p = new Promise(function(r) { resolve = r; }); 172 var p = new Promise(function(r) { resolve = r; });
176 173
177 channel.port1.onmessage = function(e) { 174 channel.port1.onmessage = function(e) {
178 if (e.data == 'unregistered') 175 if (e.data == 'unregistered')
179 resolve(); 176 resolve();
180 }; 177 };
181 frame.contentWindow.postMessage('unregister', '*', [channel.port2]); 178 frame.contentWindow.postMessage('unregister', '*', [channel.port2]);
182 return p; 179 return p;
183 }) 180 })
184 .then(function() { 181 .then(function() {
185 frame.remove();
186 return service_worker_unregister(t, scope); 182 return service_worker_unregister(t, scope);
187 }); 183 });
188 }, 'getRegistrations promise resolves only with same origin registrations.'); 184 }, 'getRegistrations promise resolves only with same origin registrations.');
189
190 done();
191 </script> 185 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698