Index: LayoutTests/fast/repaint/resources/text-based-repaint.js |
diff --git a/LayoutTests/fast/repaint/resources/text-based-repaint.js b/LayoutTests/fast/repaint/resources/text-based-repaint.js |
index 2170cda5d353dada52ca8531dbb8319931c4d009..6f7dbea497682a977faced4c9a8429c65a6ad5c5 100644 |
--- a/LayoutTests/fast/repaint/resources/text-based-repaint.js |
+++ b/LayoutTests/fast/repaint/resources/text-based-repaint.js |
@@ -1,34 +1,50 @@ |
+// Asynchronous tests should manually call finishRepaintTest at the appropriate time. |
+window.testIsAsync = false; |
+ |
function runRepaintTest() |
{ |
- if (window.testRunner && window.internals) { |
- if (window.enablePixelTesting) |
- window.testRunner.dumpAsTextWithPixelResults(); |
- else |
- window.testRunner.dumpAsText(); |
+ if (!window.testRunner || !window.internals) { |
+ setTimeout(repaintTest, 100); |
+ return; |
+ } |
- if (document.body) |
- document.body.offsetTop; |
- else if (document.documentElement) |
- document.documentElement.offsetTop; |
+ if (window.enablePixelTesting) |
+ testRunner.dumpAsTextWithPixelResults(); |
+ else |
+ testRunner.dumpAsText(); |
- window.internals.startTrackingRepaints(document); |
+ if (window.testIsAsync) |
+ testRunner.waitUntilDone(); |
- repaintTest(); |
+ if (document.body) |
+ document.body.offsetTop; |
+ else if (document.documentElement) |
+ document.documentElement.offsetTop; |
- // force a style recalc. |
- var dummy = document.body.offsetTop; |
+ window.internals.startTrackingRepaints(document); |
- var repaintRects = window.internals.repaintRectsAsText(document); |
+ repaintTest(); |
- window.internals.stopTrackingRepaints(document); |
+ if (!window.testIsAsync) |
+ finishRepaintTest(); |
+} |
- var pre = document.createElement('pre'); |
- document.body.appendChild(pre); |
- pre.textContent += repaintRects; |
+function finishRepaintTest() |
+{ |
+ // Force a style recalc. |
+ var dummy = document.body.offsetTop; |
- if (window.afterTest) |
- window.afterTest(); |
- } else { |
- setTimeout(repaintTest, 100); |
- } |
+ var repaintRects = window.internals.repaintRectsAsText(document); |
+ |
+ internals.stopTrackingRepaints(document); |
+ |
+ var pre = document.createElement('pre'); |
+ document.body.appendChild(pre); |
+ pre.textContent += repaintRects; |
+ |
+ if (window.afterTest) |
+ window.afterTest(); |
+ |
+ if (window.testIsAsync) |
+ testRunner.notifyDone(); |
} |