| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Cache Storage: Verify credentials are respected by Cache operations</title> |
| <link rel="help" href="https://w3c.github.io/ServiceWorker/#cache-storage"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="./../service-worker/resources/test-helpers.sub.js"></script> |
| <style>iframe { display: none; }</style> |
| <script> |
| |
| var worker = "./resources/credentials-worker.js"; |
| var scope = "./resources/credentials-iframe.html"; |
| promise_test(function(t) { |
| return self.caches.delete('credentials') |
| .then(function() { |
| return service_worker_unregister_and_register(t, worker, scope) |
| }) |
| .then(function(reg) { |
| return wait_for_state(t, reg.installing, 'activated'); |
| }) |
| .then(function() { |
| return with_iframe(scope); |
| }) |
| .then(function(frame) { |
| frame.contentWindow.postMessage([ |
| {name: 'file.txt', username: 'aa', password: 'bb'}, |
| {name: 'file.txt', username: 'cc', password: 'dd'}, |
| {name: 'file.txt'} |
| ], '*'); |
| return new Promise(function(resolve, reject) { |
| window.onmessage = t.step_func(function(e) { |
| resolve(e.data); |
| }); |
| }); |
| }) |
| .then(function(data) { |
| assert_equals(data.length, 3, 'three entries should be present'); |
| assert_equals(data.filter(function(url) { return /@/.test(url); }).length, 2, |
| 'two entries should contain credentials'); |
| assert_true(data.some(function(url) { return /aa:bb@/.test(url); }), |
| 'entry with credentials aa:bb should be present'); |
| assert_true(data.some(function(url) { return /cc:dd@/.test(url); }), |
| 'entry with credentials cc:dd should be present'); |
| }); |
| }, "Cache API matching includes credentials"); |
| </script> |