summaryrefslogtreecommitdiff
path: root/Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp')
-rw-r--r--Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp b/Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp
index 0f379d64e..a9f7b1c1a 100644
--- a/Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp
+++ b/Source/WebKit/chromium/tests/CCDamageTrackerTest.cpp
@@ -70,7 +70,7 @@ void emulateDrawingOneFrame(CCLayerImpl* root)
// Iterate back-to-front, so that damage correctly propagates from descendant surfaces to ancestors.
for (int i = renderSurfaceLayerList.size() - 1; i >= 0; --i) {
CCRenderSurface* targetSurface = renderSurfaceLayerList[i]->renderSurface();
- targetSurface->damageTracker()->updateDamageRectForNextFrame(targetSurface->layerList(), targetSurface->owningLayerId(), renderSurfaceLayerList[i]->maskLayer());
+ targetSurface->damageTracker()->updateDamageTrackingState(targetSurface->layerList(), targetSurface->owningLayerId(), renderSurfaceLayerList[i]->maskLayer());
}
root->resetAllChangeTrackingForSubtree();
@@ -748,4 +748,27 @@ TEST_F(CCDamageTrackerTest, verifyDamageForReplicaMask)
EXPECT_FLOAT_RECT_EQ(FloatRect(194, 200, 6, 8), childDamageRect);
}
+TEST_F(CCDamageTrackerTest, verifyDamageWhenReset)
+{
+ RefPtr<CCLayerImpl> root = createAndSetUpTestTreeWithOneSurface();
+ RefPtr<CCLayerImpl> child = root->children()[0];
+
+ // Case 1: This test ensures that when the tracker is forced to have full damage, that
+ // it takes priority over any other partial damage.
+ //
+ child->setUpdateRect(FloatRect(10, 11, 12, 13));
+ root->renderSurface()->damageTracker()->forceFullDamageNextUpdate();
+ emulateDrawingOneFrame(root.get());
+ FloatRect rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect();
+ EXPECT_FLOAT_RECT_EQ(FloatRect(0, 0, 500, 500), rootDamageRect);
+
+ // Case 2: An additional sanity check that forcing full damage works even when nothing
+ // on the layer tree changed.
+ //
+ root->renderSurface()->damageTracker()->forceFullDamageNextUpdate();
+ emulateDrawingOneFrame(root.get());
+ rootDamageRect = root->renderSurface()->damageTracker()->currentDamageRect();
+ EXPECT_FLOAT_RECT_EQ(FloatRect(0, 0, 500, 500), rootDamageRect);
+}
+
} // namespace