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

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

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

Powered by Google App Engine
This is Rietveld 408576698