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..029e8a84141f49ece0be78b30ed7ca86a032a3a9 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/claim-with-redirect.html |
| @@ -0,0 +1,64 @@ |
| +<!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', function(e) { |
|
nhiroki
2016/08/19 14:32:53
Optional: These days we use arrow-functions in lay
shimazu
2016/08/22 02:38:09
Done.
|
| + if (waiting_resolver !== undefined) { |
| + waiting_resolver(e.data); |
| + } |
| + }); |
| + |
| +function assert_with_iframe(url, message) { |
| + return new Promise(function(resolve) { |
| + waiting_resolver = resolve; |
| + with_iframe(url); |
|
nhiroki
2016/08/19 14:32:53
Should we remove frames before the test finishes?
shimazu
2016/08/22 02:38:09
with_iframe removes its own frame after all tests
|
| + }) |
| + .then(function(data) { |
| + assert_equals(data.message, message); |
| + }); |
| +} |
| + |
| +promise_test(function(t) { |
|
nhiroki
2016/08/19 14:32:53
I think this test wouldn't be so descriptive. Can
shimazu
2016/08/22 02:38:09
Done.
|
| + return assert_with_iframe(REGISTER_IFRAME_URL, 'registered') |
| + .then(function() { |
| + return assert_with_iframe(REDIRECT_IFRAME_URL, 'redirected'); |
|
nhiroki
2016/08/19 14:32:53
Can you explain how this redirect case works? As f
nhiroki
2016/08/19 14:40:18
OK, I understand that REDIRECT_IFRAME_URL points t
shimazu
2016/08/22 02:38:09
Acknowledged.
|
| + }) |
| + .then(function() { |
| + return assert_with_iframe(UPDATE_IFRAME_URL, 'updated'); |
| + }) |
| + .then(function() { |
| + return assert_with_iframe(UNREGISTER_IFRAME_URL, 'unregistered'); |
| + }); |
| + }, 'Claim works after redirection to another origin'); |
| + |
| +</script> |
| +</body> |