Chromium Code Reviews| 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 |