| <!DOCTYPE html> |
| <title>register on a secure page after redirect from an non-secure url</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/get-host-info.sub.js"></script> |
| <script src="resources/test-helpers.sub.js"></script> |
| <body> |
| <script> |
| 'use strict'; |
| |
| var host_info = get_host_info(); |
| |
| // Loads a non-secure url in a new window, which redirects to |target_url|. |
| // That page then registers a service worker, and messages back with the result. |
| // Returns a promise that resolves with the result. |
| function redirect_and_register(target_url) { |
| var redirect_url = host_info.HTTP_REMOTE_ORIGIN + base_path() + |
| 'resources/redirect.py?Redirect='; |
| var child = window.open(redirect_url + encodeURIComponent(target_url)); |
| return new Promise(resolve => { |
| window.addEventListener('message', e => resolve(e.data)); |
| }) |
| .then(function(result) { |
| child.close(); |
| return result; |
| }); |
| } |
| |
| promise_test(function(t) { |
| var target_url = window.location.origin + base_path() + |
| 'resources/http-to-https-redirect-and-register-iframe.html'; |
| |
| return redirect_and_register(target_url) |
| .then(result => { |
| assert_equals(result, 'OK'); |
| }); |
| }, 'register on a secure page after redirect from an non-secure url'); |
| |
| promise_test(function(t) { |
| var target_url = host_info.HTTP_REMOTE_ORIGIN + base_path() + |
| 'resources/http-to-https-redirect-and-register-iframe.html'; |
| |
| return redirect_and_register(target_url) |
| .then(result => { |
| assert_equals(result, 'FAIL: navigator.serviceWorker is undefined'); |
| }); |
| }, 'register on a non-secure page after redirect from an non-secure url'); |
| </script> |
| </body> |