Index: third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/clients-get-worker.js |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/clients-get-worker.js b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/clients-get-worker.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9ac2c22645897ad1f15c19170b635cb4b3db077c |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/clients-get-worker.js |
@@ -0,0 +1,53 @@ |
+self.onfetch = function(e) { |
+ if (e.request.url.indexOf("clients-get-frame.html") >= 0) { |
+ if (e.clientId === null) { |
+ e.respondWith(fetch(e.request)); |
+ } else { |
+ e.respondWith(Response.error()); |
+ } |
+ return; |
+ } |
+ e.respondWith(new Response(e.clientId)); |
+}; |
+ |
+self.onmessage = function(e) { |
+ var port = e.data.port; |
+ if (e.data.message == 'get_client_ids') { |
+ var clientIds = e.data.clientIds; |
+ var message = []; |
+ |
+ Promise.all( |
+ clientIds.map(function(clientId) { |
+ return self.clients.get(clientId); |
+ }).concat(self.clients.get("invalid-id")) |
+ ).then(function(clients) { |
+ clients.forEach(function(client) { |
+ if (client instanceof Client) { |
+ message.push([client.visibilityState, |
+ client.focused, |
+ client.url, |
+ client.frameType]); |
+ } else { |
+ message.push(client); |
+ } |
+ }); |
+ port.postMessage(message); |
+ }); |
+ } else if (e.data.message == 'get_other_client_id') { |
+ var clientId = e.data.clientId; |
+ var message; |
+ |
+ self.clients.get(clientId) |
+ .then(function(client) { |
+ if (client instanceof Client) { |
+ message = [client.visibilityState, |
+ client.focused, |
+ client.url, |
+ client.frameType]; |
+ } else { |
+ message = client; |
+ } |
+ port.postMessage(message); |
+ }); |
+ } |
+}; |