Index: LayoutTests/paint/invalidation/spv2/resources/paint-invalidation-test.js |
diff --git a/LayoutTests/paint/invalidation/spv2/resources/paint-invalidation-test.js b/LayoutTests/paint/invalidation/spv2/resources/paint-invalidation-test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..36fa3975d38bf9ccb0b58dfa364d34de5fa6a879 |
--- /dev/null |
+++ b/LayoutTests/paint/invalidation/spv2/resources/paint-invalidation-test.js |
@@ -0,0 +1,65 @@ |
+// Asynchronous tests should manually call finishPaintInvalidationTest at the appropriate time. |
+window.testIsAsync = false; |
+ |
+// All paint invalidation tests are asynchronous from test-runner's point of view. |
+if (window.testRunner) |
+ testRunner.waitUntilDone(); |
+ |
+function runPaintInvalidationTest() |
+{ |
+ if (!window.testRunner || !window.internals) { |
+ setTimeout(paintInvalidationTest, 500); |
+ return; |
+ } |
+ |
+ // TODO(enne): this is a workaround for multiple svg onload events. |
+ // See: http://crbug.com/372946 |
+ if (window.hasRunPaintInvalidationTest) |
+ return; |
+ window.hasRunPaintInvalidationTest = true; |
+ |
+ testRunner.layoutAndPaintAsyncThen(function() |
+ { |
+ window.internals.startTrackingPaintInvalidationObjects(); |
+ paintInvalidationTest(); |
+ if (!window.testIsAsync) |
+ finishPaintInvalidationTest(); |
+ }); |
+} |
+ |
+function removeAllChildren(element) |
+{ |
+ while (element.firstChild) |
+ element.removeChild(element.firstChild); |
+} |
+ |
+function finishPaintInvalidationTest() |
+{ |
+ if (!window.testRunner || !window.internals) |
+ return; |
+ |
+ testRunner.layoutAndPaintAsyncThen(function() |
+ { |
+ document.body.offsetTop; |
+ var paintInvalidationObjects = JSON.stringify(internals.trackedPaintInvalidationObjects()); |
+ var expectedPaintInvalidationObjects = JSON.stringify(window.expectedPaintInvalidationObjects); |
+ internals.stopTrackingPaintInvalidationObjects(); |
+ |
+ if (paintInvalidationObjects != expectedPaintInvalidationObjects) { |
+ var message = 'Paint invalidation objects mismatch.' |
+ + '\nExpected:\n' + expectedPaintInvalidationObjects.replace(/","/g, '",\n "') |
+ + '\nActual:\n' + paintInvalidationObjects.replace(/","/g, '",\n "'); |
+ testRunner.logToStderr(message); |
+ while (document.body.firstChild) |
+ document.body.removeChild(document.body.firstChild); |
+ var pre = document.createElement('pre'); |
+ pre.appendChild(document.createTextNode('(To copy results as text, see stderr.)\n\n' + message)); |
+ document.body.appendChild(pre); |
+ } |
+ testRunner.notifyDone(); |
+ }); |
+} |
+ |
+setTimeout(function() { |
+ testRunner.notifyDone(); |
+}, 2000); |