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/foreign-fetch-basics.html

Issue 2105503002: Skip foreign fetch when the skipServiceWorker flag is set on a request. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rephrase SkipServiceWorker comments. Created 4 years, 5 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
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/get-host-info.js"></script> 4 <script src="../resources/get-host-info.js"></script>
5 <script src="resources/test-helpers.js"></script> 5 <script src="resources/test-helpers.js"></script>
6 <script src="resources/foreign-fetch-helpers.js"></script> 6 <script src="resources/foreign-fetch-helpers.js"></script>
7 <body> 7 <body>
8 <script> 8 <script>
9 var host_info = get_host_info(); 9 var host_info = get_host_info();
10 10
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + scope; 108 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + scope;
109 return install_cross_origin_worker(t, worker_for_scopes(['']), scope) 109 return install_cross_origin_worker(t, worker_for_scopes(['']), scope)
110 .then(() => fetch(remote_url)) 110 .then(() => fetch(remote_url))
111 .then(response => {}); 111 .then(response => {});
112 }, 'Service Worker that fallback to network should not crash.'); 112 }, 'Service Worker that fallback to network should not crash.');
113 113
114 promise_test(t => { 114 promise_test(t => {
115 var ff_scope = 'foreign-fetch/scope/controlled?basic'; 115 var ff_scope = 'foreign-fetch/scope/controlled?basic';
116 var remote_url = 116 var remote_url =
117 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + ff_scope; 117 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + ff_scope;
118 var scope = 'resources/simple.html'; 118 var scope = 'resources/simple.html?fetch';
119 var worker = 'resources/empty-worker.js'; 119 var worker = 'resources/empty-worker.js';
120 return install_cross_origin_worker(t, worker_for_scopes(['']), ff_scope) 120 return install_cross_origin_worker(t, worker_for_scopes(['']), ff_scope)
121 .then(() => service_worker_unregister_and_register(t, worker, scope)) 121 .then(() => service_worker_unregister_and_register(t, worker, scope))
122 .then(r => { 122 .then(r => {
123 add_completion_callback(() => r.unregister()); 123 add_completion_callback(() => r.unregister());
124 return wait_for_state(t, r.installing, 'activated'); 124 return wait_for_state(t, r.installing, 'activated');
125 }) 125 })
126 .then(() => with_iframe(scope)) 126 .then(() => with_iframe(scope))
127 .then(frame => frame.contentWindow.fetch(remote_url)) 127 .then(frame => frame.contentWindow.fetch(remote_url))
128 .then(response => response.text()) 128 .then(response => response.text())
129 .then(response_text => { 129 .then(response_text => {
130 assert_equals(response_text, 'Foreign Fetch'); 130 assert_equals(response_text, 'Foreign Fetch');
131 }); 131 });
132 }, 'Foreign fetch can intercept requests from SW controlled pages.'); 132 }, 'Foreign fetch can intercept fetch requests from SW controlled pages.');
133
134 promise_test(t => {
135 var ff_scope = 'foreign-fetch/scope/controlled?script';
136 var remote_url =
137 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + ff_scope;
138 var scope = 'resources/simple.html?script';
139 var worker = 'resources/empty-worker.js';
140 return install_cross_origin_worker(t, worker_for_scopes(['']), ff_scope)
141 .then(() => service_worker_unregister_and_register(t, worker, scope))
142 .then(r => {
143 add_completion_callback(() => r.unregister());
144 return wait_for_state(t, r.installing, 'activated');
145 })
146 .then(() => with_iframe(scope))
147 .then(frame => new Promise(resolve => {
148 frame.contentWindow.DidLoad = resolve;
149 let script = frame.contentWindow.document.createElement('script');
150 script.setAttribute('src', remote_url);
151 script.setAttribute('crossorigin', 'use-credentials');
152 frame.contentWindow.document.head.appendChild(script);
153 }))
154 .then(response_text => {
155 assert_equals(response_text, 'Foreign Fetch');
156 });
157 }, 'Foreign fetch can intercept resource requests from SW controlled pages.');
133 158
134 promise_test(t => { 159 promise_test(t => {
135 var scope = 'simple.txt?meta'; 160 var scope = 'simple.txt?meta';
136 var remote_url = 161 var remote_url =
137 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + scope; 162 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + scope;
138 return install_cross_origin_worker(t, worker_for_scopes(['']), scope) 163 return install_cross_origin_worker(t, worker_for_scopes(['']), scope)
139 .then(() => fetch(remote_url, {mode: 'no-cors'})) 164 .then(() => fetch(remote_url, {mode: 'no-cors'}))
140 .then(response => response.json()) 165 .then(response => response.json())
141 .then(response_data => { 166 .then(response_data => {
142 assert_equals(self.location.href, response_data.referrer); 167 assert_equals(self.location.href, response_data.referrer);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 return install_cross_origin_worker(t, worker_for_scopes(['']), scope, 201 return install_cross_origin_worker(t, worker_for_scopes(['']), scope,
177 host_info.AUTHENTICATED_ORIGIN) 202 host_info.AUTHENTICATED_ORIGIN)
178 .then(() => fetch_from_iframe(host_info.HTTPS_REMOTE_ORIGIN, remote_url)) 203 .then(() => fetch_from_iframe(host_info.HTTPS_REMOTE_ORIGIN, remote_url))
179 .then(response => assert_equals(response, 'Success: Foreign Fetch')) 204 .then(response => assert_equals(response, 'Success: Foreign Fetch'))
180 .then(() => fetch_from_iframe(host_info.UNAUTHENTICATED_ORIGIN, 205 .then(() => fetch_from_iframe(host_info.UNAUTHENTICATED_ORIGIN,
181 remote_url)) 206 remote_url))
182 .then(response => assert_equals(response, 207 .then(response => assert_equals(response,
183 'Error: TypeError: Failed to fetch')); 208 'Error: TypeError: Failed to fetch'));
184 }, 'Service Worker does not intercept fetches from an insecure context.'); 209 }, 'Service Worker does not intercept fetches from an insecure context.');
185 210
211 promise_test(t => {
212 var scope = 'fetch-access-control.php?basic&ACAOrigin=*&ACAMethods=SPECIAL';
213 var remote_url =
214 host_info.HTTPS_REMOTE_ORIGIN + '/serviceworker/resources/' + scope;
215 return install_cross_origin_worker(t, worker_for_scopes(['']), scope)
216 .then(() => fetch(remote_url, {method: 'SPECIAL'}))
217 .then(response => response.text())
218 .then(response_text => assert_true(response_text.startsWith('report(')));
219 }, 'Service Worker does not intercept fetches with CORS preflight');
220
186 </script> 221 </script>
187 </body> 222 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698