| OLD | NEW |
| 1 if (self.importScripts) { | 1 if (self.importScripts) { |
| 2 importScripts('/resources/testharness.js'); | 2 importScripts('/resources/testharness.js'); |
| 3 importScripts('../resources/test-helpers.js'); | 3 importScripts('../resources/test-helpers.js'); |
| 4 } | 4 } |
| 5 | 5 |
| 6 prepopulated_cache_test(simple_entries, function(cache, entries) { | 6 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 7 return cache.match('not-present-in-the-cache') | 7 return cache.match('not-present-in-the-cache') |
| 8 .then(function(result) { | 8 .then(function(result) { |
| 9 assert_equals(result, undefined, | 9 assert_equals(result, undefined, |
| 10 'Cache.match failures should resolve with undefined.'); | 10 'Cache.match failures should resolve with undefined.'); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 | 21 |
| 22 prepopulated_cache_test(simple_entries, function(cache, entries) { | 22 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 23 return cache.match(entries.a.request) | 23 return cache.match(entries.a.request) |
| 24 .then(function(result) { | 24 .then(function(result) { |
| 25 assert_response_equals(result, entries.a.response, | 25 assert_response_equals(result, entries.a.response, |
| 26 'Cache.match should match by Request.'); | 26 'Cache.match should match by Request.'); |
| 27 }); | 27 }); |
| 28 }, 'Cache.match with Request'); | 28 }, 'Cache.match with Request'); |
| 29 | 29 |
| 30 prepopulated_cache_test(simple_entries, function(cache, entries) { | 30 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 31 var alt_response = new Response('', {status: 201}); |
| 32 |
| 33 return self.caches.open('second_matching_cache') |
| 34 .then(function(cache) { |
| 35 return cache.put(entries.a.request, alt_response.clone()); |
| 36 }) |
| 37 .then(function() { |
| 38 return cache.match(entries.a.request); |
| 39 }) |
| 40 .then(function(result) { |
| 41 assert_response_equals( |
| 42 result, entries.a.response, |
| 43 'Cache.match should match the first cache.'); |
| 44 }); |
| 45 }, 'Cache.match with multiple cache hits'); |
| 46 |
| 47 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 31 return cache.match(new Request(entries.a.request.url)) | 48 return cache.match(new Request(entries.a.request.url)) |
| 32 .then(function(result) { | 49 .then(function(result) { |
| 33 assert_response_equals(result, entries.a.response, | 50 assert_response_equals(result, entries.a.response, |
| 34 'Cache.match should match by Request.'); | 51 'Cache.match should match by Request.'); |
| 35 }); | 52 }); |
| 36 }, 'Cache.match with new Request'); | 53 }, 'Cache.match with new Request'); |
| 37 | 54 |
| 38 prepopulated_cache_test(simple_entries, function(cache, entries) { | 55 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 39 return cache.match(new Request(entries.a.request.url, {method: 'HEAD'})) | 56 return cache.match(new Request(entries.a.request.url, {method: 'HEAD'})) |
| 40 .then(function(result) { | 57 .then(function(result) { |
| (...skipping 28 matching lines...) Expand all Loading... |
| 69 [ | 86 [ |
| 70 entries.a.response, | 87 entries.a.response, |
| 71 entries.a_with_query.response | 88 entries.a_with_query.response |
| 72 ], | 89 ], |
| 73 'Cache.match with ignoreSearch should ignore the ' + | 90 'Cache.match with ignoreSearch should ignore the ' + |
| 74 'search parameters of request.'); | 91 'search parameters of request.'); |
| 75 }); | 92 }); |
| 76 }, | 93 }, |
| 77 'Cache.match with ignoreSearch option (request with search parameter)'); | 94 'Cache.match with ignoreSearch option (request with search parameter)'); |
| 78 | 95 |
| 96 cache_test(function(cache) { |
| 97 var request = new Request('http://example.com/'); |
| 98 var head_request = new Request('http://example.com/', {method: 'HEAD'}); |
| 99 var response = new Response('foo'); |
| 100 return cache.put(request.clone(), response.clone()) |
| 101 .then(function() { |
| 102 return cache.match(head_request.clone()); |
| 103 }) |
| 104 .then(function(result) { |
| 105 assert_equals( |
| 106 result, undefined, |
| 107 'Cache.match should resolve as undefined with a ' + |
| 108 'mismatched method.'); |
| 109 return cache.match(head_request.clone(), |
| 110 {ignoreMethod: true}); |
| 111 }) |
| 112 .then(function(result) { |
| 113 assert_response_equals( |
| 114 result, response, |
| 115 'Cache.match with ignoreMethod should ignore the ' + |
| 116 'method of request.'); |
| 117 }); |
| 118 }, 'Cache.match supports ignoreMethod'); |
| 119 |
| 120 cache_test(function(cache) { |
| 121 var vary_request = new Request('http://example.com/c', |
| 122 {headers: {'Cookies': 'is-for-cookie'}}); |
| 123 var vary_response = new Response('', {headers: {'Vary': 'Cookies'}}); |
| 124 var mismatched_vary_request = new Request('http://example.com/c'); |
| 125 |
| 126 return cache.put(vary_request.clone(), vary_response.clone()) |
| 127 .then(function() { |
| 128 return cache.match(mismatched_vary_request.clone()); |
| 129 }) |
| 130 .then(function(result) { |
| 131 assert_equals( |
| 132 result, undefined, |
| 133 'Cache.match should resolve as undefined with a ' + |
| 134 'mismatched vary.'); |
| 135 return cache.match(mismatched_vary_request.clone(), |
| 136 {ignoreVary: true}); |
| 137 }) |
| 138 .then(function(result) { |
| 139 assert_response_equals( |
| 140 result, vary_response, |
| 141 'Cache.match with ignoreVary should ignore the ' + |
| 142 'vary of request.'); |
| 143 }); |
| 144 }, 'Cache.match supports ignoreVary'); |
| 145 |
| 79 prepopulated_cache_test(simple_entries, function(cache, entries) { | 146 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 80 return cache.match(entries.cat.request.url + '#mouse') | 147 return cache.match(entries.cat.request.url + '#mouse') |
| 81 .then(function(result) { | 148 .then(function(result) { |
| 82 assert_response_equals(result, entries.cat.response, | 149 assert_response_equals(result, entries.cat.response, |
| 83 'Cache.match should ignore URL fragment.'); | 150 'Cache.match should ignore URL fragment.'); |
| 84 }); | 151 }); |
| 85 }, 'Cache.match with URL containing fragment'); | 152 }, 'Cache.match with URL containing fragment'); |
| 86 | 153 |
| 87 prepopulated_cache_test(simple_entries, function(cache, entries) { | 154 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 88 return cache.match('http') | 155 return cache.match('http') |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 .then(function(result) { | 226 .then(function(result) { |
| 160 return result.text(); | 227 return result.text(); |
| 161 }) | 228 }) |
| 162 .then(function(body_text) { | 229 .then(function(body_text) { |
| 163 assert_equals(body_text, 'a simple text file\n', | 230 assert_equals(body_text, 'a simple text file\n', |
| 164 'Cache.match should return a Response object with a ' + | 231 'Cache.match should return a Response object with a ' + |
| 165 'valid body each time it is called.'); | 232 'valid body each time it is called.'); |
| 166 }); | 233 }); |
| 167 }, 'Cache.match invoked multiple times for the same Request/Response'); | 234 }, 'Cache.match invoked multiple times for the same Request/Response'); |
| 168 | 235 |
| 236 cache_test(function(cache) { |
| 237 var request_url = new URL('../resources/simple.txt', location.href).href; |
| 238 return fetch(request_url) |
| 239 .then(function(fetch_result) { |
| 240 return cache.put(new Request(request_url), fetch_result); |
| 241 }) |
| 242 .then(function() { |
| 243 return cache.match(request_url); |
| 244 }) |
| 245 .then(function(result) { |
| 246 return result.blob(); |
| 247 }) |
| 248 .then(function(blob) { |
| 249 var sliced = blob.slice(2,8); |
| 250 |
| 251 return new Promise(function (resolve, reject) { |
| 252 var reader = new FileReader(); |
| 253 reader.onloadend = function(event) { |
| 254 resolve(event.target.result); |
| 255 }; |
| 256 reader.readAsText(sliced); |
| 257 }); |
| 258 }) |
| 259 .then(function(text) { |
| 260 assert_equals(text, 'simple', |
| 261 'A Response blob returned by Cache.match should be ' + |
| 262 'sliceable.' ); |
| 263 }); |
| 264 }, 'Cache.match blob should be sliceable'); |
| 265 |
| 169 prepopulated_cache_test(simple_entries, function(cache, entries) { | 266 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| 170 var request = new Request(entries.a.request.clone(), {method: 'POST'}); | 267 var request = new Request(entries.a.request.clone(), {method: 'POST'}); |
| 171 return cache.match(request) | 268 return cache.match(request) |
| 172 .then(function(result) { | 269 .then(function(result) { |
| 173 assert_equals(result, undefined, | 270 assert_equals(result, undefined, |
| 174 'Cache.match should not find a match'); | 271 'Cache.match should not find a match'); |
| 175 }); | 272 }); |
| 176 }, 'Cache.match with POST Request'); | 273 }, 'Cache.match with POST Request'); |
| 177 | 274 |
| 178 prepopulated_cache_test(simple_entries, function(cache, entries) { | 275 prepopulated_cache_test(simple_entries, function(cache, entries) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 }) | 308 }) |
| 212 .then(function(r) { | 309 .then(function(r) { |
| 213 // Make sure the original response is not GC'd. | 310 // Make sure the original response is not GC'd. |
| 214 response = r; | 311 response = r; |
| 215 // Return only the clone. We purposefully test that the other | 312 // Return only the clone. We purposefully test that the other |
| 216 // half of the clone does not need to be read here. | 313 // half of the clone does not need to be read here. |
| 217 return response.clone().text(); | 314 return response.clone().text(); |
| 218 }) | 315 }) |
| 219 .then(function(text) { | 316 .then(function(text) { |
| 220 assert_equals(text, data.toString(), 'cloned body text can be read cor
rectly'); | 317 assert_equals(text, data.toString(), 'cloned body text can be read cor
rectly'); |
| 221 }) | 318 }); |
| 222 }, 'Cache produces large Responses that can be cloned and read correctly.'); | 319 }, 'Cache produces large Responses that can be cloned and read correctly.'); |
| 223 | 320 |
| 224 done(); | 321 done(); |
| OLD | NEW |