[chromium] Fix flaky timeouts in platform/chromium/events/fast/events/intercept-postm...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 04:22:44 +0000 (04:22 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 04:22:44 +0000 (04:22 +0000)
https://bugs.webkit.org/show_bug.cgi?id=112089

Patch by James Robinson <jamesr@chromium.org> on 2013-03-11
Reviewed by Adam Barth.

This test had a few problems. The most serious is it raced a window.postMessage() from an inline <script> in the
<head> with the HTML parser processing the rest of the testcase. If the HTML parser yielded before parsing out
the <pre id="console">, function recvMsg1 would generate an error accessing the undefined pre. The test also
set up a setTimeout with a timeout of 50ms to run after a postMessage handler. There's no need to wait after
yielding for a timeout, these events are processed in order.

* platform/chromium/fast/events/intercept-postmessage.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@145473 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/chromium/fast/events/intercept-postmessage.html

index bfc0192..fd56d76 100644 (file)
@@ -1,3 +1,18 @@
+2013-03-11  James Robinson  <jamesr@chromium.org>
+
+        [chromium] Fix flaky timeouts in platform/chromium/events/fast/events/intercept-postmessage.html
+        https://bugs.webkit.org/show_bug.cgi?id=112089
+
+        Reviewed by Adam Barth.
+
+        This test had a few problems. The most serious is it raced a window.postMessage() from an inline <script> in the
+        <head> with the HTML parser processing the rest of the testcase. If the HTML parser yielded before parsing out
+        the <pre id="console">, function recvMsg1 would generate an error accessing the undefined pre. The test also
+        set up a setTimeout with a timeout of 50ms to run after a postMessage handler. There's no need to wait after
+        yielding for a timeout, these events are processed in order.
+
+        * platform/chromium/fast/events/intercept-postmessage.html:
+
 2013-03-11  Adam Barth  <abarth@webkit.org>
 
         Make BackgroundHTMLParser work with doc.writes that enter or leave foreign content
index fad043c..6b3b000 100644 (file)
@@ -1,49 +1,44 @@
+<!DOCTYPE html>
 <html>
-  <head>
-    <script>
-      function write(str) {
-        pre = document.getElementById('console');
-        text = document.createTextNode(str + '\n');
-        pre.appendChild(text);
-      }
+  <body><pre id="console"></pre></body>
+  <script>
+    function write(str) {
+      pre = document.getElementById('console');
+      text = document.createTextNode(str + '\n');
+      pre.appendChild(text);
+    }
 
-      function recvMsg1(e) {
-        write("RECV1");
-        window.removeEventListener("message", recvMsg1, false);
+    function recvMsg1(e) {
+      write("RECV1");
+      window.removeEventListener("message", recvMsg1, false);
 
-        if (window.testRunner)
-          testRunner.interceptPostMessage = true;
+      if (window.testRunner)
+        testRunner.interceptPostMessage = true;
 
-        window.addEventListener("message", recvMsg2, false);
-        window.postMessage("Message 2", "*");
-      
-        // Ensure that we're intercepting postMessages before the origin check
-        window.postMessage("Message 3", "http://example.org"); 
+      window.addEventListener("message", recvMsg2, false);
+      window.postMessage("Message 2", "*");
 
-        // We need to call setTimeout here because we intercept the next event.
-        // If this test becomes flaky, you may need to increase this timeout.
-        window.setTimeout("done()", 50);
-      }
+      // Ensure that we're intercepting postMessages before the origin check
+      window.postMessage("Message 3", "http://example.org");
 
-      function recvMsg2(e) {
-        write("RECV2");
+      if (window.testRunner) {
+        // We need to call setTimeout here because we intercept the next event.
+        window.setTimeout(function() { testRunner.notifyDone(); });
       }
+    }
 
-      function done() {
-        if (window.testRunner)
-          window.testRunner.notifyDone();
-      }
+    function recvMsg2(e) {
+      write("RECV2");
+    }
 
-      window.addEventListener("message", recvMsg1, false);
+    window.addEventListener("message", recvMsg1, false);
 
-      if (window.testRunner) {
-        window.testRunner.dumpAsText();
-        window.testRunner.waitUntilDone();
-      }
+    if (window.testRunner) {
+      window.testRunner.dumpAsText();
+      window.testRunner.waitUntilDone();
+    }
 
-      window.postMessage("Message 1", "*");
-    </script>
-  </head>
-  <body><pre id="console"></pre></body>
+    window.postMessage("Message 1", "*");
+  </script>
 </html>