Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Unified Diff: LayoutTests/paint/invalidation/spv2/resources/paint-invalidation-test.js

Issue 1324763002: Paint invalidation tests for slimming paint v2 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Yet another unrelated file mixed from another branch :( Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698