Bug 1154206 - Don't end the test until all the advanceTimeAndRefresh calls are done. r?jrmuizel
MozReview-Commit-ID: 69losfPM6bk
--- a/layout/generic/test/test_bug784410.html
+++ b/layout/generic/test/test_bug784410.html
@@ -24,38 +24,51 @@ var inner = document.getElementById("inn
var smoothScrollPref = "general.smoothScroll";
function innerScrollOffset() {
return inner.getBoundingClientRect().top - d.getBoundingClientRect().top;
}
var innerStartScrollOffset = innerScrollOffset();
var step = 0;
+var wheelAndPaintDone = false;
function doneScroll() {
++step;
switch (step) {
case 1:
is(innerScrollOffset(), innerStartScrollOffset, "Inner element should not have scrolled down");
ok(outer.scrollTop > 0, "Outer element should have scrolled down");
outer.scrollTop = 0;
break;
case 2:
// Wait for paints to flush, so APZ is notified of the new scroll offset.
sendWheelAndPaint(inner, 4, 4,
{ deltaMode: WheelEvent.DOM_DELTA_LINE, deltaY: 1 },
- function() {});
+ function() {
+ wheelAndPaintDone = true;
+ doneTest();
+ });
break;
case 3:
is(innerScrollOffset(), innerStartScrollOffset, "Inner element should not have scrolled down");
ok(outer.scrollTop > 0, "Outer element should have scrolled down");
+ doneTest();
+ break;
+ }
+}
+
+function doneTest() {
+ // wait until wheelAndPaintDone has invoked its callback before we end the
+ // test, otherwise we might get calls to advanceTimeAndRefresh after we
+ // restore normal refresh, and that will screw up the next test.
+ if (wheelAndPaintDone && step == 3) {
SpecialPowers.DOMWindowUtils.restoreNormalRefresh();
SimpleTest.finish();
- break;
}
}
function test() {
sel.collapse(inner.firstChild, 2);
synthesizeKey("VK_PAGE_DOWN", {});
}