Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/clients-get-cross-origin.https.html |
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/clients-get-cross-origin.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/clients-get-cross-origin.https.html |
| index d5622054de8280e5b6ff2a0251de42c94ee49bd8..41b416b8fbb0ccacf4b27b6ce4ee2f55cc5e1a0a 100644 |
| --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/clients-get-cross-origin.https.html |
| +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/clients-get-cross-origin.https.html |
| @@ -7,36 +7,72 @@ |
| <script> |
| var host_info = get_host_info(); |
| -var scope = 'resources/blank.html?clients-get'; |
| -var t = async_test('Test Clients.get() cross origin'); |
| +var scope = 'resources/clients-get-frame.html'; |
| var other_origin_iframe = host_info['HTTPS_REMOTE_ORIGIN'] + base_path() + |
| - 'resources/clients-get-other-origin.html'; |
| -var myOriginClientId; |
| -t.step(function() { |
| - service_worker_unregister_and_register( |
| + 'resources/clients-get-cross-origin-frame.html'; |
|
falken
2017/03/29 01:43:58
// The ID of a client from the same origin as us.
mike3
2017/03/29 15:15:23
Acknowledged.
|
| +var my_origin_client_id; |
| +// This test asserts the behavior of the Client API in cases where the client |
| +// belongs to a foreign origin. It does this by creating an iframe with a |
| +// foreign origin which connects to a server worker in the current origin. |
| +promise_test(function(t) { |
| + return service_worker_unregister_and_register( |
| t, 'resources/clients-get-worker.js', scope) |
| .then(function(registration) { |
| + add_completion_callback(function() { registration.unregister(); }); |
| return wait_for_state(t, registration.installing, 'activated'); |
| }) |
| .then(function() { |
| return with_iframe(scope); |
|
falken
2017/03/29 01:43:58
// Create a same-origin client and use it to popul
mike3
2017/03/29 15:15:23
Acknowledged.
|
| }) |
| .then(function(frame1) { |
| - myOriginClientId = frame1.contentDocument.body.textContent; |
| + add_completion_callback(function() { frame1.remove(); }); |
| + return new Promise(function(resolve, reject) { |
| + function get_client_id(e) { |
| + window.removeEventListener('message', get_client_id); |
| + resolve(e.data.clientId); |
| + } |
| + window.addEventListener('message', get_client_id, false); |
| + }); |
| + }) |
| + .then(function(client_id) { |
| + my_origin_client_id = client_id; |
|
falken
2017/03/29 01:43:58
// Create a cross-origin client. We'll communicate
mike3
2017/03/29 15:15:23
Acknowledged.
|
| return with_iframe(other_origin_iframe); |
| }) |
| .then(function(frame2) { |
| - window.addEventListener('message', on_message_other_origin, false); |
| - frame2.contentWindow.postMessage( |
| - {clientId: myOriginClientId, |
| - message: 'get_client_id'}, |
| - host_info['HTTPS_REMOTE_ORIGIN']); |
| + add_completion_callback(function() { frame2.remove(); }); |
|
falken
2017/03/29 01:43:58
I may be missing something, but it looks like the
mike3
2017/03/29 15:15:23
Ah yeah; you're right. This came from an equivalen
|
| + var requestEventOrigin = new Promise(function(resolve) { |
|
falken
2017/03/29 01:43:58
request_event_origin
mike3
2017/03/29 15:15:23
Acknowledged.
|
| + frame2.contentWindow.postMessage( |
| + {type: 'getEventOrigin'}, |
| + host_info['HTTPS_REMOTE_ORIGIN'] |
| + ); |
| + window.addEventListener('message', function(e) { |
| + if (e.data && e.data.type === 'eventOrigin') { |
| + resolve(e.data.value); |
| + } |
| + }); |
| + }); |
|
falken
2017/03/29 01:43:58
// Post the 'getClientId' message to the cross-ori
mike3
2017/03/29 15:15:23
Acknowledged.
|
| + var requestClientId = new Promise(function(resolve) { |
|
falken
2017/03/29 01:43:58
nit: snake_case
mike3
2017/03/29 15:15:23
Acknowledged.
|
| + frame2.contentWindow.postMessage( |
| + {clientId: my_origin_client_id, type: 'getClientId'}, |
| + host_info['HTTPS_REMOTE_ORIGIN'] |
| + ); |
| + window.addEventListener('message', function(e) { |
| + if (e.data && e.data.type === 'clientId') { |
| + resolve(e.data.value); |
| + } |
| + }); |
| + }); |
| + return Promise.all([requestEventOrigin, requestClientId]); |
| }) |
| - .catch(unreached_rejection(t)); |
| - }); |
| - |
| -function on_message_other_origin(e) { |
| - assert_equals(e.data.result, undefined); |
| - t.done(); |
| -} |
| + .then(function(message) { |
| + var eventOrigin = message[0]; |
| + var clientId = message[1]; |
|
falken
2017/03/29 01:43:58
nit: snake_case
mike3
2017/03/29 15:15:23
Acknowledged.
|
| + assert_equals( |
| + eventOrigin, |
| + host_info['HTTPS_ORIGIN'], |
| + 'iframe postMessage event origin' |
| + ); |
| + assert_equals(clientId, undefined, 'iframe client ID'); |
| + }); |
| + }, 'Test Clients.get() cross origin'); |
| </script> |