Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/claim-with-redirect.html |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/claim-with-redirect.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/claim-with-redirect.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..40fdb19c74e4f9686dd9c0ace1524ae7db836686 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/claim-with-redirect.html |
| @@ -0,0 +1,67 @@ |
| +<!DOCTYPE html> |
| +<title>Service Worker: Claim() when update happens after redirect</title> |
| +<script src="../resources/get-host-info.js"></script> |
| +<script src="../resources/testharness.js"></script> |
| +<script src="../resources/testharnessreport.js"></script> |
| +<script src="resources/test-helpers.js"></script> |
| +<body> |
| +<script> |
| +var host_info = get_host_info(); |
| +var BASE_URL = host_info['HTTP_ORIGIN'] + base_path(); |
| +var OTHER_BASE_URL = host_info['HTTP_REMOTE_ORIGIN'] + base_path(); |
| + |
| +var WORKER_URL = OTHER_BASE_URL + 'resources/update-claim-worker.php' |
| +var SCOPE_URL = OTHER_BASE_URL + 'resources/redirect.php' |
| +var OTHER_IFRAME_URL = OTHER_BASE_URL + |
| + 'resources/claim-with-redirect-iframe.html'; |
| + |
| +// Different origin from the registration |
| +var REDIRECT_TO_URL = BASE_URL + |
| + 'resources/claim-with-redirect-iframe.html?redirected'; |
| + |
| +var REGISTER_IFRAME_URL = OTHER_IFRAME_URL + '?register=' + |
| + encodeURIComponent(WORKER_URL) + '&' + |
| + 'scope=' + encodeURIComponent(SCOPE_URL); |
| +var REDIRECT_IFRAME_URL = SCOPE_URL + '?Redirect=' + |
| + encodeURIComponent(REDIRECT_TO_URL); |
| +var UPDATE_IFRAME_URL = OTHER_IFRAME_URL + '?update=' + |
| + encodeURIComponent(SCOPE_URL); |
| +var UNREGISTER_IFRAME_URL = OTHER_IFRAME_URL + '?unregister=' + |
| + encodeURIComponent(SCOPE_URL); |
| + |
| +var waiting_resolver = undefined; |
| + |
| +addEventListener('message', e => { |
| + if (waiting_resolver !== undefined) { |
| + waiting_resolver(e.data); |
| + } |
| + }); |
| + |
| +function assert_with_iframe(url, message) { |
|
nhiroki
2016/08/22 06:35:49
s/message/expected_message/ for readablity
shimazu
2016/08/22 09:29:40
Done.
|
| + return new Promise(resolve => { |
| + waiting_resolver = resolve; |
| + with_iframe(url); |
| + }) |
| + .then(data => { |
|
nhiroki
2016/08/22 06:35:49
It looks a bit strange that "})" is aligned with "
shimazu
2016/08/22 09:29:40
Done.
|
| + assert_equals(data.message, message); |
| + }); |
| +} |
| + |
| +// This test checks behavior when browser got a redirect header from in-scope |
| +// page and navigated to out-of-scope page which has a different origin from any |
| +// registrations. |
| +promise_test(t => { |
| + return assert_with_iframe(REGISTER_IFRAME_URL, 'registered') |
| + .then(() => { |
| + return assert_with_iframe(REDIRECT_IFRAME_URL, 'redirected'); |
| + }) |
| + .then(() => { |
| + return assert_with_iframe(UPDATE_IFRAME_URL, 'updated'); |
| + }) |
| + .then(() => { |
| + return assert_with_iframe(UNREGISTER_IFRAME_URL, 'unregistered'); |
| + }); |
| + }, 'Claim works after redirection to another origin'); |
| + |
| +</script> |
| +</body> |