Index: Source/core/paint/ViewDisplayListTest.cpp |
diff --git a/Source/core/paint/ViewDisplayListTest.cpp b/Source/core/paint/ViewDisplayListTest.cpp |
index ddbfdfa848ad77c5f0a0e1c63f8127d88d9c60ff..30c5b23f80a4217ae331865946a1650e7db308bd 100644 |
--- a/Source/core/paint/ViewDisplayListTest.cpp |
+++ b/Source/core/paint/ViewDisplayListTest.cpp |
@@ -37,6 +37,22 @@ private: |
RenderView* m_renderView; |
}; |
+class TestDisplayItem : public DisplayItem { |
+public: |
+ TestDisplayItem(const RenderObject* renderer, Type type) : DisplayItem(renderer, type) { } |
+ |
+ virtual void replay(GraphicsContext*) override final { ASSERT_NOT_REACHED(); } |
+}; |
+ |
+#define EXPECT_DISPLAY_LIST(actual, expectedSize, ...) { \ |
+ EXPECT_EQ((size_t)expectedSize, actual.size()); \ |
+ const TestDisplayItem expected[] = { __VA_ARGS__ }; \ |
+ for (size_t index = 0; index < expectedSize; index++) { \ |
+ EXPECT_EQ(expected[index].renderer(), actual[index]->renderer()); \ |
+ EXPECT_EQ(expected[index].type(), actual[index]->type()); \ |
+ } \ |
+} |
+ |
void drawRect(GraphicsContext* context, RenderObject* renderer, PaintPhase phase, const FloatRect& bound) |
{ |
DrawingRecorder drawingRecorder(context, renderer, phase, bound); |
@@ -44,12 +60,12 @@ void drawRect(GraphicsContext* context, RenderObject* renderer, PaintPhase phase |
context->drawRect(rect); |
} |
-void drawClippedRect(GraphicsContext* context, RenderView* renderView, PaintPhase phase, const FloatRect& bound) |
+void drawClippedRect(GraphicsContext* context, RenderLayerModelObject* renderer, PaintPhase phase, const FloatRect& bound) |
{ |
IntRect rect(1, 1, 9, 9); |
ClipRect clipRect(rect); |
- ClipRecorder clipRecorder(renderView->compositor()->rootRenderLayer(), context, DisplayItem::ClipLayerForeground, clipRect); |
- drawRect(context, renderView, phase, bound); |
+ ClipRecorder clipRecorder(renderer, context, DisplayItem::ClipLayerForeground, clipRect); |
+ drawRect(context, renderer, phase, bound); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_NestedRecorders) |
@@ -58,9 +74,11 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_NestedRecorders) |
FloatRect bound = renderView()->viewRect(); |
drawClippedRect(context, renderView(), PaintPhaseForeground, bound); |
- EXPECT_EQ((size_t)3, renderView()->viewDisplayList().paintList().size()); |
- // TODO(schenney): Check that the IDs are what we expect. |
chrishtr
2014/11/14 01:11:26
Just a regular FIXME..
|
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 3, |
+ TestDisplayItem(renderView(), DisplayItem::ClipLayerForeground), |
+ TestDisplayItem(renderView(), DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(renderView(), DisplayItem::EndClip)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateBasic) |
@@ -74,12 +92,18 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateBasic) |
drawRect(context, second, PaintPhaseChildBlockBackground, FloatRect(100, 100, 200, 200)); |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); |
- EXPECT_EQ((size_t)3, renderView()->viewDisplayList().paintList().size()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 3, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseChildBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(second); |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300, 300)); |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); |
- EXPECT_EQ((size_t)2, renderView()->viewDisplayList().paintList().size()); |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateSwapOrder) |
@@ -94,21 +118,19 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateSwapOrder) |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); |
drawRect(context, unaffected, PaintPhaseBlockBackground, FloatRect(300, 300, 10, 10)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)3, firstList.size()); |
- EXPECT_EQ(first, firstList[0]->renderer()); |
- EXPECT_EQ(second, firstList[1]->renderer()); |
- EXPECT_EQ(unaffected, firstList[2]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 3, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(unaffected, DisplayItem::DrawingPaintPhaseBlockBackground)); |
renderView()->viewDisplayList().invalidate(second); |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)3, secondList.size()); |
- EXPECT_EQ(second, secondList[0]->renderer()); |
- EXPECT_EQ(first, secondList[1]->renderer()); |
- EXPECT_EQ(unaffected, secondList[2]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 3, |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(unaffected, DisplayItem::DrawingPaintPhaseBlockBackground)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateNewItemInMiddle) |
@@ -122,21 +144,19 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateNewItemInMiddle) |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, firstList.size()); |
- EXPECT_EQ(first, firstList[0]->renderer()); |
- EXPECT_EQ(second, firstList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground)); |
renderView()->viewDisplayList().invalidate(third); |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); |
drawRect(context, third, PaintPhaseBlockBackground, FloatRect(125, 100, 200, 50)); |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)3, secondList.size()); |
- EXPECT_EQ(first, secondList[0]->renderer()); |
- EXPECT_EQ(third, secondList[1]->renderer()); |
- EXPECT_EQ(second, secondList[2]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 3, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases) |
@@ -157,13 +177,16 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases) |
drawRect(context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); |
drawRect(context, third, PaintPhaseOutline, FloatRect(300, 100, 50, 50)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)9, firstList.size()); |
- for (int item = 0; item < 9; item += 3) { |
- EXPECT_EQ(first, firstList[item % 3 + 0]->renderer()); |
- EXPECT_EQ(second, firstList[item % 3 + 1]->renderer()); |
- EXPECT_EQ(third, firstList[item % 3 + 2]->renderer()); |
- } |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 9, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(second); |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); |
@@ -173,21 +196,26 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases) |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)9, secondList.size()); |
- for (int item = 0; item < 9; item += 3) { |
- EXPECT_EQ(first, secondList[item % 3 + 0]->renderer()); |
- EXPECT_EQ(second, secondList[item % 3 + 1]->renderer()); |
- EXPECT_EQ(third, secondList[item % 3 + 2]->renderer()); |
- } |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 9, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(second); |
- const PaintList& thirdList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)6, thirdList.size()); |
- for (int item = 0; item < 6; item += 2) { |
- EXPECT_EQ(first, thirdList[item % 2 + 0]->renderer()); |
- EXPECT_EQ(third, thirdList[item % 2 + 1]->renderer()); |
- } |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 6, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstNoOverlap) |
@@ -200,27 +228,25 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstNoOverlap) |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, firstList.size()); |
- EXPECT_EQ(second, firstList[0]->renderer()); |
- EXPECT_EQ(second, firstList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(first); |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 50)); |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)4, secondList.size()); |
- EXPECT_EQ(first, secondList[0]->renderer()); |
- EXPECT_EQ(first, secondList[1]->renderer()); |
- EXPECT_EQ(second, secondList[2]->renderer()); |
- EXPECT_EQ(second, secondList[3]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 4, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(first); |
- const PaintList& thirdList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, thirdList.size()); |
- EXPECT_EQ(second, thirdList[0]->renderer()); |
- EXPECT_EQ(second, thirdList[1]->renderer()); |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstOverlap) |
@@ -233,10 +259,9 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstOverlap) |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, firstList.size()); |
- EXPECT_EQ(second, firstList[0]->renderer()); |
- EXPECT_EQ(second, firstList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(first); |
renderView()->viewDisplayList().invalidate(second); |
@@ -245,21 +270,19 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstOverlap) |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)4, secondList.size()); |
- EXPECT_EQ(first, secondList[0]->renderer()); |
- EXPECT_EQ(first, secondList[1]->renderer()); |
- EXPECT_EQ(second, secondList[2]->renderer()); |
- EXPECT_EQ(second, secondList[3]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 4, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(first); |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
- const PaintList& thirdList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, thirdList.size()); |
- EXPECT_EQ(second, thirdList[0]->renderer()); |
- EXPECT_EQ(second, thirdList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastNoOverlap) |
@@ -272,27 +295,25 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastNoOverlap) |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 50)); |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, firstList.size()); |
- EXPECT_EQ(first, firstList[0]->renderer()); |
- EXPECT_EQ(first, firstList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(second); |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)4, secondList.size()); |
- EXPECT_EQ(second, secondList[0]->renderer()); |
- EXPECT_EQ(second, secondList[1]->renderer()); |
- EXPECT_EQ(first, secondList[2]->renderer()); |
- EXPECT_EQ(first, secondList[3]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 4, |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(second); |
- const PaintList& thirdList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, thirdList.size()); |
- EXPECT_EQ(first, thirdList[0]->renderer()); |
- EXPECT_EQ(first, thirdList[1]->renderer()); |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
} |
TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastOverlap) |
@@ -305,10 +326,9 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastOverlap) |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); |
- const PaintList& firstList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, firstList.size()); |
- EXPECT_EQ(first, firstList[0]->renderer()); |
- EXPECT_EQ(first, firstList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(first); |
renderView()->viewDisplayList().invalidate(second); |
@@ -317,22 +337,63 @@ TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastOverlap) |
drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); |
drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
- const PaintList& secondList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)4, secondList.size()); |
- EXPECT_EQ(first, secondList[0]->renderer()); |
- EXPECT_EQ(first, secondList[1]->renderer()); |
- EXPECT_EQ(second, secondList[2]->renderer()); |
- EXPECT_EQ(second, secondList[3]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 4, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
renderView()->viewDisplayList().invalidate(first); |
renderView()->viewDisplayList().invalidate(second); |
drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); |
- const PaintList& thirdList = renderView()->viewDisplayList().paintList(); |
- EXPECT_EQ((size_t)2, thirdList.size()); |
- EXPECT_EQ(first, thirdList[0]->renderer()); |
- EXPECT_EQ(first, thirdList[1]->renderer()); |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
+} |
+ |
+TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateClip) |
+{ |
+ setBodyInnerHTML("<div id='first'><div id='second'></div></div>"); |
+ RenderLayerModelObject* firstRenderer = toRenderLayerModelObject(document().body()->firstChild()->renderer()); |
+ RenderLayerModelObject* secondRenderer = toRenderLayerModelObject(document().body()->firstChild()->firstChild()->renderer()); |
+ GraphicsContext* context = new GraphicsContext(nullptr); |
+ |
+ ClipRect firstClipRect(IntRect(1, 1, 2, 2)); |
+ { |
+ ClipRecorder clipRecorder(firstRenderer, context, DisplayItem::ClipLayerForeground, firstClipRect); |
+ drawRect(context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
+ drawRect(context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
+ } |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 4, |
+ TestDisplayItem(firstRenderer, DisplayItem::ClipLayerForeground), |
+ TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(firstRenderer, DisplayItem::EndClip)); |
+ |
+ renderView()->viewDisplayList().invalidate(firstRenderer); |
+ drawRect(context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
+ drawRect(context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 2, |
+ TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackground)); |
+ |
+ renderView()->viewDisplayList().invalidate(secondRenderer); |
+ drawRect(context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
+ ClipRect secondClipRect(IntRect(1, 1, 2, 2)); |
+ { |
+ ClipRecorder clipRecorder(secondRenderer, context, DisplayItem::ClipLayerForeground, secondClipRect); |
+ drawRect(context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); |
+ } |
+ |
+ EXPECT_DISPLAY_LIST(renderView()->viewDisplayList().paintList(), 4, |
+ TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(secondRenderer, DisplayItem::ClipLayerForeground), |
+ TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackground), |
+ TestDisplayItem(secondRenderer, DisplayItem::EndClip)); |
} |
} |