| // META: title=Request signals & the cache API |
| // META: global=window,worker |
| |
| promise_test(async () => { |
| await caches.delete('test'); |
| const controller = new AbortController(); |
| const signal = controller.signal; |
| const request = new Request('../resources/data.json', { signal }); |
| |
| const cache = await caches.open('test'); |
| await cache.put(request, new Response('')); |
| |
| const requests = await cache.keys(); |
| |
| assert_equals(requests.length, 1, 'Ensuring cleanup worked'); |
| |
| const [cachedRequest] = requests; |
| |
| controller.abort(); |
| |
| assert_false(cachedRequest.signal.aborted, "Request from cache shouldn't be aborted"); |
| |
| const data = await fetch(cachedRequest).then(r => r.json()); |
| assert_equals(data.key, 'value', 'Fetch fully completes'); |
| }, "Signals are not stored in the cache API"); |
| |
| promise_test(async () => { |
| await caches.delete('test'); |
| const controller = new AbortController(); |
| const signal = controller.signal; |
| const request = new Request('../resources/data.json', { signal }); |
| controller.abort(); |
| |
| const cache = await caches.open('test'); |
| await cache.put(request, new Response('')); |
| |
| const requests = await cache.keys(); |
| |
| assert_equals(requests.length, 1, 'Ensuring cleanup worked'); |
| |
| const [cachedRequest] = requests; |
| |
| assert_false(cachedRequest.signal.aborted, "Request from cache shouldn't be aborted"); |
| |
| const data = await fetch(cachedRequest).then(r => r.json()); |
| assert_equals(data.key, 'value', 'Fetch fully completes'); |
| }, "Signals are not stored in the cache API, even if they're already aborted"); |