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

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

Issue 2521843002: Fix flakyness in broadcastchannel/blobs.html test. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <meta charset=utf-8> 2 <meta charset=utf-8>
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> 5 <script>
6 6
7 async_test(t => { 7 async_test(t => {
8 let c1 = new BroadcastChannel('blob'); 8 let c1 = new BroadcastChannel('blob');
9 let c2 = new BroadcastChannel('blob'); 9 let c2 = new BroadcastChannel('blob');
10 let c3 = new BroadcastChannel('blob'); 10 let c3 = new BroadcastChannel('blob');
(...skipping 15 matching lines...) Expand all
26 }); 26 });
27 c3.onmessage = c2.onmessage; 27 c3.onmessage = c2.onmessage;
28 c1.postMessage({blob: new Blob(['foo', 'bar'])}); 28 c1.postMessage({blob: new Blob(['foo', 'bar'])});
29 }, 'Blobs work on BroadcastChannel'); 29 }, 'Blobs work on BroadcastChannel');
30 30
31 async_test(t => { 31 async_test(t => {
32 let c1 = new BroadcastChannel('blobworker'); 32 let c1 = new BroadcastChannel('blobworker');
33 let c2 = new BroadcastChannel('blobworker'); 33 let c2 = new BroadcastChannel('blobworker');
34 let events = []; 34 let events = [];
35 35
36 c1.onmessage = e => events.push(e.data); 36 let verifyEvents = function() {
jsbell 2016/11/22 17:13:22 nit: could be const, but using let for consistency
Marijn Kruisselbrink 2016/11/22 17:51:28 Ah yes, good point. Changed all the lets that coul
37 c2.onmessage = e => events.push(e.data);
38 c2.addEventListener('message', e => {
39 if (e.data.blob)
40 c1.postMessage('done');
41 });
42
43 let worker = new Worker('resources/worker.js');
44 worker.onmessage = t.step_func(e => {
45 assert_equals(events.length, 5); 37 assert_equals(events.length, 5);
46 assert_equals(events[0], 'from worker'); 38 assert_equals(events[0], 'from worker');
47 assert_equals(events[1], 'from worker'); 39 assert_equals(events[1], 'from worker');
48 assert_true(events[2].blob instanceof Blob); 40 assert_true(events[2].blob instanceof Blob);
49 assert_equals(events[2].blob.size, 11); 41 assert_equals(events[2].blob.size, 11);
50 assert_true(events[3].blob instanceof Blob); 42 assert_true(events[3].blob instanceof Blob);
51 assert_equals(events[3].blob.size, 11); 43 assert_equals(events[3].blob.size, 11);
52 assert_equals(events[4], 'done'); 44 assert_equals(events[4], 'done');
53 let reader = new FileReader(); 45 let reader = new FileReader();
54 reader.onerror = t.unreached_func(); 46 reader.onerror = t.unreached_func();
55 reader.onload = t.step_func(() => { 47 reader.onload = t.step_func(() => {
56 assert_equals(reader.result, 'hello-world'); 48 assert_equals(reader.result, 'hello-world');
57 t.done(); 49 t.done();
58 }); 50 });
59 reader.readAsText(events[3].blob); 51 reader.readAsText(events[3].blob);
52 };
53
54 let receivedDone = false;
55 let receivedWorkerDone = false;
56
57 c1.onmessage = e => events.push(e.data);
58 c2.onmessage = e => events.push(e.data);
59 c2.addEventListener('message', e => {
jsbell 2016/11/22 17:13:22 Wrap in t.step_func()
Marijn Kruisselbrink 2016/11/22 17:51:28 Done
60 if (e.data.blob)
61 c1.postMessage('done');
62 if (e.data === 'done')
63 receivedDone = true;
64 if (receivedDone && receivedWorkerDone)
65 verifyEvents();
66 });
67
68 let worker = new Worker('resources/worker.js');
jsbell 2016/11/22 17:13:23 could be const, but let is okay.
69 worker.onmessage = t.step_func(e => {
70 receivedWorkerDone = true;
71 if (receivedDone && receivedWorkerDone)
72 verifyEvents();
60 }); 73 });
61 worker.postMessage({channel: 'blobworker'}); 74 worker.postMessage({channel: 'blobworker'});
62 worker.postMessage({blob: ['hello-world']}); 75 worker.postMessage({blob: ['hello-world']});
63 76
64 }, 'Blobs work with workers on BroadcastChannel'); 77 }, 'Blobs work with workers on BroadcastChannel');
65 78
66 </script> 79 </script>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698