OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "core/paint/LayerClipRecorder.h" | 7 #include "core/paint/LayerClipRecorder.h" |
8 #include "core/paint/LayerPainter.h" | 8 #include "core/paint/LayerPainter.h" |
9 #include "core/paint/RenderDrawingRecorder.h" | 9 #include "core/paint/RenderDrawingRecorder.h" |
10 #include "core/rendering/RenderView.h" | 10 #include "core/rendering/RenderView.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 { | 31 { |
32 RuntimeEnabledFeatures::setSlimmingPaintEnabled(true); | 32 RuntimeEnabledFeatures::setSlimmingPaintEnabled(true); |
33 | 33 |
34 RenderingTest::SetUp(); | 34 RenderingTest::SetUp(); |
35 enableCompositing(); | 35 enableCompositing(); |
36 | 36 |
37 m_renderView = document().view()->renderView(); | 37 m_renderView = document().view()->renderView(); |
38 ASSERT_TRUE(m_renderView); | 38 ASSERT_TRUE(m_renderView); |
39 } | 39 } |
40 | 40 |
| 41 virtual void TearDown() override |
| 42 { |
| 43 RuntimeEnabledFeatures::setSlimmingPaintEnabled(false); |
| 44 RuntimeEnabledFeatures::setSlimmingPaintDisplayItemCacheEnabled(false); |
| 45 } |
| 46 |
41 RenderView* m_renderView; | 47 RenderView* m_renderView; |
42 }; | 48 }; |
43 | 49 |
44 class TestDisplayItem : public DisplayItem { | 50 class TestDisplayItem : public DisplayItem { |
45 public: | 51 public: |
46 TestDisplayItem(const RenderObject* renderer, Type type) : DisplayItem(rende
rer->displayItemClient(), type) { } | 52 TestDisplayItem(const RenderObject* renderer, Type type) : DisplayItem(rende
rer->displayItemClient(), type) { } |
47 | 53 |
48 virtual void replay(GraphicsContext*) override final { ASSERT_NOT_REACHED();
} | 54 virtual void replay(GraphicsContext*) override final { ASSERT_NOT_REACHED();
} |
49 virtual void appendToWebDisplayItemList(WebDisplayItemList*) const override
final { ASSERT_NOT_REACHED(); } | 55 virtual void appendToWebDisplayItemList(WebDisplayItemList*) const override
final { ASSERT_NOT_REACHED(); } |
50 #ifndef NDEBUG | 56 #ifndef NDEBUG |
51 virtual const char* name() const override final { return "Test"; } | 57 virtual const char* name() const override final { return "Test"; } |
52 #endif | 58 #endif |
53 }; | 59 }; |
54 | 60 |
55 #ifndef NDEBUG | 61 #ifndef NDEBUG |
56 #define TRACE_DISPLAY_ITEMS(expected, actual) \ | 62 #define TRACE_DISPLAY_ITEMS(expected, actual) \ |
57 String trace = "Expected: " + (expected).asDebugString() + " Actual: " + (ac
tual).asDebugString(); \ | 63 String trace = "Expected: " + (expected).asDebugString() + " Actual: " + (ac
tual).asDebugString(); \ |
58 SCOPED_TRACE(trace.utf8().data()); | 64 SCOPED_TRACE(trace.utf8().data()); |
59 #else | 65 #else |
60 #define TRACE_DISPLAY_ITEMS(expected, actual) | 66 #define TRACE_DISPLAY_ITEMS(expected, actual) |
61 #endif | 67 #endif |
62 | 68 |
63 #define EXPECT_DISPLAY_LIST(actual, expectedSize, ...) { \ | 69 #define EXPECT_DISPLAY_LIST(actual, expectedSize, ...) { \ |
64 EXPECT_EQ((size_t)expectedSize, actual.size()); \ | 70 EXPECT_EQ((size_t)expectedSize, actual.size()); \ |
65 const TestDisplayItem expected[] = { __VA_ARGS__ }; \ | 71 const TestDisplayItem expected[] = { __VA_ARGS__ }; \ |
66 for (size_t index = 0; index < expectedSize; index++) { \ | 72 for (size_t index = 0; index < std::min<size_t>(actual.size(), expectedSize)
; index++) { \ |
67 TRACE_DISPLAY_ITEMS(expected[index], *actual[index]); \ | 73 TRACE_DISPLAY_ITEMS(expected[index], *actual[index]); \ |
68 EXPECT_EQ(expected[index].client(), actual[index]->client()); \ | 74 EXPECT_EQ(expected[index].client(), actual[index]->client()); \ |
69 EXPECT_EQ(expected[index].type(), actual[index]->type()); \ | 75 EXPECT_EQ(expected[index].type(), actual[index]->type()); \ |
70 } \ | 76 } \ |
71 } | 77 } |
72 | 78 |
73 void drawRect(GraphicsContext* context, RenderObject* renderer, PaintPhase phase
, const FloatRect& bound) | 79 void drawRect(GraphicsContext* context, RenderObject* renderer, PaintPhase phase
, const FloatRect& bound) |
74 { | 80 { |
75 RenderDrawingRecorder drawingRecorder(context, *renderer, phase, bound); | 81 RenderDrawingRecorder drawingRecorder(context, *renderer, phase, bound); |
76 if (drawingRecorder.canUseCachedDrawing()) | 82 if (drawingRecorder.canUseCachedDrawing()) |
77 return; | 83 return; |
78 IntRect rect(0, 0, 10, 10); | 84 IntRect rect(0, 0, 10, 10); |
79 context->drawRect(rect); | 85 context->drawRect(rect); |
80 } | 86 } |
81 | 87 |
82 void drawClippedRect(GraphicsContext* context, RenderLayerModelObject* renderer,
PaintPhase phase, const FloatRect& bound) | 88 void drawClippedRect(GraphicsContext* context, RenderLayerModelObject* renderer,
PaintPhase phase, const FloatRect& bound) |
83 { | 89 { |
84 IntRect rect(1, 1, 9, 9); | 90 IntRect rect(1, 1, 9, 9); |
85 ClipRect clipRect(rect); | 91 ClipRect clipRect(rect); |
86 LayerClipRecorder layerClipRecorder(renderer, context, DisplayItem::ClipLaye
rForeground, clipRect, 0, LayoutPoint(), PaintLayerFlags()); | 92 LayerClipRecorder layerClipRecorder(renderer, context, DisplayItem::ClipLaye
rForeground, clipRect, 0, LayoutPoint(), PaintLayerFlags()); |
87 drawRect(context, renderer, phase, bound); | 93 drawRect(context, renderer, phase, bound); |
88 } | 94 } |
89 | 95 |
90 TEST_F(ViewDisplayListTest, ViewDisplayListTest_NestedRecorders) | 96 TEST_F(ViewDisplayListTest, ViewDisplayListTest_NestedRecorders) |
91 { | 97 { |
92 GraphicsContext context(nullptr, &rootDisplayItemList()); | 98 GraphicsContext context(nullptr, &rootDisplayItemList()); |
93 FloatRect bound = renderView()->viewRect(); | 99 FloatRect bound = renderView()->viewRect(); |
94 | 100 |
95 drawClippedRect(&context, renderView(), PaintPhaseForeground, bound); | 101 drawClippedRect(&context, renderView(), PaintPhaseForeground, bound); |
| 102 rootDisplayItemList().endNewPaints(); |
96 | 103 |
97 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, | 104 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, |
98 TestDisplayItem(renderView(), DisplayItem::ClipLayerForeground), | 105 TestDisplayItem(renderView(), DisplayItem::ClipLayerForeground), |
99 TestDisplayItem(renderView(), DisplayItem::DrawingPaintPhaseForeground), | 106 TestDisplayItem(renderView(), DisplayItem::DrawingPaintPhaseForeground), |
100 TestDisplayItem(renderView(), DisplayItem::EndClip)); | 107 TestDisplayItem(renderView(), DisplayItem::EndClip)); |
101 } | 108 } |
102 | 109 |
103 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateBasic) | 110 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateBasic) |
104 { | 111 { |
105 setBodyInnerHTML("<div id='first'><div id='second'></div></div>"); | 112 setBodyInnerHTML("<div id='first'><div id='second'></div></div>"); |
106 RenderObject* first = document().body()->firstChild()->renderer(); | 113 RenderObject* first = document().body()->firstChild()->renderer(); |
107 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); | 114 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); |
108 GraphicsContext context(nullptr, &rootDisplayItemList()); | 115 GraphicsContext context(nullptr, &rootDisplayItemList()); |
109 | 116 |
110 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300
, 300)); | 117 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300
, 300)); |
111 drawRect(&context, second, PaintPhaseChildBlockBackground, FloatRect(100, 10
0, 200, 200)); | 118 drawRect(&context, second, PaintPhaseChildBlockBackground, FloatRect(100, 10
0, 200, 200)); |
112 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); | 119 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); |
| 120 rootDisplayItemList().endNewPaints(); |
113 | 121 |
114 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, | 122 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, |
115 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 123 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
116 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseChildBlockBackgrou
nd), | 124 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseChildBlockBackgrou
nd), |
117 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); | 125 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
118 | 126 |
119 rootDisplayItemList().invalidate(second->displayItemClient()); | 127 rootDisplayItemList().invalidate(second->displayItemClient()); |
120 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300
, 300)); | 128 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300
, 300)); |
121 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); | 129 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); |
| 130 rootDisplayItemList().endNewPaints(); |
122 | 131 |
123 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 132 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
124 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 133 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
125 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); | 134 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
126 } | 135 } |
127 | 136 |
128 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateSwapOrder) | 137 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateSwapOrder) |
129 { | 138 { |
130 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='unaf
fected'></div>"); | 139 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='unaf
fected'></div>"); |
131 RenderObject* first = document().body()->firstChild()->renderer(); | 140 RenderObject* first = document().body()->firstChild()->renderer(); |
132 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); | 141 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); |
133 RenderObject* unaffected = document().body()->firstChild()->nextSibling()->r
enderer(); | 142 RenderObject* unaffected = document().body()->firstChild()->nextSibling()->r
enderer(); |
134 GraphicsContext context(nullptr, &rootDisplayItemList()); | 143 GraphicsContext context(nullptr, &rootDisplayItemList()); |
135 | 144 |
136 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); | 145 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); |
137 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); | 146 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); |
138 drawRect(&context, unaffected, PaintPhaseBlockBackground, FloatRect(300, 300
, 10, 10)); | 147 drawRect(&context, unaffected, PaintPhaseBlockBackground, FloatRect(300, 300
, 10, 10)); |
| 148 rootDisplayItemList().endNewPaints(); |
139 | 149 |
140 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, | 150 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, |
141 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 151 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
142 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 152 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
143 TestDisplayItem(unaffected, DisplayItem::DrawingPaintPhaseBlockBackgroun
d)); | 153 TestDisplayItem(unaffected, DisplayItem::DrawingPaintPhaseBlockBackgroun
d)); |
144 | 154 |
145 rootDisplayItemList().invalidate(second->displayItemClient()); | 155 rootDisplayItemList().invalidate(second->displayItemClient()); |
146 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); | 156 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); |
147 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); | 157 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); |
| 158 drawRect(&context, unaffected, PaintPhaseBlockBackground, FloatRect(300, 300
, 10, 10)); |
| 159 rootDisplayItemList().endNewPaints(); |
148 | 160 |
149 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, | 161 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, |
150 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 162 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
151 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 163 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
152 TestDisplayItem(unaffected, DisplayItem::DrawingPaintPhaseBlockBackgroun
d)); | 164 TestDisplayItem(unaffected, DisplayItem::DrawingPaintPhaseBlockBackgroun
d)); |
153 } | 165 } |
154 | 166 |
155 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateNewItemInMiddle) | 167 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateNewItemInMiddle) |
156 { | 168 { |
157 setBodyInnerHTML("<div id='first'><div id='second'><div id='third'></div></d
iv></div>"); | 169 setBodyInnerHTML("<div id='first'><div id='second'><div id='third'></div></d
iv></div>"); |
158 RenderObject* first = document().body()->firstChild()->renderer(); | 170 RenderObject* first = document().body()->firstChild()->renderer(); |
159 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); | 171 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); |
160 RenderObject* third = document().body()->firstChild()->firstChild()->firstCh
ild()->renderer(); | 172 RenderObject* third = document().body()->firstChild()->firstChild()->firstCh
ild()->renderer(); |
161 GraphicsContext context(nullptr, &rootDisplayItemList()); | 173 GraphicsContext context(nullptr, &rootDisplayItemList()); |
162 | 174 |
163 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); | 175 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); |
164 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); | 176 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); |
| 177 rootDisplayItemList().endNewPaints(); |
165 | 178 |
166 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 179 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
167 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 180 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
168 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground)); | 181 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground)); |
169 | 182 |
170 rootDisplayItemList().invalidate(third->displayItemClient()); | 183 rootDisplayItemList().invalidate(third->displayItemClient()); |
171 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); | 184 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); |
172 drawRect(&context, third, PaintPhaseBlockBackground, FloatRect(125, 100, 200
, 50)); | 185 drawRect(&context, third, PaintPhaseBlockBackground, FloatRect(125, 100, 200
, 50)); |
173 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); | 186 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); |
| 187 rootDisplayItemList().endNewPaints(); |
174 | 188 |
175 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, | 189 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, |
176 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 190 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
177 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), | 191 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
178 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground)); | 192 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground)); |
179 } | 193 } |
180 | 194 |
181 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases) | 195 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases) |
182 { | 196 { |
183 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='thir
d'></div>"); | 197 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='thir
d'></div>"); |
184 RenderObject* first = document().body()->firstChild()->renderer(); | 198 RenderObject* first = document().body()->firstChild()->renderer(); |
185 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); | 199 RenderObject* second = document().body()->firstChild()->firstChild()->render
er(); |
186 RenderObject* third = document().body()->firstChild()->nextSibling()->render
er(); | 200 RenderObject* third = document().body()->firstChild()->nextSibling()->render
er(); |
187 GraphicsContext context(nullptr, &rootDisplayItemList()); | 201 GraphicsContext context(nullptr, &rootDisplayItemList()); |
188 | 202 |
189 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); | 203 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); |
190 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); | 204 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); |
191 drawRect(&context, third, PaintPhaseBlockBackground, FloatRect(300, 100, 50,
50)); | 205 drawRect(&context, third, PaintPhaseBlockBackground, FloatRect(300, 100, 50,
50)); |
192 drawRect(&context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100
)); | 206 drawRect(&context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100
)); |
193 drawRect(&context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200
)); | 207 drawRect(&context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200
)); |
194 drawRect(&context, third, PaintPhaseForeground, FloatRect(300, 100, 50, 50))
; | 208 drawRect(&context, third, PaintPhaseForeground, FloatRect(300, 100, 50, 50))
; |
195 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); | 209 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); |
196 drawRect(&context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); | 210 drawRect(&context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); |
197 drawRect(&context, third, PaintPhaseOutline, FloatRect(300, 100, 50, 50)); | 211 drawRect(&context, third, PaintPhaseOutline, FloatRect(300, 100, 50, 50)); |
| 212 rootDisplayItemList().endNewPaints(); |
198 | 213 |
199 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 9, | 214 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 9, |
200 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 215 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
201 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 216 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
202 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), | 217 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
203 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), | 218 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), |
204 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseForeground), | 219 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseForeground), |
205 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), | 220 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), |
206 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), | 221 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
207 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), | 222 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), |
208 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); | 223 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); |
209 | 224 |
210 rootDisplayItemList().invalidate(second->displayItemClient()); | 225 rootDisplayItemList().invalidate(second->displayItemClient()); |
211 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); | 226 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100
, 100)); |
212 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); | 227 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50
, 200)); |
| 228 drawRect(&context, third, PaintPhaseBlockBackground, FloatRect(300, 100, 50,
50)); |
213 drawRect(&context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100
)); | 229 drawRect(&context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100
)); |
214 drawRect(&context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200
)); | 230 drawRect(&context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200
)); |
| 231 drawRect(&context, third, PaintPhaseForeground, FloatRect(300, 100, 50, 50))
; |
215 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); | 232 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); |
216 drawRect(&context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); | 233 drawRect(&context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); |
| 234 drawRect(&context, third, PaintPhaseOutline, FloatRect(300, 100, 50, 50)); |
| 235 rootDisplayItemList().endNewPaints(); |
217 | 236 |
218 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 9, | 237 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 9, |
219 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 238 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
220 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 239 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
221 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), | 240 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
222 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), | 241 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), |
223 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseForeground), | 242 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseForeground), |
224 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), | 243 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), |
225 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), | 244 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
226 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), | 245 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline), |
227 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); | 246 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); |
228 | 247 |
| 248 // The following is only applicable when we support incremental paint. |
| 249 #if 0 |
229 rootDisplayItemList().invalidate(second->displayItemClient()); | 250 rootDisplayItemList().invalidate(second->displayItemClient()); |
230 | 251 |
231 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 6, | 252 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 6, |
232 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 253 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
233 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), | 254 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseBlockBackground), |
234 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), | 255 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseForeground), |
235 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), | 256 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseForeground), |
236 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), | 257 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline), |
237 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); | 258 TestDisplayItem(third, DisplayItem::DrawingPaintPhaseOutline)); |
| 259 #endif |
238 } | 260 } |
239 | 261 |
240 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstNoOverlap) | 262 // This test is only applicable when we support incremental paint. |
| 263 TEST_F(ViewDisplayListTest, DISABLED_ViewDisplayListTest_UpdateAddFirstNoOverlap
) |
241 { | 264 { |
242 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); | 265 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); |
243 RenderObject* first = document().body()->firstChild()->renderer(); | 266 RenderObject* first = document().body()->firstChild()->renderer(); |
244 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); | 267 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); |
245 GraphicsContext context(nullptr, &rootDisplayItemList()); | 268 GraphicsContext context(nullptr, &rootDisplayItemList()); |
246 | 269 |
247 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50
, 50)); | 270 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50
, 50)); |
248 drawRect(&context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); | 271 drawRect(&context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
249 | 272 |
250 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 273 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
(...skipping 10 matching lines...) Expand all Loading... |
261 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 284 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
262 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); | 285 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
263 | 286 |
264 rootDisplayItemList().invalidate(first->displayItemClient()); | 287 rootDisplayItemList().invalidate(first->displayItemClient()); |
265 | 288 |
266 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 289 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
267 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 290 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
268 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); | 291 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
269 } | 292 } |
270 | 293 |
271 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstOverlap) | 294 // This test is only applicable when we support incremental paint. |
| 295 TEST_F(ViewDisplayListTest, DISABLED_ViewDisplayListTest_UpdateAddFirstOverlap) |
272 { | 296 { |
273 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); | 297 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); |
274 RenderObject* first = document().body()->firstChild()->renderer(); | 298 RenderObject* first = document().body()->firstChild()->renderer(); |
275 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); | 299 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); |
276 GraphicsContext context(nullptr, &rootDisplayItemList()); | 300 GraphicsContext context(nullptr, &rootDisplayItemList()); |
277 | 301 |
278 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50
, 50)); | 302 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50
, 50)); |
279 drawRect(&context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); | 303 drawRect(&context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
280 | 304 |
281 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 305 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
(...skipping 15 matching lines...) Expand all Loading... |
297 | 321 |
298 rootDisplayItemList().invalidate(first->displayItemClient()); | 322 rootDisplayItemList().invalidate(first->displayItemClient()); |
299 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50
, 50)); | 323 drawRect(&context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50
, 50)); |
300 drawRect(&context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); | 324 drawRect(&context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); |
301 | 325 |
302 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 326 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
303 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), | 327 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseBlockBackground), |
304 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); | 328 TestDisplayItem(second, DisplayItem::DrawingPaintPhaseOutline)); |
305 } | 329 } |
306 | 330 |
307 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastNoOverlap) | 331 // This test is only applicable when we support incremental paint. |
| 332 TEST_F(ViewDisplayListTest, DISABLED_ViewDisplayListTest_UpdateAddLastNoOverlap) |
308 { | 333 { |
309 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); | 334 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); |
310 RenderObject* first = document().body()->firstChild()->renderer(); | 335 RenderObject* first = document().body()->firstChild()->renderer(); |
311 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); | 336 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); |
312 GraphicsContext context(nullptr, &rootDisplayItemList()); | 337 GraphicsContext context(nullptr, &rootDisplayItemList()); |
313 | 338 |
314 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50,
50)); | 339 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50,
50)); |
315 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50)); | 340 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50)); |
316 | 341 |
317 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 342 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
(...skipping 10 matching lines...) Expand all Loading... |
328 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 353 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
329 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); | 354 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
330 | 355 |
331 rootDisplayItemList().invalidate(second->displayItemClient()); | 356 rootDisplayItemList().invalidate(second->displayItemClient()); |
332 | 357 |
333 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 358 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
334 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), | 359 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseBlockBackground), |
335 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); | 360 TestDisplayItem(first, DisplayItem::DrawingPaintPhaseOutline)); |
336 } | 361 } |
337 | 362 |
338 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastOverlap) | 363 // This test is only applicable when we support incremental paint. |
| 364 TEST_F(ViewDisplayListTest, DISABLED_ViewDisplayListTest_UpdateAddLastOverlap) |
339 { | 365 { |
340 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); | 366 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); |
341 RenderObject* first = document().body()->firstChild()->renderer(); | 367 RenderObject* first = document().body()->firstChild()->renderer(); |
342 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); | 368 RenderObject* second = document().body()->firstChild()->nextSibling()->rende
rer(); |
343 GraphicsContext context(nullptr, &rootDisplayItemList()); | 369 GraphicsContext context(nullptr, &rootDisplayItemList()); |
344 | 370 |
345 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150
, 150)); | 371 drawRect(&context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150
, 150)); |
346 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); | 372 drawRect(&context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); |
347 | 373 |
348 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 374 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
(...skipping 29 matching lines...) Expand all Loading... |
378 RenderLayerModelObject* firstRenderer = toRenderLayerModelObject(document().
body()->firstChild()->renderer()); | 404 RenderLayerModelObject* firstRenderer = toRenderLayerModelObject(document().
body()->firstChild()->renderer()); |
379 RenderLayerModelObject* secondRenderer = toRenderLayerModelObject(document()
.body()->firstChild()->firstChild()->renderer()); | 405 RenderLayerModelObject* secondRenderer = toRenderLayerModelObject(document()
.body()->firstChild()->firstChild()->renderer()); |
380 GraphicsContext context(nullptr, &rootDisplayItemList()); | 406 GraphicsContext context(nullptr, &rootDisplayItemList()); |
381 | 407 |
382 ClipRect firstClipRect(IntRect(1, 1, 2, 2)); | 408 ClipRect firstClipRect(IntRect(1, 1, 2, 2)); |
383 { | 409 { |
384 LayerClipRecorder layerClipRecorder(firstRenderer, &context, DisplayItem
::ClipLayerForeground, firstClipRect, 0, LayoutPoint(), PaintLayerFlags()); | 410 LayerClipRecorder layerClipRecorder(firstRenderer, &context, DisplayItem
::ClipLayerForeground, firstClipRect, 0, LayoutPoint(), PaintLayerFlags()); |
385 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(1
00, 100, 150, 150)); | 411 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(1
00, 100, 150, 150)); |
386 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(
100, 100, 150, 150)); | 412 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(
100, 100, 150, 150)); |
387 } | 413 } |
| 414 rootDisplayItemList().endNewPaints(); |
388 | 415 |
389 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 4, | 416 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 4, |
390 TestDisplayItem(firstRenderer, DisplayItem::ClipLayerForeground), | 417 TestDisplayItem(firstRenderer, DisplayItem::ClipLayerForeground), |
391 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), | 418 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), |
392 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round), | 419 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round), |
393 TestDisplayItem(firstRenderer, DisplayItem::EndClip)); | 420 TestDisplayItem(firstRenderer, DisplayItem::EndClip)); |
394 | 421 |
395 rootDisplayItemList().invalidate(firstRenderer->displayItemClient()); | 422 rootDisplayItemList().invalidate(firstRenderer->displayItemClient()); |
396 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 423 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
397 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 424 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
| 425 rootDisplayItemList().endNewPaints(); |
398 | 426 |
399 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 427 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
400 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), | 428 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), |
401 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round)); | 429 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round)); |
402 | 430 |
403 rootDisplayItemList().invalidate(secondRenderer->displayItemClient()); | 431 rootDisplayItemList().invalidate(secondRenderer->displayItemClient()); |
404 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 432 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
405 ClipRect secondClipRect(IntRect(1, 1, 2, 2)); | 433 ClipRect secondClipRect(IntRect(1, 1, 2, 2)); |
406 { | 434 { |
407 LayerClipRecorder layerClipRecorder(secondRenderer, &context, DisplayIte
m::ClipLayerForeground, secondClipRect, 0, LayoutPoint(), PaintLayerFlags()); | 435 LayerClipRecorder layerClipRecorder(secondRenderer, &context, DisplayIte
m::ClipLayerForeground, secondClipRect, 0, LayoutPoint(), PaintLayerFlags()); |
408 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(
100, 100, 150, 150)); | 436 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(
100, 100, 150, 150)); |
409 } | 437 } |
| 438 rootDisplayItemList().endNewPaints(); |
410 | 439 |
411 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 4, | 440 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 4, |
412 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), | 441 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), |
413 TestDisplayItem(secondRenderer, DisplayItem::ClipLayerForeground), | 442 TestDisplayItem(secondRenderer, DisplayItem::ClipLayerForeground), |
414 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round), | 443 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round), |
415 TestDisplayItem(secondRenderer, DisplayItem::EndClip)); | 444 TestDisplayItem(secondRenderer, DisplayItem::EndClip)); |
416 } | 445 } |
417 | 446 |
418 TEST_F(ViewDisplayListTest, CachedDisplayItems) | 447 TEST_F(ViewDisplayListTest, CachedDisplayItems) |
419 { | 448 { |
| 449 RuntimeEnabledFeatures::setSlimmingPaintDisplayItemCacheEnabled(true); |
| 450 |
420 setBodyInnerHTML("<div id='first'><div id='second'></div></div>"); | 451 setBodyInnerHTML("<div id='first'><div id='second'></div></div>"); |
421 RenderLayerModelObject* firstRenderer = toRenderLayerModelObject(document().
body()->firstChild()->renderer()); | 452 RenderLayerModelObject* firstRenderer = toRenderLayerModelObject(document().
body()->firstChild()->renderer()); |
422 RenderLayerModelObject* secondRenderer = toRenderLayerModelObject(document()
.body()->firstChild()->firstChild()->renderer()); | 453 RenderLayerModelObject* secondRenderer = toRenderLayerModelObject(document()
.body()->firstChild()->firstChild()->renderer()); |
423 GraphicsContext context(nullptr, &rootDisplayItemList()); | 454 GraphicsContext context(nullptr, &rootDisplayItemList()); |
424 | 455 |
425 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 456 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
426 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 457 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
| 458 rootDisplayItemList().endNewPaints(); |
427 | 459 |
428 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 460 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
429 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), | 461 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), |
430 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round)); | 462 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round)); |
431 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(firstRenderer->displayI
temClient())); | 463 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(firstRenderer->displayI
temClient())); |
432 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(secondRenderer->display
ItemClient())); | 464 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(secondRenderer->display
ItemClient())); |
433 DisplayItem* firstDisplayItem = rootDisplayItemList().paintList()[0].get(); | 465 DisplayItem* firstDisplayItem = rootDisplayItemList().paintList()[0].get(); |
434 DisplayItem* secondDisplayItem = rootDisplayItemList().paintList()[1].get(); | 466 DisplayItem* secondDisplayItem = rootDisplayItemList().paintList()[1].get(); |
435 | 467 |
436 rootDisplayItemList().invalidate(firstRenderer->displayItemClient()); | 468 rootDisplayItemList().invalidate(firstRenderer->displayItemClient()); |
437 EXPECT_FALSE(rootDisplayItemList().clientCacheIsValid(firstRenderer->display
ItemClient())); | 469 EXPECT_FALSE(rootDisplayItemList().clientCacheIsValid(firstRenderer->display
ItemClient())); |
438 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(secondRenderer->display
ItemClient())); | 470 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(secondRenderer->display
ItemClient())); |
439 | 471 |
440 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 472 drawRect(&context, firstRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
441 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); | 473 drawRect(&context, secondRenderer, PaintPhaseBlockBackground, FloatRect(100,
100, 150, 150)); |
| 474 rootDisplayItemList().endNewPaints(); |
442 | 475 |
443 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 476 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
444 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), | 477 TestDisplayItem(firstRenderer, DisplayItem::DrawingPaintPhaseBlockBackgr
ound), |
445 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round)); | 478 TestDisplayItem(secondRenderer, DisplayItem::DrawingPaintPhaseBlockBackg
round)); |
446 // The first display item should be updated. | 479 // The first display item should be updated. |
447 EXPECT_NE(firstDisplayItem, rootDisplayItemList().paintList()[0].get()); | 480 EXPECT_NE(firstDisplayItem, rootDisplayItemList().paintList()[0].get()); |
448 // The second display item should be cached. | 481 // The second display item should be cached. |
449 EXPECT_EQ(secondDisplayItem, rootDisplayItemList().paintList()[1].get()); | 482 EXPECT_EQ(secondDisplayItem, rootDisplayItemList().paintList()[1].get()); |
450 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(firstRenderer->displayI
temClient())); | 483 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(firstRenderer->displayI
temClient())); |
451 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(secondRenderer->display
ItemClient())); | 484 EXPECT_TRUE(rootDisplayItemList().clientCacheIsValid(secondRenderer->display
ItemClient())); |
(...skipping 10 matching lines...) Expand all Loading... |
462 RenderLayer* rootLayer = renderView->layer(); | 495 RenderLayer* rootLayer = renderView->layer(); |
463 RenderObject* htmlRenderer = document().documentElement()->renderer(); | 496 RenderObject* htmlRenderer = document().documentElement()->renderer(); |
464 Element* div = toElement(document().body()->firstChild()); | 497 Element* div = toElement(document().body()->firstChild()); |
465 RenderObject* divRenderer = document().body()->firstChild()->renderer(); | 498 RenderObject* divRenderer = document().body()->firstChild()->renderer(); |
466 RenderObject* textRenderer = div->firstChild()->renderer(); | 499 RenderObject* textRenderer = div->firstChild()->renderer(); |
467 | 500 |
468 SkCanvas canvas(800, 600); | 501 SkCanvas canvas(800, 600); |
469 GraphicsContext context(&canvas, &rootDisplayItemList()); | 502 GraphicsContext context(&canvas, &rootDisplayItemList()); |
470 LayerPaintingInfo paintingInfo(rootLayer, LayoutRect(0, 0, 800, 600), PaintB
ehaviorNormal, LayoutSize()); | 503 LayerPaintingInfo paintingInfo(rootLayer, LayoutRect(0, 0, 800, 600), PaintB
ehaviorNormal, LayoutSize()); |
471 LayerPainter(*rootLayer).paintLayerContents(&context, paintingInfo, PaintLay
erPaintingCompositingAllPhases); | 504 LayerPainter(*rootLayer).paintLayerContents(&context, paintingInfo, PaintLay
erPaintingCompositingAllPhases); |
| 505 rootDisplayItemList().endNewPaints(); |
472 | 506 |
473 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, | 507 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 2, |
474 TestDisplayItem(htmlRenderer, DisplayItem::DrawingPaintPhaseBlockBackgro
und), | 508 TestDisplayItem(htmlRenderer, DisplayItem::DrawingPaintPhaseBlockBackgro
und), |
475 TestDisplayItem(textRenderer, DisplayItem::DrawingPaintPhaseForeground))
; | 509 TestDisplayItem(textRenderer, DisplayItem::DrawingPaintPhaseForeground))
; |
476 | 510 |
477 div->focus(); | 511 div->focus(); |
478 document().view()->updateLayoutAndStyleForPainting(); | 512 document().view()->updateLayoutAndStyleForPainting(); |
479 LayerPainter(*rootLayer).paintLayerContents(&context, paintingInfo, PaintLay
erPaintingCompositingAllPhases); | 513 LayerPainter(*rootLayer).paintLayerContents(&context, paintingInfo, PaintLay
erPaintingCompositingAllPhases); |
| 514 rootDisplayItemList().endNewPaints(); |
480 | 515 |
481 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, | 516 EXPECT_DISPLAY_LIST(rootDisplayItemList().paintList(), 3, |
482 TestDisplayItem(htmlRenderer, DisplayItem::DrawingPaintPhaseBlockBackgro
und), | 517 TestDisplayItem(htmlRenderer, DisplayItem::DrawingPaintPhaseBlockBackgro
und), |
483 TestDisplayItem(textRenderer, DisplayItem::DrawingPaintPhaseForeground), | 518 TestDisplayItem(textRenderer, DisplayItem::DrawingPaintPhaseForeground), |
484 TestDisplayItem(divRenderer, DisplayItem::DrawingPaintPhaseCaret)); | 519 TestDisplayItem(divRenderer, DisplayItem::DrawingPaintPhaseCaret)); |
485 } | 520 } |
486 | 521 |
487 } // anonymous namespace | 522 } // anonymous namespace |
488 } // namespace blink | 523 } // namespace blink |
OLD | NEW |