OLD | NEW |
| (Empty) |
1 function match_query(query_string) { | |
2 return self.location.search.substr(1) == query_string; | |
3 } | |
4 | |
5 function receive_event(event_name) { | |
6 return new Promise(function(resolve) { | |
7 self.addEventListener(event_name, resolve, false); | |
8 }); | |
9 } | |
10 | |
11 function navigate_test(e) { | |
12 var port = e.data.port; | |
13 var url = e.data.url; | |
14 | |
15 return clients.matchAll({ includeUncontrolled : true }) | |
16 .then(function(client_list) { | |
17 for (var i = 0; i < client_list.length; i++) { | |
18 var client = client_list[i]; | |
19 if (client.frameType == 'nested') { | |
20 return client.navigate(url); | |
21 } | |
22 } | |
23 port.postMessage('Could not found window client.'); | |
24 }) | |
25 .then(function(new_client) { | |
26 if (new_client === null) | |
27 port.postMessage(new_client); | |
28 else | |
29 port.postMessage(new_client.url); | |
30 }) | |
31 .catch(function(error) { | |
32 port.postMessage(error.name); | |
33 }); | |
34 } | |
35 if (match_query('installing')) { | |
36 // If the query string is "?installing", then do test on installing worker. | |
37 // This is only for in-scope-but-not-controlled test. | |
38 receive_event('install').then(function(e) { | |
39 e.waitUntil(receive_event('message').then(navigate_test)); | |
40 }); | |
41 } else { | |
42 receive_event('message').then(function(e) { | |
43 e.waitUntil(navigate_test(e)); | |
44 }); | |
45 } | |
OLD | NEW |