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

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/fetch-request-resources.html

Issue 2858093002: Upstream service worker `fetch` test to WPT (Closed)
Patch Set: Incorporate review feedback Created 3 years, 7 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
(Empty)
1 <!DOCTYPE html>
2 <title>Service Worker: FetchEvent for resources</title>
3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script>
5 <script src="../resources/get-host-info.js?pipe=sub"></script>
6 <script src="resources/test-helpers.js"></script>
7 <script>
8 var url_count = 0;
9 var expected_results = {};
10
11 function image_test(frame, url, cross_origin,
12 expected_mode, expected_credentials) {
13 var actual_url = url + (++url_count);
14 expected_results[actual_url] = {
15 mode: expected_mode,
16 credentials: expected_credentials,
17 redirect: 'follow',
18 message: 'Image load (url:' +
19 actual_url + ' cross_origin:' + cross_origin + ')'
20 };
21 return frame.contentWindow.load_image(actual_url, cross_origin);
22 }
23
24 function script_test(frame, url, cross_origin,
25 expected_mode, expected_credentials) {
26 var actual_url = url + (++url_count);
27 expected_results[actual_url] = {
28 mode: expected_mode,
29 credentials: expected_credentials,
30 redirect: 'follow',
31 message: 'Script load (url:' +
32 actual_url + ' cross_origin:' + cross_origin + ')'
33 };
34 return frame.contentWindow.load_script(actual_url, cross_origin);
35 }
36
37 function css_test(frame, url, cross_origin,
38 expected_mode, expected_credentials) {
39 var actual_url = url + (++url_count);
40 expected_results[actual_url] = {
41 mode: expected_mode,
42 credentials: expected_credentials,
43 redirect: 'follow',
44 message: 'CSS load (url:' +
45 actual_url + ' cross_origin:' + cross_origin + ')'
46 };
47 return frame.contentWindow.load_css(actual_url, cross_origin);
48 }
49
50 function font_face_test(frame, url, expected_mode,
51 expected_credentials) {
52 var actual_url = url + (++url_count);
53 expected_results[actual_url] = {
54 url: actual_url,
55 mode: expected_mode,
56 credentials: expected_credentials,
57 redirect: 'follow',
58 message: 'FontFace load (url:' + actual_url + ')'
59 };
60 return frame.contentWindow.load_font(actual_url);
61 }
62
63 function css_image_test(frame, url, type,
64 expected_mode, expected_credentials) {
65 var actual_url = url + (++url_count);
66 expected_results[actual_url] = {
67 url: actual_url,
68 mode: expected_mode,
69 credentials: expected_credentials,
70 redirect: 'follow',
71 message: 'CSSImage load (url:' + actual_url + ' type:' + type + ')'
72 };
73 return frame.contentWindow.load_css_image(actual_url, type);
74 }
75
76 function css_image_set_test(frame, url, type,
77 expected_mode, expected_credentials) {
78 var actual_url = url + (++url_count);
79 expected_results[actual_url] = {
80 url: actual_url,
81 mode: expected_mode,
82 credentials: expected_credentials,
83 redirect: 'follow',
84 message: 'CSSImageSet load (url:' + actual_url + ' type:' + type + ')'
85 };
86 return frame.contentWindow.load_css_image_set(actual_url, type);
87 }
88
89 function fetch_test(frame, url, mode, credentials,
90 expected_mode, expected_credentials) {
91 var actual_url = url + (++url_count);
92 expected_results[actual_url] = {
93 mode: expected_mode,
94 credentials: expected_credentials,
95 redirect: 'follow',
96 message: 'fetch (url:' + actual_url + ' mode:' + mode + ' credentials:' +
97 credentials + ')'
98 };
99 return frame.contentWindow.fetch(
100 new Request(actual_url, {mode: mode, credentials: credentials}));
101 }
102
103 function audio_test(frame, url, cross_origin,
104 expected_mode, expected_credentials) {
105 var actual_url = url + (++url_count);
106 expected_results[actual_url] = {
107 mode: expected_mode,
108 credentials: expected_credentials,
109 redirect: 'follow',
110 message: 'Audio load (url:' + actual_url + ' cross_origin:' +
111 cross_origin + ')'
112 };
113 return frame.contentWindow.load_audio(actual_url, cross_origin);
114 }
115
116 async_test(function(t) {
117 var SCOPE = 'resources/fetch-request-resources-iframe.html';
118 var SCRIPT = 'resources/fetch-request-resources-worker.js';
119 var host_info = get_host_info();
120 var LOCAL_URL =
121 host_info['HTTP_ORIGIN'] + base_path() + 'resources/dummy?test';
122 var REMOTE_URL =
123 host_info['HTTP_REMOTE_ORIGIN'] + base_path() + 'resources/dummy?test';
124 var worker;
125 var frame;
126 service_worker_unregister_and_register(t, SCRIPT, SCOPE)
127 .then(function(registration) {
128 worker = registration.installing;
129 return wait_for_state(t, worker, 'activated');
130 })
131 .then(function() {
132 return new Promise(function(resolve) {
133 var channel = new MessageChannel();
134 channel.port1.onmessage = t.step_func(function(msg) {
135 if (msg.data.ready) {
136 resolve();
137 return;
138 }
139 var result = msg.data;
140 var expected = expected_results[result.url];
141 if (!expected) {
142 return;
143 }
144 assert_equals(
145 result.mode, expected.mode,
146 'mode of ' + expected.message + ' must be ' +
147 expected.mode + '.');
148 assert_equals(
149 result.credentials, expected.credentials,
150 'credentials of ' + expected.message + ' must be ' +
151 expected.credentials + '.');
152 assert_equals(
153 result.redirect, expected.redirect,
154 'redirect mode of ' + expected.message + ' must be ' +
155 expected.redirect + '.');
156 --url_count;
157 delete expected_results[result.url];
158 if (url_count == 0) {
159 frame.remove();
160 service_worker_unregister_and_done(t, SCOPE);
161 }
162 });
163 worker.postMessage(
164 {port: channel.port2}, [channel.port2]);
165 });
166 })
167 .then(function() { return with_iframe(SCOPE); })
168 .then(function(f) {
169 frame = f;
170 image_test(f, LOCAL_URL, '', 'no-cors', 'include');
171 image_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin');
172 image_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include');
173 image_test(f, REMOTE_URL, '', 'no-cors', 'include');
174 image_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin');
175 image_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include');
176
177 script_test(f, LOCAL_URL, '', 'no-cors', 'include');
178 script_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin');
179 script_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include');
180 script_test(f, REMOTE_URL, '', 'no-cors', 'include');
181 script_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin');
182 script_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include');
183
184 css_test(f, LOCAL_URL, '', 'no-cors', 'include');
185 css_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin');
186 css_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include');
187 css_test(f, REMOTE_URL, '', 'no-cors', 'include');
188 css_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin');
189 css_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include');
190
191 font_face_test(f, LOCAL_URL, 'cors', 'same-origin');
192 font_face_test(f, REMOTE_URL, 'cors', 'same-origin');
193
194 css_image_test(f, LOCAL_URL, 'backgroundImage', 'no-cors', 'include');
195 css_image_test(f, REMOTE_URL, 'backgroundImage', 'no-cors', 'include');
196 css_image_test(f, LOCAL_URL, 'shapeOutside', 'cors', 'same-origin');
197 css_image_test(f, REMOTE_URL, 'shapeOutside', 'cors', 'same-origin');
198
199 css_image_set_test(f, LOCAL_URL, 'backgroundImage',
200 'no-cors', 'include');
201 css_image_set_test(f, REMOTE_URL, 'backgroundImage',
202 'no-cors', 'include');
203 css_image_set_test(f, LOCAL_URL, 'shapeOutside', 'cors', 'same-origin');
204 css_image_set_test(f, REMOTE_URL, 'shapeOutside',
205 'cors', 'same-origin');
206
207 fetch_test(f, LOCAL_URL, 'same-origin', 'omit', 'same-origin', 'omit');
208 fetch_test(f, LOCAL_URL, 'same-origin', 'same-origin',
209 'same-origin', 'same-origin');
210 fetch_test(f, LOCAL_URL, 'same-origin', 'include',
211 'same-origin', 'include');
212 fetch_test(f, LOCAL_URL, 'no-cors', 'omit', 'no-cors', 'omit');
213 fetch_test(f, LOCAL_URL, 'no-cors', 'same-origin',
214 'no-cors', 'same-origin');
215 fetch_test(f, LOCAL_URL, 'no-cors', 'include', 'no-cors', 'include');
216 fetch_test(f, LOCAL_URL, 'cors', 'omit', 'cors', 'omit');
217 fetch_test(f, LOCAL_URL, 'cors', 'same-origin', 'cors', 'same-origin');
218 fetch_test(f, LOCAL_URL, 'cors', 'include', 'cors', 'include');
219 fetch_test(f, REMOTE_URL, 'no-cors', 'omit', 'no-cors', 'omit');
220 fetch_test(f, REMOTE_URL, 'no-cors', 'same-origin',
221 'no-cors', 'same-origin');
222 fetch_test(f, REMOTE_URL, 'no-cors', 'include', 'no-cors', 'include');
223 fetch_test(f, REMOTE_URL, 'cors', 'omit', 'cors', 'omit');
224 fetch_test(f, REMOTE_URL, 'cors', 'same-origin', 'cors', 'same-origin');
225 fetch_test(f, REMOTE_URL, 'cors', 'include', 'cors', 'include');
226
227 audio_test(f, LOCAL_URL, '', 'no-cors', 'include');
228 audio_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin');
229 audio_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include');
230 audio_test(f, REMOTE_URL, '', 'no-cors', 'include');
231 audio_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin');
232 audio_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include');
233 })
234 .catch(unreached_rejection(t));
235 }, 'Verify FetchEvent for resources.');
236 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698