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

Unified Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/resources/foreign-fetch-worker.js

Issue 1870743002: Foreign fetch should not intercept same origin or main resource requests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix function name style Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
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'));
+ }
});

Powered by Google App Engine
This is Rietveld 408576698