b=768838; fix intermittent test_bug549262 failure; r=ehsan
authorVladimir Vukicevic <vladimir@pobox.com>
Mon, 01 Oct 2012 17:51:28 -0400
changeset 108900 1f581386f53dbce0763832bb1b96d098469ac06d
parent 108899 a62f61bf19a06ac83208b7e064ce39b5cf6bec29
child 108901 3bc2919782a70d5de289afdc3958670900e77fd7
push id82
push usershu@rfrn.org
push dateFri, 05 Oct 2012 13:20:22 +0000
reviewersehsan
bugs768838, 549262
milestone18.0a1
b=768838; fix intermittent test_bug549262 failure; r=ehsan
editor/libeditor/html/tests/test_bug549262.html
--- a/editor/libeditor/html/tests/test_bug549262.html
+++ b/editor/libeditor/html/tests/test_bug549262.html
@@ -19,96 +19,115 @@ https://bugzilla.mozilla.org/show_bug.cg
 
 /** Test for Bug 549262 **/
 
 var smoothScrollPref = "general.smoothScroll";
 SpecialPowers.setBoolPref(smoothScrollPref, false);
 SimpleTest.waitForExplicitFinish();
 var win = window.open("file_bug549262.html", "_blank", 
                       "width=600,height=600,scrollbars=yes");
+
+// grab the timer right at the start
+var cwu = SpecialPowers.getDOMWindowUtils(win);
+function step() {
+  cwu.advanceTimeAndRefresh(100);
+}
+
 SimpleTest.waitForFocus(function() {
   // Make sure that pressing Space when a contenteditable element is not focused
   // will scroll the page.
   var ed = win.document.getElementById("editor");
   var sc = win.document.querySelector("a");
   sc.focus();
   is(win.scrollY, 0, "Sanity check");
   synthesizeKey(" ", {}, win);
-  setTimeout(function() {
-    isnot(win.scrollY, 0, "Page is scrolled down");
-    is(ed.textContent, "abc", "The content of the editable element has not changed");
-    var oldY = win.scrollY;
-    synthesizeKey(" ", {shiftKey: true}, win);
-    setTimeout(function() {
-      ok(win.scrollY < oldY, "Page is scrolled up");
-      is(ed.textContent, "abc", "The content of the editable element has not changed");
+
+  step();
+
+  isnot(win.scrollY, 0, "Page is scrolled down");
+  is(ed.textContent, "abc", "The content of the editable element has not changed");
+  var oldY = win.scrollY;
+  synthesizeKey(" ", {shiftKey: true}, win);
+
+  step();
+
+  ok(win.scrollY < oldY, "Page is scrolled up");
+  is(ed.textContent, "abc", "The content of the editable element has not changed");
+
+  // Make sure that pressing Space when a contenteditable element is focused
+  // will not scroll the page, and will edit the element.
+  ed.focus();
+  win.getSelection().collapse(ed.firstChild, 1);
+  oldY = win.scrollY;
+  synthesizeKey(" ", {}, win);
 
-      // Make sure that pressing Space when a contenteditable element is focused
-      // will not scroll the page, and will edit the element.
-      ed.focus();
-      win.getSelection().collapse(ed.firstChild, 1);
-      oldY = win.scrollY;
-      synthesizeKey(" ", {}, win);
-      setTimeout(function() {
-        ok(win.scrollY <= oldY, "Page is not scrolled down");
-        is(ed.textContent, "a bc", "The content of the editable element has changed");
-        sc.focus();
-        synthesizeKey(" ", {}, win);
-        setTimeout(function() {
-          isnot(win.scrollY, 0, "Page is scrolled down");
-          is(ed.textContent, "a bc", "The content of the editable element has not changed");
-          ed.focus();
-          win.getSelection().collapse(ed.firstChild, 3);
-          synthesizeKey(" ", {shiftKey: true}, win);
-          setTimeout(function() {
-            isnot(win.scrollY, 0, "Page is not scrolled up");
-            is(ed.textContent, "a b c", "The content of the editable element has changed");
+  step();
+
+  ok(win.scrollY <= oldY, "Page is not scrolled down");
+  is(ed.textContent, "a bc", "The content of the editable element has changed");
+  sc.focus();
+  synthesizeKey(" ", {}, win);
+
+  step();
+
+  isnot(win.scrollY, 0, "Page is scrolled down");
+  is(ed.textContent, "a bc", "The content of the editable element has not changed");
+  ed.focus();
+  win.getSelection().collapse(ed.firstChild, 3);
+  synthesizeKey(" ", {shiftKey: true}, win);
+
+  step();
+
+  isnot(win.scrollY, 0, "Page is not scrolled up");
+  is(ed.textContent, "a b c", "The content of the editable element has changed");
+
+  // Now let's test the down/up keys
+  sc = document.body;
 
-            // Now let's test the down/up keys
-            sc = document.body;
-            setTimeout(function() {
-              ed.blur();
-              sc.focus();
-              oldY = win.scrollY;
-              synthesizeKey("VK_UP", {}, win);
-              setTimeout(function() {
-                ok(win.scrollY < oldY, "Page is scrolled up");
-                oldY = win.scrollY;
-                ed.focus();
-                win.getSelection().collapse(ed.firstChild, 3);
-                synthesizeKey("VK_UP", {}, win);
-                setTimeout(function() {
-                  is(win.scrollY, oldY, "Page is not scrolled up");
-                  is(win.getSelection().focusNode, ed.firstChild, "Correct element selected");
-                  is(win.getSelection().focusOffset, 0, "Selection should be moved to the beginning");
-                  win.getSelection().removeAllRanges();
-                  synthesizeMouse(sc, 300, 300, {}, win);
-                  synthesizeKey("VK_DOWN", {}, win);
-                  setTimeout(function() {
-                    ok(win.scrollY > oldY, "Page is scrolled down");
-                    ed.focus();
-                    win.getSelection().collapse(ed.firstChild, 3);
-                    oldY = win.scrollY;
-                    synthesizeKey("VK_DOWN", {}, win);
-                    setTimeout(function() {
-                      is(win.scrollY, oldY, "Page is not scrolled down");
-                      is(win.getSelection().focusNode, ed.firstChild, "Correct element selected");
-                      is(win.getSelection().focusOffset, ed.textContent.length, "Selection should be moved to the end");
+  step();
+
+  ed.blur();
+  sc.focus();
+  oldY = win.scrollY;
+  synthesizeKey("VK_UP", {}, win);
+
+  step();
+
+  ok(win.scrollY < oldY, "Page is scrolled up");
+  oldY = win.scrollY;
+  ed.focus();
+  win.getSelection().collapse(ed.firstChild, 3);
+  synthesizeKey("VK_UP", {}, win);
+
+  step();
 
-                      win.close();
-                      SpecialPowers.clearUserPref(smoothScrollPref);
-                      SimpleTest.finish();
-                    }, 20);
-                  }, 20);
-                }, 20);
-              }, 20);
-            }, 20);
-          }, 20);
-        }, 20);
-      }, 20);
-    }, 20);
-  }, 20);
+  is(win.scrollY, oldY, "Page is not scrolled up");
+  is(win.getSelection().focusNode, ed.firstChild, "Correct element selected");
+  is(win.getSelection().focusOffset, 0, "Selection should be moved to the beginning");
+  win.getSelection().removeAllRanges();
+  synthesizeMouse(sc, 300, 300, {}, win);
+  synthesizeKey("VK_DOWN", {}, win);
+
+  step();
+
+  ok(win.scrollY > oldY, "Page is scrolled down");
+  ed.focus();
+  win.getSelection().collapse(ed.firstChild, 3);
+  oldY = win.scrollY;
+  synthesizeKey("VK_DOWN", {}, win);
+
+  step();
+
+  is(win.scrollY, oldY, "Page is not scrolled down");
+  is(win.getSelection().focusNode, ed.firstChild, "Correct element selected");
+  is(win.getSelection().focusOffset, ed.textContent.length, "Selection should be moved to the end");
+
+  win.close();
+  SpecialPowers.clearUserPref(smoothScrollPref);
+  cwu.restoreNormalRefresh();
+
+  SimpleTest.finish();
 }, win);
 
 </script>
 </pre>
 </body>
 </html>