| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Controlled frame for Cache API test with credentials</title> |
| <script> |
| |
| function xhr(url, username, password) { |
| return new Promise(function(resolve, reject) { |
| var xhr = new XMLHttpRequest(), async = true; |
| xhr.open('GET', url, async, username, password); |
| xhr.send(); |
| xhr.onreadystatechange = function() { |
| if (xhr.readyState !== XMLHttpRequest.DONE) |
| return; |
| if (xhr.status === 200) { |
| resolve(xhr.responseText); |
| } else { |
| reject(new Error(xhr.statusText)); |
| } |
| }; |
| }); |
| } |
| |
| window.onmessage = function(e) { |
| Promise.all(e.data.map(function(item) { |
| return xhr(item.name, item.username, item.password); |
| })) |
| .then(function() { |
| navigator.serviceWorker.controller.postMessage('keys'); |
| navigator.serviceWorker.onmessage = function(e) { |
| window.parent.postMessage(e.data, '*'); |
| }; |
| }); |
| }; |
| |
| </script> |
| <body> |
| Hello? Yes, this is iframe. |
| </body> |