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

Side by Side Diff: third_party/WebKit/LayoutTests/broadcastchannel/workers.html

Issue 2004643002: Implement BroadcastChannel (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: better tests Created 4 years, 6 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
(Empty)
1 <!DOCTYPE html>
2 <meta charset=utf-8>
3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script>
5 <script>
6
7 async_test(t => {
8 let c1 = new BroadcastChannel('worker');
9 let c2 = new BroadcastChannel('worker');
10 let events = [];
11
12 c1.onmessage = e => events.push(e);
13 c2.onmessage = e => events.push(e);
14
15 c2.addEventListener('message', e => {
16 if (e.data == 'from worker') {
17 c2.postMessage('from c2');
18 c1.postMessage('done');
19 }
20 });
21
22 let worker = new Worker('resources/worker.js');
23 worker.onmessage = t.step_func(e => {
24 assert_equals(events.length, 4);
25 assert_equals(events[0].data, 'from worker');
26 assert_equals(events[0].target, c1);
27 assert_equals(events[1].data, 'from worker');
28 assert_equals(events[1].target, c2);
29 assert_equals(events[2].data, 'from c2');
30 assert_equals(events[3].data, 'done');
31 assert_array_equals(e.data, ['from c2', 'done']);
32 t.done();
33 });
34 worker.postMessage({channel: 'worker'});
35
36 }, 'BroadcastChannel works in workers');
37
38 async_test(t => {
39 let c1 = new BroadcastChannel('shared worker');
40 let c2 = new BroadcastChannel('shared worker');
41 let events = [];
42
43 c1.onmessage = e => events.push(e);
44 c2.onmessage = e => events.push(e);
45
46 c2.addEventListener('message', e => {
47 if (e.data == 'from worker') {
48 c2.postMessage('from c2');
49 c1.postMessage('done');
50 }
51 });
52
53 let worker = new SharedWorker('resources/worker.js');
54 worker.port.onmessage = t.step_func(e => {
55 assert_equals(events.length, 4);
56 assert_equals(events[0].data, 'from worker');
57 assert_equals(events[0].target, c1);
58 assert_equals(events[1].data, 'from worker');
59 assert_equals(events[1].target, c2);
60 assert_equals(events[2].data, 'from c2');
61 assert_equals(events[3].data, 'done');
62 assert_array_equals(e.data, ['from c2', 'done']);
63 t.done();
64 });
65 worker.port.postMessage({channel: 'shared worker'});
66
67 }, 'BroadcastChannel works in shared workers');
68
69 async_test(t => {
70 let c = new BroadcastChannel('worker2');
71 let events = [];
72
73 c.onmessage = e => events.push('c1: ' + e.data);
74
75 let worker = new Worker('resources/worker.js');
76 worker.onmessage = t.step_func(e => {
77 assert_array_equals(events, ['c1: from worker', 'c2: echo'], 'messages i n document');
78 assert_array_equals(e.data, ['done'], 'messages in worker');
79 t.done();
80 });
81
82 c.addEventListener('message', e => {
83 if (e.data == 'from worker') {
84 c.close();
85 let c2 = new BroadcastChannel('worker2');
86 c2.onmessage = e => {
87 events.push('c2: ' + e.data);
88 c2.postMessage('done');
89 };
90 worker.postMessage({ping: 'echo'});
91 }
92 });
93
94 worker.postMessage({channel: 'worker2'});
95
96 }, 'Closing and re-opening a channel works.');
97
98 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698