| <!DOCTYPE html> |
| <script src="/common/get-host-info.sub.js"></script> |
| <script src="test-helpers.sub.js?pipe=sub"></script> |
| <script> |
| var params = get_query_params(location.href); |
| var SCOPE = 'fetch-mixed-content-iframe-inscope-to-' + params['target'] + '.html'; |
| var URL = 'fetch-rewrite-worker.js'; |
| var host_info = get_host_info(); |
| |
| window.addEventListener('message', on_message, false); |
| |
| navigator.serviceWorker.getRegistration(SCOPE) |
| .then(function(registration) { |
| if (registration) |
| return registration.unregister(); |
| }) |
| .then(function() { |
| return navigator.serviceWorker.register(URL, {scope: SCOPE}); |
| }) |
| .then(function(registration) { |
| return new Promise(function(resolve) { |
| registration.addEventListener('updatefound', function() { |
| resolve(registration.installing); |
| }); |
| }); |
| }) |
| .then(function(worker) { |
| worker.addEventListener('statechange', on_state_change); |
| }) |
| .catch(function(reason) { |
| window.parent.postMessage({results: 'FAILURE: ' + reason.message}, |
| host_info['HTTPS_ORIGIN']); |
| }); |
| |
| function on_state_change(event) { |
| if (event.target.state != 'activated') |
| return; |
| var frame = document.createElement('iframe'); |
| frame.src = SCOPE; |
| document.body.appendChild(frame); |
| } |
| |
| function on_message(e) { |
| navigator.serviceWorker.getRegistration(SCOPE) |
| .then(function(registration) { |
| if (registration) |
| return registration.unregister(); |
| }) |
| .then(function() { |
| window.parent.postMessage(e.data, host_info['HTTPS_ORIGIN']); |
| }) |
| .catch(function(reason) { |
| window.parent.postMessage({results: 'FAILURE: ' + reason.message}, |
| host_info['HTTPS_ORIGIN']); |
| }); |
| } |
| |
| function get_query_params(url) { |
| var search = (new URL(url)).search; |
| if (!search) { |
| return {}; |
| } |
| var ret = {}; |
| var params = search.substring(1).split('&'); |
| params.forEach(function(param) { |
| var element = param.split('='); |
| ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]); |
| }); |
| return ret; |
| } |
| </script> |