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

Side by Side Diff: LayoutTests/fast/workers/worker-cloneport.html

Issue 40513003: Delete/move the remaining stale tests in TestExpectations. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: delete plugins/reentrant-update-widget-positions.html as well Created 7 years, 1 month 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 <body>
2 <p>Test MessagePort messaging/entangle/detangle across threads. Should print "SU CCESS" when done.</p>
3 <div id=result></div>
4 <script>
5 function log(message)
6 {
7 document.getElementById("result").innerHTML += message + "<br>";
8 }
9
10 if (window.testRunner) {
11 testRunner.dumpAsText();
12 testRunner.waitUntilDone();
13 }
14
15
16 var channel = new MessageChannel();
17 var numMessages = 50000;
18
19 // Create a channel which we will use to clone and re-clone one end of a
20 // MessageChannel.
21 var cloneChannel = new MessageChannel();
22 var stopCloning = false;
23 cloneChannel.port1.onmessage = cloneChannel.port2.onmessage = resendPort;
24 cloneChannel.port1.start();
25 cloneChannel.port2.start();
26 cloneChannel.port1.postMessage("", [channel.port2]);
27
28 // Create worker with other end of port and have it send messages back to us
29 // while we clone our end of the port repeatedly.
30 var worker = new Worker("resources/worker-cloneport.js");
31 worker.postMessage("postBack " + numMessages, [channel.port1]);
32
33 // Test posting back 50000 messages, make sure ordering is fine
34 worker.onmessage = function(evt) {
35 if (evt.data == "postBackDone") {
36 stopCloning = true;
37 } else {
38 // Log message from worker
39 log(evt.data);
40 }
41 }
42
43 // Keep cloning the passed port until we're told to stop.
44 function resendPort(evt)
45 {
46 if (!evt.ports)
47 log("FAIL: evt.ports not set");
48 if (evt.ports.length != 1)
49 log("FAIL: ports.length = " + evt.ports.length);
50
51 if (!stopCloning) {
52 evt.target.postMessage("", evt.ports);
53 } else {
54 // Make sure the messages arrived in order.
55 var itemNum = 0;
56 // Queue up a task to execute once the messages have been processed. The timeout value is set fairly large to account for Chromium's different message d elivery architecture.
57 // This only fires in the case of a test failure, so it does not slow do wn test running.
58 var timer = setTimeout(function() {
59 log("FAILURE: Received: " + itemNum + " events - expected: " + numMe ssages);
60 }, 1000);
61 evt.ports[0].onmessage = function(event) {
62 var done = false;
63 if (event.data == itemNum) {
64 itemNum++;
65 if (itemNum == numMessages) {
66 log("SUCCESS - received " + numMessages + " messages.");
67 done = true;
68 }
69 } else {
70 log("FAILURE: Out of order message: expected #: " + itemNum + ", received: " + event.data);
71 done = true;
72 }
73 clearTimeout(timer);
74 if (done) {
75 gc();
76 setTimeout(reportDone, 100); // Make sure no unexpected events come in.
77 }
78 }
79 evt.ports[0].start();
80 }
81 }
82
83 function gc()
84 {
85 if (window.GCController)
86 return GCController.collect();
87
88 for (var i = 0; i < 10000; i++) { // force garbage collection (FF requires a bout 9K allocations before a collect).
89 var s = new String("abc");
90 }
91 }
92 function reportDone()
93 {
94 log("DONE");
95 if (window.testRunner)
96 testRunner.notifyDone();
97 }
98
99 </script>
100 </body>
101 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698