OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <title>Service Worker: FetchEvent for resources</title> | 2 <title>Service Worker: FetchEvent for resources</title> |
3 <script src="/resources/testharness.js"></script> | 3 <script src="/resources/testharness.js"></script> |
4 <script src="/resources/testharnessreport.js"></script> | 4 <script src="/resources/testharnessreport.js"></script> |
5 <script src="/common/get-host-info.sub.js"></script> | 5 <script src="/common/get-host-info.sub.js"></script> |
6 <script src="resources/test-helpers.sub.js?pipe=sub"></script> | 6 <script src="resources/test-helpers.sub.js?pipe=sub"></script> |
Marijn Kruisselbrink
2017/05/04 18:38:19
nit: get rid of the pipe=sub here too?
mike3
2017/05/05 16:44:00
Acknowledged.
| |
7 <script> | 7 <script> |
8 var url_count = 0; | 8 var url_count = 0; |
9 var expected_results = {}; | 9 var expected_results = {}; |
10 | 10 |
11 function image_test(frame, url, cross_origin, expected_mode, | 11 function image_test(frame, url, cross_origin, expected_mode, |
12 expected_credentials) { | 12 expected_credentials) { |
13 var actual_url = url + (++url_count); | 13 var actual_url = url + (++url_count); |
14 expected_results[actual_url] = { | 14 expected_results[actual_url] = { |
15 cross_origin: cross_origin, | 15 cross_origin: cross_origin, |
16 mode: expected_mode, | 16 mode: expected_mode, |
17 credentials: expected_credentials, | 17 credentials: expected_credentials, |
18 redirect: 'follow', | |
18 integrity: '', | 19 integrity: '', |
19 message: 'Image load (url:' + | 20 message: 'Image load (url:' + |
20 actual_url + ' cross_origin:' + cross_origin + ')' | 21 actual_url + ' cross_origin:' + cross_origin + ')' |
21 }; | 22 }; |
22 return frame.contentWindow.load_image(actual_url, cross_origin); | 23 return frame.contentWindow.load_image(actual_url, cross_origin); |
23 } | 24 } |
24 | 25 |
25 function script_test(frame, url, cross_origin, expected_mode, | 26 function script_test(frame, url, cross_origin, expected_mode, |
26 expected_credentials) { | 27 expected_credentials) { |
27 var actual_url = url + (++url_count); | 28 var actual_url = url + (++url_count); |
28 expected_results[actual_url] = { | 29 expected_results[actual_url] = { |
29 cross_origin: cross_origin, | 30 cross_origin: cross_origin, |
30 mode: expected_mode, | 31 mode: expected_mode, |
31 credentials: expected_credentials, | 32 credentials: expected_credentials, |
33 redirect: 'follow', | |
32 integrity: '', | 34 integrity: '', |
33 message: 'Script load (url:' + | 35 message: 'Script load (url:' + |
34 actual_url + ' cross_origin:' + cross_origin + ')' | 36 actual_url + ' cross_origin:' + cross_origin + ')' |
35 }; | 37 }; |
36 return frame.contentWindow.load_script(actual_url, cross_origin); | 38 return frame.contentWindow.load_script(actual_url, cross_origin); |
37 } | 39 } |
38 | 40 |
39 function css_test(frame, url, cross_origin, expected_mode, | 41 function css_test(frame, url, cross_origin, expected_mode, |
40 expected_credentials) { | 42 expected_credentials) { |
41 var actual_url = url + (++url_count); | 43 var actual_url = url + (++url_count); |
42 expected_results[actual_url] = { | 44 expected_results[actual_url] = { |
43 cross_origin: cross_origin, | 45 cross_origin: cross_origin, |
44 mode: expected_mode, | 46 mode: expected_mode, |
45 credentials: expected_credentials, | 47 credentials: expected_credentials, |
48 redirect: 'follow', | |
46 integrity: '', | 49 integrity: '', |
47 message: 'CSS load (url:' + | 50 message: 'CSS load (url:' + |
48 actual_url + ' cross_origin:' + cross_origin + ')' | 51 actual_url + ' cross_origin:' + cross_origin + ')' |
49 }; | 52 }; |
50 return frame.contentWindow.load_css(actual_url, cross_origin); | 53 return frame.contentWindow.load_css(actual_url, cross_origin); |
51 } | 54 } |
52 | 55 |
53 function font_face_test(frame, url, expected_mode, expected_credentials) { | 56 function font_face_test(frame, url, expected_mode, expected_credentials) { |
54 var actual_url = url + (++url_count); | 57 var actual_url = url + (++url_count); |
55 expected_results[actual_url] = { | 58 expected_results[actual_url] = { |
56 url: actual_url, | 59 url: actual_url, |
57 mode: expected_mode, | 60 mode: expected_mode, |
58 credentials: expected_credentials, | 61 credentials: expected_credentials, |
62 redirect: 'follow', | |
59 integrity: '', | 63 integrity: '', |
60 message: 'FontFace load (url:' + actual_url + ')' | 64 message: 'FontFace load (url:' + actual_url + ')' |
61 }; | 65 }; |
62 return frame.contentWindow.load_font(actual_url); | 66 return frame.contentWindow.load_font(actual_url); |
63 } | 67 } |
64 | 68 |
65 function script_integrity_test(frame, url, integrity, expected_integrity) { | 69 function script_integrity_test(frame, url, integrity, expected_integrity) { |
66 var actual_url = url + (++url_count); | 70 var actual_url = url + (++url_count); |
67 expected_results[actual_url] = { | 71 expected_results[actual_url] = { |
68 url: actual_url, | 72 url: actual_url, |
69 mode: 'no-cors', | 73 mode: 'no-cors', |
70 credentials: 'include', | 74 credentials: 'include', |
75 redirect: 'follow', | |
71 integrity: expected_integrity, | 76 integrity: expected_integrity, |
72 message: 'Script load (url:' + actual_url + ')' | 77 message: 'Script load (url:' + actual_url + ')' |
73 }; | 78 }; |
74 return frame.contentWindow.load_script_with_integrity(actual_url, integrity); | 79 return frame.contentWindow.load_script_with_integrity(actual_url, integrity); |
75 } | 80 } |
76 | 81 |
77 function css_integrity_test(frame, url, integrity, expected_integrity) { | 82 function css_integrity_test(frame, url, integrity, expected_integrity) { |
78 var actual_url = url + (++url_count); | 83 var actual_url = url + (++url_count); |
79 expected_results[actual_url] = { | 84 expected_results[actual_url] = { |
80 url: actual_url, | 85 url: actual_url, |
81 mode: 'no-cors', | 86 mode: 'no-cors', |
82 credentials: 'include', | 87 credentials: 'include', |
88 redirect: 'follow', | |
83 integrity: expected_integrity, | 89 integrity: expected_integrity, |
84 message: 'CSS load (url:' + actual_url + ')' | 90 message: 'CSS load (url:' + actual_url + ')' |
85 }; | 91 }; |
86 return frame.contentWindow.load_css_with_integrity(actual_url, integrity); | 92 return frame.contentWindow.load_css_with_integrity(actual_url, integrity); |
87 } | 93 } |
88 | 94 |
95 function fetch_test(frame, url, mode, credentials, | |
96 expected_mode, expected_credentials) { | |
97 var actual_url = url + (++url_count); | |
98 expected_results[actual_url] = { | |
99 mode: expected_mode, | |
100 credentials: expected_credentials, | |
101 redirect: 'follow', | |
102 integrity: '', | |
103 message: 'fetch (url:' + actual_url + ' mode:' + mode + ' credentials:' + | |
104 credentials + ')' | |
105 }; | |
106 return frame.contentWindow.fetch( | |
107 new Request(actual_url, {mode: mode, credentials: credentials})); | |
108 } | |
109 | |
110 function audio_test(frame, url, cross_origin, | |
111 expected_mode, expected_credentials) { | |
112 var actual_url = url + (++url_count); | |
113 expected_results[actual_url] = { | |
114 mode: expected_mode, | |
115 credentials: expected_credentials, | |
116 redirect: 'follow', | |
117 integrity: '', | |
118 message: 'Audio load (url:' + actual_url + ' cross_origin:' + | |
119 cross_origin + ')' | |
120 }; | |
121 return frame.contentWindow.load_audio(actual_url, cross_origin); | |
122 } | |
123 | |
89 async_test(function(t) { | 124 async_test(function(t) { |
90 var SCOPE = 'resources/fetch-request-resources-iframe.https.html'; | 125 var SCOPE = 'resources/fetch-request-resources-iframe.https.html'; |
91 var SCRIPT = 'resources/fetch-request-resources-worker.js'; | 126 var SCRIPT = 'resources/fetch-request-resources-worker.js'; |
92 var host_info = get_host_info(); | 127 var host_info = get_host_info(); |
93 var LOCAL_URL = | 128 var LOCAL_URL = |
94 host_info['HTTPS_ORIGIN'] + base_path() + 'resources/dummy?test'; | 129 host_info['HTTPS_ORIGIN'] + base_path() + 'resources/dummy?test'; |
95 var REMOTE_URL = | 130 var REMOTE_URL = |
96 host_info['HTTPS_REMOTE_ORIGIN'] + base_path() + 'resources/dummy?test'; | 131 host_info['HTTPS_REMOTE_ORIGIN'] + base_path() + 'resources/dummy?test'; |
97 var worker; | 132 var worker; |
98 var frame; | 133 var frame; |
(...skipping 16 matching lines...) Expand all Loading... | |
115 return; | 150 return; |
116 } | 151 } |
117 assert_equals( | 152 assert_equals( |
118 result.mode, expected.mode, | 153 result.mode, expected.mode, |
119 'mode of ' + expected.message + ' must be ' + | 154 'mode of ' + expected.message + ' must be ' + |
120 expected.mode + '.'); | 155 expected.mode + '.'); |
121 assert_equals( | 156 assert_equals( |
122 result.credentials, expected.credentials, | 157 result.credentials, expected.credentials, |
123 'credentials of ' + expected.message + ' must be ' + | 158 'credentials of ' + expected.message + ' must be ' + |
124 expected.credentials + '.'); | 159 expected.credentials + '.'); |
160 assert_equals( | |
161 result.redirect, expected.redirect, | |
162 'redirect mode of ' + expected.message + ' must be ' + | |
163 expected.redirect + '.'); | |
125 assert_equals( | 164 assert_equals( |
126 result.integrity, expected.integrity, | 165 result.integrity, expected.integrity, |
127 'integrity of ' + expected.message + ' must be ' + | 166 'integrity of ' + expected.message + ' must be ' + |
128 expected.integrity + '.'); | 167 expected.integrity + '.'); |
129 --url_count; | 168 --url_count; |
130 delete expected_results[result.url]; | 169 delete expected_results[result.url]; |
131 if (url_count == 0) { | 170 if (url_count == 0) { |
132 frame.remove(); | 171 frame.remove(); |
133 service_worker_unregister_and_done(t, SCOPE); | 172 service_worker_unregister_and_done(t, SCOPE); |
134 } | 173 } |
135 }); | 174 }); |
136 worker.postMessage( | 175 worker.postMessage( |
137 {port: channel.port2}, [channel.port2]); | 176 {port: channel.port2}, [channel.port2]); |
138 }); | 177 }); |
139 }) | 178 }) |
140 .then(function() { return with_iframe(SCOPE); }) | 179 .then(function() { return with_iframe(SCOPE); }) |
141 .then(function(f) { | 180 .then(function(f) { |
142 frame = f; | 181 frame = f; |
143 | 182 |
144 image_test(f, LOCAL_URL, '', 'no-cors', 'include'); | 183 image_test(f, LOCAL_URL, '', 'no-cors', 'include'); |
145 image_test(f, REMOTE_URL, '', 'no-cors', 'include'); | 184 image_test(f, REMOTE_URL, '', 'no-cors', 'include'); |
146 css_test(f, LOCAL_URL, '', 'no-cors', 'include'); | 185 css_test(f, LOCAL_URL, '', 'no-cors', 'include'); |
147 css_test(f, REMOTE_URL, '', 'no-cors', 'include'); | 186 css_test(f, REMOTE_URL, '', 'no-cors', 'include'); |
148 | 187 |
149 image_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); | 188 image_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); |
150 image_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); | 189 image_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); |
190 image_test(f, REMOTE_URL, '', 'no-cors', 'include'); | |
151 image_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); | 191 image_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); |
152 image_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); | 192 image_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); |
153 | 193 |
154 script_test(f, LOCAL_URL, '', 'no-cors', 'include'); | 194 script_test(f, LOCAL_URL, '', 'no-cors', 'include'); |
155 script_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); | 195 script_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); |
156 script_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); | 196 script_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); |
157 script_test(f, REMOTE_URL, '', 'no-cors', 'include'); | 197 script_test(f, REMOTE_URL, '', 'no-cors', 'include'); |
158 script_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); | 198 script_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); |
159 script_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); | 199 script_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); |
160 | 200 |
201 css_test(f, LOCAL_URL, '', 'no-cors', 'include'); | |
161 css_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); | 202 css_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); |
162 css_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); | 203 css_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); |
204 css_test(f, REMOTE_URL, '', 'no-cors', 'include'); | |
163 css_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); | 205 css_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); |
164 css_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); | 206 css_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); |
165 | 207 |
166 font_face_test(f, LOCAL_URL, 'cors', 'same-origin'); | 208 font_face_test(f, LOCAL_URL, 'cors', 'same-origin'); |
167 font_face_test(f, REMOTE_URL, 'cors', 'same-origin'); | 209 font_face_test(f, REMOTE_URL, 'cors', 'same-origin'); |
168 | 210 |
169 script_integrity_test(f, LOCAL_URL, ' ', ' '); | 211 script_integrity_test(f, LOCAL_URL, ' ', ' '); |
170 script_integrity_test(f, LOCAL_URL, | 212 script_integrity_test(f, LOCAL_URL, |
171 'This is not a valid integrity because it has no d ashes', | 213 'This is not a valid integrity because it has no d ashes', |
172 'This is not a valid integrity because it has no d ashes'); | 214 'This is not a valid integrity because it has no d ashes'); |
173 script_integrity_test(f, LOCAL_URL, 'sha256-', 'sha256-'); | 215 script_integrity_test(f, LOCAL_URL, 'sha256-', 'sha256-'); |
174 script_integrity_test(f, LOCAL_URL, 'sha256-foo?123', 'sha256-foo?123'); | 216 script_integrity_test(f, LOCAL_URL, 'sha256-foo?123', 'sha256-foo?123'); |
175 script_integrity_test(f, LOCAL_URL, 'sha256-foo sha384-abc ', 'sha256-fo o sha384-abc '); | 217 script_integrity_test(f, LOCAL_URL, 'sha256-foo sha384-abc ', 'sha256-fo o sha384-abc '); |
176 script_integrity_test(f, LOCAL_URL, 'sha256-foo sha256-abc', 'sha256-foo sha256-abc'); | 218 script_integrity_test(f, LOCAL_URL, 'sha256-foo sha256-abc', 'sha256-foo sha256-abc'); |
177 | 219 |
178 css_integrity_test(f, LOCAL_URL, ' ', ' '); | 220 css_integrity_test(f, LOCAL_URL, ' ', ' '); |
179 css_integrity_test(f, LOCAL_URL, | 221 css_integrity_test(f, LOCAL_URL, |
180 'This is not a valid integrity because it has no dash es', | 222 'This is not a valid integrity because it has no dash es', |
181 'This is not a valid integrity because it has no dash es'); | 223 'This is not a valid integrity because it has no dash es'); |
182 css_integrity_test(f, LOCAL_URL, 'sha256-', 'sha256-'); | 224 css_integrity_test(f, LOCAL_URL, 'sha256-', 'sha256-'); |
183 css_integrity_test(f, LOCAL_URL, 'sha256-foo?123', 'sha256-foo?123'); | 225 css_integrity_test(f, LOCAL_URL, 'sha256-foo?123', 'sha256-foo?123'); |
184 css_integrity_test(f, LOCAL_URL, 'sha256-foo sha384-abc ', 'sha256-foo s ha384-abc '); | 226 css_integrity_test(f, LOCAL_URL, 'sha256-foo sha384-abc ', 'sha256-foo s ha384-abc '); |
185 css_integrity_test(f, LOCAL_URL, 'sha256-foo sha256-abc', 'sha256-foo sh a256-abc'); | 227 css_integrity_test(f, LOCAL_URL, 'sha256-foo sha256-abc', 'sha256-foo sh a256-abc'); |
228 | |
229 fetch_test(f, LOCAL_URL, 'same-origin', 'omit', 'same-origin', 'omit'); | |
230 fetch_test(f, LOCAL_URL, 'same-origin', 'same-origin', | |
231 'same-origin', 'same-origin'); | |
232 fetch_test(f, LOCAL_URL, 'same-origin', 'include', | |
233 'same-origin', 'include'); | |
234 fetch_test(f, LOCAL_URL, 'no-cors', 'omit', 'no-cors', 'omit'); | |
235 fetch_test(f, LOCAL_URL, 'no-cors', 'same-origin', | |
236 'no-cors', 'same-origin'); | |
237 fetch_test(f, LOCAL_URL, 'no-cors', 'include', 'no-cors', 'include'); | |
238 fetch_test(f, LOCAL_URL, 'cors', 'omit', 'cors', 'omit'); | |
239 fetch_test(f, LOCAL_URL, 'cors', 'same-origin', 'cors', 'same-origin'); | |
240 fetch_test(f, LOCAL_URL, 'cors', 'include', 'cors', 'include'); | |
241 fetch_test(f, REMOTE_URL, 'no-cors', 'omit', 'no-cors', 'omit'); | |
242 fetch_test(f, REMOTE_URL, 'no-cors', 'same-origin', | |
243 'no-cors', 'same-origin'); | |
244 fetch_test(f, REMOTE_URL, 'no-cors', 'include', 'no-cors', 'include'); | |
245 fetch_test(f, REMOTE_URL, 'cors', 'omit', 'cors', 'omit'); | |
246 fetch_test(f, REMOTE_URL, 'cors', 'same-origin', 'cors', 'same-origin'); | |
247 fetch_test(f, REMOTE_URL, 'cors', 'include', 'cors', 'include'); | |
248 | |
249 audio_test(f, LOCAL_URL, '', 'no-cors', 'include'); | |
250 audio_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin'); | |
251 audio_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include'); | |
252 audio_test(f, REMOTE_URL, '', 'no-cors', 'include'); | |
253 audio_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin'); | |
254 audio_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include'); | |
186 }) | 255 }) |
187 .catch(unreached_rejection(t)); | 256 .catch(unreached_rejection(t)); |
188 }, 'Verify FetchEvent for resources.'); | 257 }, 'Verify FetchEvent for resources.'); |
189 </script> | 258 </script> |
OLD | NEW |