Index: third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp |
index 869bd75896d1d502b0f059904c10e71540cc1fc8..7a78d7fa1964d8247cd3927ebdf3a21b0fcb5de0 100644 |
--- a/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp |
@@ -1083,21 +1083,27 @@ TEST_P(PaintControllerTest, CachedSubsequenceSwapOrder) { |
} |
getPaintController().commitNewDisplayItems(); |
- EXPECT_DISPLAY_LIST( |
- getPaintController().getDisplayItemList(), 12, |
- TestDisplayItem(container1, DisplayItem::kSubsequence), |
- TestDisplayItem(container1, backgroundDrawingType), |
- TestDisplayItem(content1, backgroundDrawingType), |
- TestDisplayItem(content1, foregroundDrawingType), |
- TestDisplayItem(container1, foregroundDrawingType), |
- TestDisplayItem(container1, DisplayItem::kEndSubsequence), |
- |
- TestDisplayItem(container2, DisplayItem::kSubsequence), |
- TestDisplayItem(container2, backgroundDrawingType), |
- TestDisplayItem(content2, backgroundDrawingType), |
- TestDisplayItem(content2, foregroundDrawingType), |
- TestDisplayItem(container2, foregroundDrawingType), |
- TestDisplayItem(container2, DisplayItem::kEndSubsequence)); |
+ EXPECT_DISPLAY_LIST(getPaintController().getDisplayItemList(), 8, |
+ TestDisplayItem(container1, backgroundDrawingType), |
+ TestDisplayItem(content1, backgroundDrawingType), |
+ TestDisplayItem(content1, foregroundDrawingType), |
+ TestDisplayItem(container1, foregroundDrawingType), |
+ |
+ TestDisplayItem(container2, backgroundDrawingType), |
+ TestDisplayItem(content2, backgroundDrawingType), |
+ TestDisplayItem(content2, foregroundDrawingType), |
+ TestDisplayItem(container2, foregroundDrawingType)); |
+ |
+ PaintController::SubsequenceMarkers* markers = |
+ getPaintController().getSubsequenceMarkers(container1); |
+ CHECK(markers); |
+ EXPECT_EQ(0u, markers->start); |
+ EXPECT_EQ(3u, markers->end); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(container2); |
+ CHECK(markers); |
+ EXPECT_EQ(4u, markers->start); |
+ EXPECT_EQ(7u, markers->end); |
if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { |
EXPECT_EQ(2u, getPaintController().paintChunks().size()); |
@@ -1160,30 +1166,34 @@ TEST_P(PaintControllerTest, CachedSubsequenceSwapOrder) { |
context, container1)); |
} |
- EXPECT_EQ(12, numCachedNewItems()); |
+ EXPECT_EQ(8, numCachedNewItems()); |
#ifndef NDEBUG |
- EXPECT_EQ(1, numSequentialMatches()); |
- EXPECT_EQ(1, numOutOfOrderMatches()); |
- EXPECT_EQ(5, numIndexedItems()); |
+ EXPECT_EQ(0, numSequentialMatches()); |
+ EXPECT_EQ(0, numOutOfOrderMatches()); |
+ EXPECT_EQ(0, numIndexedItems()); |
#endif |
getPaintController().commitNewDisplayItems(); |
- EXPECT_DISPLAY_LIST( |
- getPaintController().getDisplayItemList(), 12, |
- TestDisplayItem(container2, DisplayItem::kSubsequence), |
- TestDisplayItem(container2, backgroundDrawingType), |
- TestDisplayItem(content2, backgroundDrawingType), |
- TestDisplayItem(content2, foregroundDrawingType), |
- TestDisplayItem(container2, foregroundDrawingType), |
- TestDisplayItem(container2, DisplayItem::kEndSubsequence), |
- |
- TestDisplayItem(container1, DisplayItem::kSubsequence), |
- TestDisplayItem(container1, backgroundDrawingType), |
- TestDisplayItem(content1, backgroundDrawingType), |
- TestDisplayItem(content1, foregroundDrawingType), |
- TestDisplayItem(container1, foregroundDrawingType), |
- TestDisplayItem(container1, DisplayItem::kEndSubsequence)); |
+ EXPECT_DISPLAY_LIST(getPaintController().getDisplayItemList(), 8, |
+ TestDisplayItem(container2, backgroundDrawingType), |
+ TestDisplayItem(content2, backgroundDrawingType), |
+ TestDisplayItem(content2, foregroundDrawingType), |
+ TestDisplayItem(container2, foregroundDrawingType), |
+ TestDisplayItem(container1, backgroundDrawingType), |
+ TestDisplayItem(content1, backgroundDrawingType), |
+ TestDisplayItem(content1, foregroundDrawingType), |
+ TestDisplayItem(container1, foregroundDrawingType)); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(container2); |
+ CHECK(markers); |
+ EXPECT_EQ(0u, markers->start); |
+ EXPECT_EQ(3u, markers->end); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(container1); |
+ CHECK(markers); |
+ EXPECT_EQ(4u, markers->start); |
+ EXPECT_EQ(7u, markers->end); |
#if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS |
DisplayItemClient::endShouldKeepAliveAllClients(); |
@@ -1426,23 +1436,34 @@ TEST_P(PaintControllerTest, CachedNestedSubsequenceUpdate) { |
} |
getPaintController().commitNewDisplayItems(); |
- EXPECT_DISPLAY_LIST( |
- getPaintController().getDisplayItemList(), 14, |
- TestDisplayItem(container1, DisplayItem::kSubsequence), |
- TestDisplayItem(container1, backgroundDrawingType), |
- TestDisplayItem(content1, DisplayItem::kSubsequence), |
- TestDisplayItem(content1, backgroundDrawingType), |
- TestDisplayItem(content1, foregroundDrawingType), |
- TestDisplayItem(content1, DisplayItem::kEndSubsequence), |
- TestDisplayItem(container1, foregroundDrawingType), |
- TestDisplayItem(container1, DisplayItem::kEndSubsequence), |
- |
- TestDisplayItem(container2, DisplayItem::kSubsequence), |
- TestDisplayItem(container2, backgroundDrawingType), |
- TestDisplayItem(content2, DisplayItem::kSubsequence), |
- TestDisplayItem(content2, backgroundDrawingType), |
- TestDisplayItem(content2, DisplayItem::kEndSubsequence), |
- TestDisplayItem(container2, DisplayItem::kEndSubsequence)); |
+ EXPECT_DISPLAY_LIST(getPaintController().getDisplayItemList(), 6, |
+ TestDisplayItem(container1, backgroundDrawingType), |
+ TestDisplayItem(content1, backgroundDrawingType), |
+ TestDisplayItem(content1, foregroundDrawingType), |
+ TestDisplayItem(container1, foregroundDrawingType), |
+ TestDisplayItem(container2, backgroundDrawingType), |
+ TestDisplayItem(content2, backgroundDrawingType)); |
+ |
+ PaintController::SubsequenceMarkers* markers = |
+ getPaintController().getSubsequenceMarkers(container1); |
+ CHECK(markers); |
+ EXPECT_EQ(0u, markers->start); |
+ EXPECT_EQ(3u, markers->end); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(content1); |
+ CHECK(markers); |
+ EXPECT_EQ(1u, markers->start); |
+ EXPECT_EQ(2u, markers->end); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(container2); |
+ CHECK(markers); |
+ EXPECT_EQ(4u, markers->start); |
+ EXPECT_EQ(5u, markers->end); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(content2); |
+ CHECK(markers); |
+ EXPECT_EQ(5u, markers->start); |
+ EXPECT_EQ(5u, markers->end); |
if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { |
EXPECT_EQ(5u, getPaintController().paintChunks().size()); |
@@ -1526,28 +1547,35 @@ TEST_P(PaintControllerTest, CachedNestedSubsequenceUpdate) { |
FloatRect(100, 100, 100, 100)); |
} |
- EXPECT_EQ(4, numCachedNewItems()); |
+ EXPECT_EQ(2, numCachedNewItems()); |
#ifndef NDEBUG |
- EXPECT_EQ(1, numSequentialMatches()); |
+ EXPECT_EQ(0, numSequentialMatches()); |
EXPECT_EQ(0, numOutOfOrderMatches()); |
- EXPECT_EQ(2, numIndexedItems()); |
+ EXPECT_EQ(0, numIndexedItems()); |
#endif |
getPaintController().commitNewDisplayItems(); |
- EXPECT_DISPLAY_LIST( |
- getPaintController().getDisplayItemList(), 10, |
- TestDisplayItem(content2, DisplayItem::kSubsequence), |
- TestDisplayItem(content2, foregroundDrawingType), |
- TestDisplayItem(content2, DisplayItem::kEndSubsequence), |
+ EXPECT_DISPLAY_LIST(getPaintController().getDisplayItemList(), 4, |
+ TestDisplayItem(content2, foregroundDrawingType), |
+ TestDisplayItem(content1, backgroundDrawingType), |
+ TestDisplayItem(content1, foregroundDrawingType), |
+ TestDisplayItem(container1, foregroundDrawingType)); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(content2); |
+ CHECK(markers); |
+ EXPECT_EQ(0u, markers->start); |
+ EXPECT_EQ(0u, markers->end); |
- TestDisplayItem(container1, DisplayItem::kSubsequence), |
- TestDisplayItem(content1, DisplayItem::kSubsequence), |
- TestDisplayItem(content1, backgroundDrawingType), |
- TestDisplayItem(content1, foregroundDrawingType), |
- TestDisplayItem(content1, DisplayItem::kEndSubsequence), |
- TestDisplayItem(container1, foregroundDrawingType), |
- TestDisplayItem(container1, DisplayItem::kEndSubsequence)); |
+ markers = getPaintController().getSubsequenceMarkers(container1); |
+ CHECK(markers); |
+ EXPECT_EQ(1u, markers->start); |
+ EXPECT_EQ(3u, markers->end); |
+ |
+ markers = getPaintController().getSubsequenceMarkers(content1); |
+ CHECK(markers); |
+ EXPECT_EQ(1u, markers->start); |
+ EXPECT_EQ(2u, markers->end); |
if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { |
EXPECT_EQ(3u, getPaintController().paintChunks().size()); |
@@ -2241,7 +2269,7 @@ class PaintControllerUnderInvalidationTest |
FloatRect(100, 100, 300, 300)); |
} |
getPaintController().commitNewDisplayItems(); |
- EXPECT_EQ(3u, |
+ EXPECT_EQ(1u, |
getPaintController().paintArtifact().getDisplayItemList().size()); |
{ |
@@ -2253,7 +2281,7 @@ class PaintControllerUnderInvalidationTest |
FloatRect(100, 100, 300, 300)); |
} |
getPaintController().commitNewDisplayItems(); |
- EXPECT_EQ(3u, |
+ EXPECT_EQ(1u, |
getPaintController().paintArtifact().getDisplayItemList().size()); |
#if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS |
@@ -2291,14 +2319,16 @@ TEST_F(PaintControllerUnderInvalidationTest, ChangeDrawingInSubsequence) { |
TEST_F(PaintControllerUnderInvalidationTest, MoreDrawingInSubsequence) { |
EXPECT_DEATH(testMoreDrawingInSubsequence(), |
- "\"\\(In cached subsequence of first\\)\" under-invalidation: " |
- "display item changed"); |
+ "Check failed: false. Can't find cached display item"); |
} |
TEST_F(PaintControllerUnderInvalidationTest, LessDrawingInSubsequence) { |
+ // We allow invalidated display item clients as long as they would produce the |
+ // same display items. The cases of changed display items are tested by other |
+ // test cases. |
EXPECT_DEATH(testLessDrawingInSubsequence(), |
"\"\\(In cached subsequence of first\\)\" under-invalidation: " |
- "display item changed"); |
+ "new subsequence wrong length"); |
} |
TEST_F(PaintControllerUnderInvalidationTest, ChangeNonCacheableInSubsequence) { |