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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/getregistrations.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
« no previous file with comments | « third_party/WebKit/LayoutTests/http/tests/serviceworker/getregistration.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <title>Service Worker: getRegistrations()</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 src="../resources/get-host-info.js"></script>
7 <script>
8 // Purge the existing registrations for the origin.
9 // getRegistrations() is used in order to avoid adding additional complexity
10 // e.g. adding an internal function.
11 promise_test(function(t) {
12 var resolve;
13 var timer;
14 var p = new Promise(function(r) { resolve = r; });
15 navigator.serviceWorker.getRegistrations()
16 .then(function(regs) {
17 return Promise.all(regs.map(function(r) { r.unregister(); }));
18 })
19 .then(function() {
20 // As registration.unregister() promises resolve before the
21 // corresponding registrations are deleted from the storage, we must
22 // wait until the registrations are actually removed from the storage.
23 // Spec reference: https://slightlyoff.github.io/ServiceWorker/spec/se rvice_worker/#unregister-algorithm
24 timer = setInterval(function() {
25 navigator.serviceWorker.getRegistrations()
26 .then(function(regs) {
27 if (regs.length == 0) {
28 clearInterval(timer);
29 resolve();
30 }
31 });
32 }, 100);
33 });
34 return p;
35 }, 'Purge the existing registrations.');
36
37 promise_test(function(t) {
38 var scope = 'resources/scope/getregistrations/normal';
39 var script = 'resources/empty-worker.js';
40 var registrations = [];
41 return service_worker_unregister_and_register(t, script, scope)
42 .then(function(r) {
43 registrations.push(r);
44 return navigator.serviceWorker.getRegistrations();
45 })
46 .then(function(value) {
47 assert_array_equals(
48 value,
49 registrations,
50 'getRegistrations should resolve with array of registrations.');
51 return service_worker_unregister(t, scope);
52 });
53 }, 'Register then getRegistrations');
54
55 promise_test(function(t) {
56 var scope1 = 'resources/scope/getregistrations/scope1';
57 var scope2 = 'resources/scope/getregistrations/scope2';
58 var script = 'resources/empty-worker.js';
59 var registrations = [];
60 return service_worker_unregister_and_register(t, script, scope1)
61 .then(function(r) {
62 registrations.push(r);
63 return service_worker_unregister_and_register(t, script, scope2);
64 })
65 .then(function(r) {
66 registrations.push(r);
67 return navigator.serviceWorker.getRegistrations();
68 })
69 .then(function(value) {
70 assert_array_equals(
71 value,
72 registrations,
73 'getRegistrations should resolve with array of registrations.');
74 return service_worker_unregister(t, scope1);
75 })
76 .then(function() {
77 return service_worker_unregister(t, scope2);
78 });
79 }, 'Register multiple times then getRegistrations');
80
81 promise_test(function(t) {
82 var scope = 'resources/scope/getregistrations/register-unregister';
83 var script = 'resources/empty-worker.js';
84 return service_worker_unregister_and_register(t, script, scope)
85 .then(function(registration) {
86 return registration.unregister();
87 })
88 .then(function() {
89 return navigator.serviceWorker.getRegistrations();
90 })
91 .then(function(value) {
92 assert_array_equals(
93 value,
94 [],
95 'getRegistrations should resolve with an empty array.');
96 });
97 }, 'Register then Unregister then getRegistrations');
98
99 promise_test(function(t) {
100 // Top-level window's origin: http://127.0.0.1:8000.
101 // Frame's origin: http://localhost:8000.
102 var host_info = get_host_info();
103 var frame_url = host_info['HTTP_REMOTE_ORIGIN'] +
104 '/serviceworker/resources/frame-for-getregistrations.html';
105 var scope = 'resources/scope-for-getregistrations';
106 var script = 'resources/empty-worker.js';
107 var frame;
108 var registrations = [];
109
110 return with_iframe(frame_url)
111 .then(function(f) {
112 frame = f;
113
114 var resolve;
115 var p = new Promise(function(r) { resolve = r; });
116
117 var channel = new MessageChannel();
118
119 channel.port1.onmessage = function(e) {
120 // Frame's registration is registered.
121 if (e.data == 'registered') {
122 // Top-level window registers a registration scoped
123 // http://127.0.0.1:8000/serviceworker/resources/scope-for-getregi strations.
124 service_worker_unregister_and_register(t, script, scope)
125 .then(function(r) {
126 registrations.push(r);
127 return navigator.serviceWorker.getRegistrations();
128 })
129 .then(function(value) {
130 assert_array_equals(value, registrations,
131 'getRegistrations should return only the same origin ' +
132 'registrations.');
133 channel.port1.postMessage('unregister');
134 });
135 } else if (e.data == 'unregistered') {
136 resolve();
137 }
138 };
139 frame.contentWindow.postMessage('register', '*', [channel.port2]);
140 return p;
141 })
142 .then(function() {
143 frame.remove();
144 return service_worker_unregister(t, scope);
145 });
146 }, 'getRegistrations promise resolves only with same origin registrations.');
147
148 done();
149 </script>
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/http/tests/serviceworker/getregistration.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698