Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/foreign-fetch-worker.js |
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/foreign-fetch-worker.js b/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/foreign-fetch-worker.js |
index 2be0db23f678aff2e48292e309a2efe3361f0d53..765972c71856bafce9298feab5441fe47e62f5af 100644 |
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/foreign-fetch-worker.js |
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/foreign-fetch-worker.js |
@@ -1,9 +1,47 @@ |
self.addEventListener('install', function(event) { |
- var origins = JSON.parse(decodeURIComponent(location.search.substring(1))); |
- event.registerForeignFetch({scopes: [registration.scope + '/intercept'], |
- origins: origins}); |
+ var params = JSON.parse(decodeURIComponent(location.search.substring(1))); |
+ if (!('scopes' in params)) { |
+ if ('relscopes' in params) { |
+ params.scopes = params.relscopes.map(s => registration.scope + s); |
+ } else { |
+ params.scopes = [registration.scope]; |
+ } |
+ } |
+ if (!('origins' in params)) |
+ params.origins = ['*']; |
+ event.registerForeignFetch(params); |
}); |
+function handle_basic(event) { |
+ event.respondWith({response: |
+ new Response('Foreign Fetch', |
+ {headers: {'Access-Control-Allow-Origin': '*'}})}); |
+} |
+ |
+function handle_onmessage(event) { |
+ event.respondWith({response: |
+ new Response('<script>window.onmessage = e => e.ports[0].postMessage("failed");</script>', |
+ {headers: {'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*'}})}); |
+} |
+ |
self.addEventListener('foreignfetch', function(event) { |
- event.respondWith({response: new Response('Foreign Fetch')}); |
+ var url = event.request.url; |
+ var handlers = [ |
+ { pattern: '?basic', fn: handle_basic }, |
+ { pattern: '?onmessage', fn: handle_onmessage } |
+ ]; |
+ |
+ var handler = null; |
+ for (var i = 0; i < handlers.length; ++i) { |
+ if (url.indexOf(handlers[i].pattern) != -1) { |
+ handler = handlers[i]; |
+ break; |
+ } |
+ } |
+ |
+ if (handler) { |
+ handler.fn(event); |
+ } else { |
+ event.respondWith(new Response('unexpected request')); |
+ } |
}); |