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

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

Issue 264233003: Add blink-side binding code and tests for ServiceWorker -> Document postMessage (3/3) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: added message port tests Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <title>Service Worker: postMessage to Client</title>
3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script>
5 <script src="resources/test-helpers.js"></script>
6 <script>
7 var t = async_test('postMessage MessagePorts from ServiceWorker to Client');
8 t.step(function() {
9 var scope = 'resources/blank.html'
10 navigator.serviceWorker.unregister(scope).then(
11 doRegister,
12 unreached_rejection(t, 'Unregister should not fail')
13 );
14
15 function doRegister() {
16 navigator.serviceWorker.register(
17 'resources/postmessage-msgport-to-client-worker.js', {scope: scope}
18 ).then(
19 onRegister,
20 unreached_rejection(t, 'Registration should succeed, but failed')
21 );
22 }
23
24 function onRegister(worker) {
25 worker.addEventListener('statechange', t.step_func(function(event) {
26 if (event.target.state == 'active')
27 onActive();
28 }));
29 }
30
31 function onActive() {
32 with_iframe(scope, t.step_func(function(frame) {
33 var w = frame.contentWindow;
34 w.onmessage = t.step_func(onMessage);
35 w.navigator.serviceWorker.current.postMessage('ping');
36 }));
37 }
38
39 var result = [];
40 var expected = [
41 'Acking value: 1',
42 'Acking value: 2',
43 ];
44
45 function onMessage(e) {
46 var message = e.data;
47 if ('port' in message) {
48 port = message.port;
49 port.postMessage({value: 1});
50 port.postMessage({value: 2});
51 port.postMessage({done: true});
52 } else if ('ack' in message) {
53 result.push(message.ack);
54 } else if ('done' in message) {
55 assert_array_equals(result, expected, 'Worker should post back expec ted values via MessagePort.');
56 t.done();
57 } else {
58 assert_unreached('Got unexpected message from ServiceWorker');
59 }
60 }
61 });
62 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698