OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <title>Service Worker: FetchEvent for css image</title> |
| 3 <script src="/resources/testharness.js"></script> |
| 4 <script src="/resources/testharnessreport.js"></script> |
| 5 <script src="resources/get-host-info.sub.js"></script> |
| 6 <script src="resources/test-helpers.sub.js?pipe=sub"></script> |
| 7 <script> |
| 8 var SCOPE = 'resources/fetch-request-resources-iframe.https.html'; |
| 9 var SCRIPT = 'resources/fetch-request-resources-worker.js'; |
| 10 var host_info = get_host_info(); |
| 11 var LOCAL_URL = |
| 12 host_info['HTTPS_ORIGIN'] + base_path() + 'resources/dummy?test'; |
| 13 var REMOTE_URL = |
| 14 host_info['HTTPS_REMOTE_ORIGIN'] + base_path() + 'resources/dummy?test'; |
| 15 |
| 16 function css_image_test(expected_results, frame, url, type, |
| 17 expected_mode, expected_credentials) { |
| 18 expected_results[url] = { |
| 19 url: url, |
| 20 mode: expected_mode, |
| 21 credentials: expected_credentials, |
| 22 message: 'CSSImage load (url:' + url + ' type:' + type + ')' |
| 23 }; |
| 24 return frame.contentWindow.load_css_image(url, type); |
| 25 } |
| 26 |
| 27 function css_image_set_test(expected_results, frame, url, type, |
| 28 expected_mode, expected_credentials) { |
| 29 expected_results[url] = { |
| 30 url: url, |
| 31 mode: expected_mode, |
| 32 credentials: expected_credentials, |
| 33 message: 'CSSImageSet load (url:' + url + ' type:' + type + ')' |
| 34 }; |
| 35 return frame.contentWindow.load_css_image_set(url, type); |
| 36 } |
| 37 |
| 38 function create_message_promise(t, expected_results, frame, |
| 39 worker, test_count, scope) { |
| 40 return new Promise(function(resolve) { |
| 41 var channel = new MessageChannel(); |
| 42 channel.port1.onmessage = t.step_func(function(msg) { |
| 43 if (msg.data.ready) { |
| 44 resolve(); |
| 45 return; |
| 46 } |
| 47 var result = msg.data; |
| 48 var expected = expected_results[result.url]; |
| 49 if (!expected) { |
| 50 return; |
| 51 } |
| 52 assert_equals( |
| 53 result.mode, expected.mode, |
| 54 'mode of ' + expected.message + ' must be ' + |
| 55 expected.mode + '.'); |
| 56 assert_equals( |
| 57 result.credentials, expected.credentials, |
| 58 'credentials of ' + expected.message + ' must be ' + |
| 59 expected.credentials + '.'); |
| 60 --test_count; |
| 61 delete expected_results[result.url]; |
| 62 if (test_count == 0) { |
| 63 frame.remove(); |
| 64 service_worker_unregister_and_done(t, scope); |
| 65 } |
| 66 }); |
| 67 worker.postMessage( |
| 68 {port: channel.port2}, [channel.port2]); |
| 69 }); |
| 70 } |
| 71 |
| 72 async_test(function(t) { |
| 73 var scope = SCOPE + "?img=backgroundImage"; |
| 74 var test_count = 2; |
| 75 var expected_results = {}; |
| 76 var worker; |
| 77 var frame; |
| 78 service_worker_unregister_and_register(t, SCRIPT, scope) |
| 79 .then(function(registration) { |
| 80 worker = registration.installing; |
| 81 return wait_for_state(t, worker, 'activated'); |
| 82 }) |
| 83 .then(function() { return with_iframe(scope); }) |
| 84 .then(function(f) { |
| 85 frame = f; |
| 86 return create_message_promise(t, expected_results, frame, |
| 87 worker, test_count, scope); |
| 88 }) |
| 89 .then(function() { |
| 90 css_image_test(expected_results, frame, LOCAL_URL + Date.now(), |
| 91 'backgroundImage', 'no-cors', 'include'); |
| 92 css_image_test(expected_results, frame, REMOTE_URL + Date.now(), |
| 93 'backgroundImage', 'no-cors', 'include'); |
| 94 }) |
| 95 .catch(unreached_rejection(t)); |
| 96 }, 'Verify FetchEvent for css image (backgroundImage).'); |
| 97 |
| 98 async_test(function(t) { |
| 99 var scope = SCOPE + "?img=shapeOutside"; |
| 100 var test_count = 2; |
| 101 var expected_results = {}; |
| 102 var worker; |
| 103 var frame; |
| 104 service_worker_unregister_and_register(t, SCRIPT, scope) |
| 105 .then(function(registration) { |
| 106 worker = registration.installing; |
| 107 return wait_for_state(t, worker, 'activated'); |
| 108 }) |
| 109 .then(function() { return with_iframe(scope); }) |
| 110 .then(function(f) { |
| 111 frame = f; |
| 112 return create_message_promise(t, expected_results, frame, |
| 113 worker, test_count, scope); |
| 114 }) |
| 115 .then(function() { |
| 116 css_image_test(expected_results, frame, LOCAL_URL + Date.now(), |
| 117 'shapeOutside', 'cors', 'same-origin'); |
| 118 css_image_test(expected_results, frame, REMOTE_URL + Date.now(), |
| 119 'shapeOutside', 'cors', 'same-origin'); |
| 120 }) |
| 121 .catch(unreached_rejection(t)); |
| 122 }, 'Verify FetchEvent for css image (shapeOutside).'); |
| 123 |
| 124 async_test(function(t) { |
| 125 var scope = SCOPE + "?img_set=backgroundImage"; |
| 126 var test_count = 2; |
| 127 var expected_results = {}; |
| 128 var worker; |
| 129 var frame; |
| 130 service_worker_unregister_and_register(t, SCRIPT, scope) |
| 131 .then(function(registration) { |
| 132 worker = registration.installing; |
| 133 return wait_for_state(t, worker, 'activated'); |
| 134 }) |
| 135 .then(function() { return with_iframe(scope); }) |
| 136 .then(function(f) { |
| 137 frame = f; |
| 138 return create_message_promise(t, expected_results, frame, |
| 139 worker, test_count, scope); |
| 140 }) |
| 141 .then(function() { |
| 142 css_image_set_test(expected_results, frame, LOCAL_URL + Date.now(), |
| 143 'backgroundImage', 'no-cors', 'include'); |
| 144 css_image_set_test(expected_results, frame, REMOTE_URL + Date.now(), |
| 145 'backgroundImage', 'no-cors', 'include'); |
| 146 }) |
| 147 .catch(unreached_rejection(t)); |
| 148 }, 'Verify FetchEvent for css image-set (backgroundImage).'); |
| 149 |
| 150 async_test(function(t) { |
| 151 var scope = SCOPE + "?img_set=shapeOutside"; |
| 152 var test_count = 2; |
| 153 var expected_results = {}; |
| 154 var worker; |
| 155 var frame; |
| 156 service_worker_unregister_and_register(t, SCRIPT, scope) |
| 157 .then(function(registration) { |
| 158 worker = registration.installing; |
| 159 return wait_for_state(t, worker, 'activated'); |
| 160 }) |
| 161 .then(function() { return with_iframe(scope); }) |
| 162 .then(function(f) { |
| 163 frame = f; |
| 164 return create_message_promise(t, expected_results, frame, |
| 165 worker, test_count, scope); |
| 166 }) |
| 167 .then(function() { |
| 168 css_image_set_test(expected_results, frame, LOCAL_URL + Date.now(), |
| 169 'shapeOutside', 'cors', 'same-origin'); |
| 170 css_image_set_test(expected_results, frame, REMOTE_URL + Date.now(), |
| 171 'shapeOutside', 'cors', 'same-origin'); |
| 172 }) |
| 173 .catch(unreached_rejection(t)); |
| 174 }, 'Verify FetchEvent for css image-set (shapeOutside).'); |
| 175 |
| 176 </script> |
OLD | NEW |