Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(512)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-msgport-to-client.html

Issue 2426723004: ServiceWorker: Modernize postMessage tests for cleanup (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>Service Worker: postMessage to Client</title> 2 <title>Service Worker: postMessage to Client</title>
3 <script src="../resources/testharness.js"></script> 3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script> 4 <script src="../resources/testharnessreport.js"></script>
5 <script src="resources/test-helpers.js"></script> 5 <script src="resources/test-helpers.js"></script>
6 <script> 6 <script>
7 var t = async_test('postMessage MessagePorts from ServiceWorker to Client'); 7
8 t.step(function() { 8 promise_test(t => {
9 var scope = 'resources/blank.html' 9 var script = 'resources/postmessage-msgport-to-client-worker.js';
10 service_worker_unregister_and_register( 10 var scope = 'resources/blank.html';
11 t, 'resources/postmessage-msgport-to-client-worker.js', scope) 11 var port;
12 .then(function(registration) { 12
13 return service_worker_unregister_and_register(t, script, scope)
14 .then(registration => {
15 add_completion_callback(() => registration.unregister());
13 return wait_for_state(t, registration.installing, 'activated'); 16 return wait_for_state(t, registration.installing, 'activated');
14 }) 17 })
15 .then(function() { return with_iframe(scope); }) 18 .then(() => with_iframe(scope))
16 .then(function(frame) { 19 .then(frame => {
17 var w = frame.contentWindow; 20 add_completion_callback(() => frame.remove());
shimazu 2016/10/19 01:18:58 It's not necessary to remove |frame| explicitly be
nhiroki 2016/10/19 04:00:50 Done.
18 w.navigator.serviceWorker.onmessage = t.step_func(onMessage); 21 return new Promise(resolve => {
19 w.navigator.serviceWorker.controller.postMessage('ping'); 22 var w = frame.contentWindow;
23 w.navigator.serviceWorker.onmessage = resolve;
24 w.navigator.serviceWorker.controller.postMessage('ping');
25 });
20 }) 26 })
21 .catch(unreached_rejection(t)); 27 .then(e => {
28 port = e.data.port;
falken 2016/10/19 01:55:24 Same here, this can just be e.ports[0]?
nhiroki 2016/10/19 04:00:50 Done.
29 port.postMessage({value: 1});
30 port.postMessage({value: 2});
31 port.postMessage({done: true});
32 return new Promise(resolve => { port.onmessage = resolve; });
33 })
34 .then(e => {
35 assert_equals(e.data.ack, 'Acking value: 1');
36 return new Promise(resolve => { port.onmessage = resolve; });
37 })
38 .then(e => {
39 assert_equals(e.data.ack, 'Acking value: 2');
40 return new Promise(resolve => { port.onmessage = resolve; });
41 })
42 .then(e => { assert_true(e.data.done); });
43 }, 'postMessage MessagePorts from ServiceWorker to Client');
22 44
23 var result = [];
24 var expected = [
25 'Acking value: 1',
26 'Acking value: 2',
27 ];
28
29 function onMessage(e) {
30 var message = e.data;
31 if ('port' in message) {
32 var port = message.port;
33 port.postMessage({value: 1});
34 port.postMessage({value: 2});
35 port.postMessage({done: true});
36 } else if ('ack' in message) {
37 result.push(message.ack);
38 } else if ('done' in message) {
39 assert_array_equals(
40 result, expected,
41 'Worker should post back expected values via MessagePort.');
42 service_worker_unregister_and_done(t, scope);
43 } else {
44 assert_unreached('Got unexpected message from ServiceWorker');
45 }
46 }
47 });
48 </script> 45 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698