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

Side by Side Diff: Source/core/paint/ViewDisplayListTest.cpp

Issue 723103002: Revert "Move ViewDisplayList to GraphicsLayer" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/paint/ViewDisplayList.cpp ('k') | Source/core/rendering/PaintPhase.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "core/paint/ViewDisplayList.h"
6 7
7 #include "core/paint/ClipRecorder.h" 8 #include "core/paint/ClipRecorder.h"
8 #include "core/paint/DrawingRecorder.h" 9 #include "core/paint/DrawingRecorder.h"
9 #include "core/rendering/RenderView.h" 10 #include "core/rendering/RenderView.h"
10 #include "core/rendering/RenderingTestHelper.h" 11 #include "core/rendering/RenderingTestHelper.h"
11 #include "core/rendering/compositing/RenderLayerCompositor.h" 12 #include "core/rendering/compositing/RenderLayerCompositor.h"
12 #include "platform/graphics/GraphicsContext.h" 13 #include "platform/graphics/GraphicsContext.h"
13 #include "platform/graphics/GraphicsLayer.h"
14 #include "platform/graphics/paint/DisplayItemList.h"
15 #include <gtest/gtest.h> 14 #include <gtest/gtest.h>
16 15
17 namespace blink { 16 namespace blink {
18 namespace { 17 namespace {
19 18
20 class ViewDisplayListTest : public RenderingTest { 19 class ViewDisplayListTest : public RenderingTest {
21 public: 20 public:
22 ViewDisplayListTest() : m_renderView(nullptr) { } 21 ViewDisplayListTest() : m_renderView(nullptr) { }
23 22
24 protected: 23 protected:
25 RenderView* renderView() { return m_renderView; } 24 RenderView* renderView() { return m_renderView; }
26 DisplayItemList& rootDisplayItemList() { return renderView()->layer()->graph icsLayerBacking()->displayItemList(); }
27 25
28 private: 26 private:
29 virtual void SetUp() override 27 virtual void SetUp() override
30 { 28 {
31 RuntimeEnabledFeatures::setSlimmingPaintEnabled(true); 29 RuntimeEnabledFeatures::setSlimmingPaintEnabled(true);
32 30
33 RenderingTest::SetUp(); 31 RenderingTest::SetUp();
34 enableCompositing();
35 32
36 m_renderView = document().view()->renderView(); 33 m_renderView = document().view()->renderView();
37 ASSERT_TRUE(m_renderView); 34 ASSERT_TRUE(m_renderView);
38 } 35 }
39 36
40 RenderView* m_renderView; 37 RenderView* m_renderView;
41 }; 38 };
42 39
43 void drawRect(GraphicsContext* context, RenderObject* renderer, PaintPhase phase , const FloatRect& bound) 40 void drawRect(GraphicsContext* context, RenderObject* renderer, PaintPhase phase , const FloatRect& bound)
44 { 41 {
45 DrawingRecorder drawingRecorder(context, renderer, phase, bound); 42 DrawingRecorder drawingRecorder(context, renderer, phase, bound);
46 IntRect rect(0, 0, 10, 10); 43 IntRect rect(0, 0, 10, 10);
47 context->drawRect(rect); 44 context->drawRect(rect);
48 } 45 }
49 46
50 void drawClippedRect(GraphicsContext* context, RenderView* renderView, PaintPhas e phase, const FloatRect& bound) 47 void drawClippedRect(GraphicsContext* context, RenderView* renderView, PaintPhas e phase, const FloatRect& bound)
51 { 48 {
52 IntRect rect(1, 1, 9, 9); 49 IntRect rect(1, 1, 9, 9);
53 ClipRect clipRect(rect); 50 ClipRect clipRect(rect);
54 ClipRecorder clipRecorder(renderView->compositor()->rootRenderLayer(), conte xt, DisplayItem::ClipLayerForeground, clipRect); 51 ClipRecorder clipRecorder(renderView->compositor()->rootRenderLayer(), conte xt, DisplayItem::ClipLayerForeground, clipRect);
55 drawRect(context, renderView, phase, bound); 52 drawRect(context, renderView, phase, bound);
56 } 53 }
57 54
58 TEST_F(ViewDisplayListTest, ViewDisplayListTest_NestedRecorders) 55 TEST_F(ViewDisplayListTest, ViewDisplayListTest_NestedRecorders)
59 { 56 {
60 GraphicsContext* context = new GraphicsContext(nullptr); 57 GraphicsContext* context = new GraphicsContext(nullptr);
61 FloatRect bound = renderView()->viewRect(); 58 FloatRect bound = renderView()->viewRect();
62 59
63 drawClippedRect(context, renderView(), PaintPhaseForeground, bound); 60 drawClippedRect(context, renderView(), PaintPhaseForeground, bound);
64 EXPECT_EQ((size_t)3, rootDisplayItemList().paintList().size()); 61 EXPECT_EQ((size_t)3, renderView()->viewDisplayList().paintList().size());
65 62
66 // TODO(schenney): Check that the IDs are what we expect. 63 // TODO(schenney): Check that the IDs are what we expect.
67 } 64 }
68 65
69 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateBasic) 66 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateBasic)
70 { 67 {
71 setBodyInnerHTML("<div id='first'><div id='second'></div></div>"); 68 setBodyInnerHTML("<div id='first'><div id='second'></div></div>");
72 RenderObject* first = document().body()->firstChild()->renderer(); 69 RenderObject* first = document().body()->firstChild()->renderer();
73 RenderObject* second = document().body()->firstChild()->firstChild()->render er(); 70 RenderObject* second = document().body()->firstChild()->firstChild()->render er();
74 GraphicsContext* context = new GraphicsContext(nullptr); 71 GraphicsContext* context = new GraphicsContext(nullptr);
75 72
76 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300, 300)); 73 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300, 300));
77 drawRect(context, second, PaintPhaseChildBlockBackground, FloatRect(100, 100 , 200, 200)); 74 drawRect(context, second, PaintPhaseChildBlockBackground, FloatRect(100, 100 , 200, 200));
78 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); 75 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300));
79 76
80 EXPECT_EQ((size_t)3, rootDisplayItemList().paintList().size()); 77 EXPECT_EQ((size_t)3, renderView()->viewDisplayList().paintList().size());
81 78
82 rootDisplayItemList().invalidate(second); 79 renderView()->viewDisplayList().invalidate(second);
83 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300, 300)); 80 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 300, 300));
84 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300)); 81 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 300, 300));
85 EXPECT_EQ((size_t)2, rootDisplayItemList().paintList().size()); 82 EXPECT_EQ((size_t)2, renderView()->viewDisplayList().paintList().size());
86 } 83 }
87 84
88 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateSwapOrder) 85 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateSwapOrder)
89 { 86 {
90 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='unaf fected'></div>"); 87 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='unaf fected'></div>");
91 RenderObject* first = document().body()->firstChild()->renderer(); 88 RenderObject* first = document().body()->firstChild()->renderer();
92 RenderObject* second = document().body()->firstChild()->firstChild()->render er(); 89 RenderObject* second = document().body()->firstChild()->firstChild()->render er();
93 RenderObject* unaffected = document().body()->firstChild()->nextSibling()->r enderer(); 90 RenderObject* unaffected = document().body()->firstChild()->nextSibling()->r enderer();
94 GraphicsContext* context = new GraphicsContext(nullptr); 91 GraphicsContext* context = new GraphicsContext(nullptr);
95 92
96 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); 93 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100));
97 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); 94 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200));
98 drawRect(context, unaffected, PaintPhaseBlockBackground, FloatRect(300, 300, 10, 10)); 95 drawRect(context, unaffected, PaintPhaseBlockBackground, FloatRect(300, 300, 10, 10));
99 96
100 const PaintList& firstList = rootDisplayItemList().paintList(); 97 const PaintList& firstList = renderView()->viewDisplayList().paintList();
101 EXPECT_EQ((size_t)3, firstList.size()); 98 EXPECT_EQ((size_t)3, firstList.size());
102 EXPECT_EQ(first, firstList[0]->client()); 99 EXPECT_EQ(first, firstList[0]->renderer());
103 EXPECT_EQ(second, firstList[1]->client()); 100 EXPECT_EQ(second, firstList[1]->renderer());
104 EXPECT_EQ(unaffected, firstList[2]->client()); 101 EXPECT_EQ(unaffected, firstList[2]->renderer());
105 102
106 rootDisplayItemList().invalidate(second); 103 renderView()->viewDisplayList().invalidate(second);
107 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); 104 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200));
108 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); 105 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100));
109 106
110 const PaintList& secondList = rootDisplayItemList().paintList(); 107 const PaintList& secondList = renderView()->viewDisplayList().paintList();
111 EXPECT_EQ((size_t)3, secondList.size()); 108 EXPECT_EQ((size_t)3, secondList.size());
112 EXPECT_EQ(second, secondList[0]->client()); 109 EXPECT_EQ(second, secondList[0]->renderer());
113 EXPECT_EQ(first, secondList[1]->client()); 110 EXPECT_EQ(first, secondList[1]->renderer());
114 EXPECT_EQ(unaffected, secondList[2]->client()); 111 EXPECT_EQ(unaffected, secondList[2]->renderer());
115 } 112 }
116 113
117 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateNewItemInMiddle) 114 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateNewItemInMiddle)
118 { 115 {
119 setBodyInnerHTML("<div id='first'><div id='second'><div id='third'></div></d iv></div>"); 116 setBodyInnerHTML("<div id='first'><div id='second'><div id='third'></div></d iv></div>");
120 RenderObject* first = document().body()->firstChild()->renderer(); 117 RenderObject* first = document().body()->firstChild()->renderer();
121 RenderObject* second = document().body()->firstChild()->firstChild()->render er(); 118 RenderObject* second = document().body()->firstChild()->firstChild()->render er();
122 RenderObject* third = document().body()->firstChild()->firstChild()->firstCh ild()->renderer(); 119 RenderObject* third = document().body()->firstChild()->firstChild()->firstCh ild()->renderer();
123 GraphicsContext* context = new GraphicsContext(nullptr); 120 GraphicsContext* context = new GraphicsContext(nullptr);
124 121
125 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); 122 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100));
126 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); 123 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200));
127 124
128 const PaintList& firstList = rootDisplayItemList().paintList(); 125 const PaintList& firstList = renderView()->viewDisplayList().paintList();
129 EXPECT_EQ((size_t)2, firstList.size()); 126 EXPECT_EQ((size_t)2, firstList.size());
130 EXPECT_EQ(first, firstList[0]->client()); 127 EXPECT_EQ(first, firstList[0]->renderer());
131 EXPECT_EQ(second, firstList[1]->client()); 128 EXPECT_EQ(second, firstList[1]->renderer());
132 129
133 rootDisplayItemList().invalidate(third); 130 renderView()->viewDisplayList().invalidate(third);
134 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); 131 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100));
135 drawRect(context, third, PaintPhaseBlockBackground, FloatRect(125, 100, 200, 50)); 132 drawRect(context, third, PaintPhaseBlockBackground, FloatRect(125, 100, 200, 50));
136 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); 133 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200));
137 134
138 const PaintList& secondList = rootDisplayItemList().paintList(); 135 const PaintList& secondList = renderView()->viewDisplayList().paintList();
139 EXPECT_EQ((size_t)3, secondList.size()); 136 EXPECT_EQ((size_t)3, secondList.size());
140 EXPECT_EQ(first, secondList[0]->client()); 137 EXPECT_EQ(first, secondList[0]->renderer());
141 EXPECT_EQ(third, secondList[1]->client()); 138 EXPECT_EQ(third, secondList[1]->renderer());
142 EXPECT_EQ(second, secondList[2]->client()); 139 EXPECT_EQ(second, secondList[2]->renderer());
143 } 140 }
144 141
145 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases) 142 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateInvalidationWithPhases)
146 { 143 {
147 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='thir d'></div>"); 144 setBodyInnerHTML("<div id='first'><div id='second'></div></div><div id='thir d'></div>");
148 RenderObject* first = document().body()->firstChild()->renderer(); 145 RenderObject* first = document().body()->firstChild()->renderer();
149 RenderObject* second = document().body()->firstChild()->firstChild()->render er(); 146 RenderObject* second = document().body()->firstChild()->firstChild()->render er();
150 RenderObject* third = document().body()->firstChild()->nextSibling()->render er(); 147 RenderObject* third = document().body()->firstChild()->nextSibling()->render er();
151 GraphicsContext* context = new GraphicsContext(nullptr); 148 GraphicsContext* context = new GraphicsContext(nullptr);
152 149
153 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); 150 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100));
154 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); 151 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200));
155 drawRect(context, third, PaintPhaseBlockBackground, FloatRect(300, 100, 50, 50)); 152 drawRect(context, third, PaintPhaseBlockBackground, FloatRect(300, 100, 50, 50));
156 drawRect(context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100) ); 153 drawRect(context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100) );
157 drawRect(context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200) ); 154 drawRect(context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200) );
158 drawRect(context, third, PaintPhaseForeground, FloatRect(300, 100, 50, 50)); 155 drawRect(context, third, PaintPhaseForeground, FloatRect(300, 100, 50, 50));
159 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); 156 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100));
160 drawRect(context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); 157 drawRect(context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200));
161 drawRect(context, third, PaintPhaseOutline, FloatRect(300, 100, 50, 50)); 158 drawRect(context, third, PaintPhaseOutline, FloatRect(300, 100, 50, 50));
162 159
163 const PaintList& firstList = rootDisplayItemList().paintList(); 160 const PaintList& firstList = renderView()->viewDisplayList().paintList();
164 EXPECT_EQ((size_t)9, firstList.size()); 161 EXPECT_EQ((size_t)9, firstList.size());
165 for (int item = 0; item < 9; item += 3) { 162 for (int item = 0; item < 9; item += 3) {
166 EXPECT_EQ(first, firstList[item % 3 + 0]->client()); 163 EXPECT_EQ(first, firstList[item % 3 + 0]->renderer());
167 EXPECT_EQ(second, firstList[item % 3 + 1]->client()); 164 EXPECT_EQ(second, firstList[item % 3 + 1]->renderer());
168 EXPECT_EQ(third, firstList[item % 3 + 2]->client()); 165 EXPECT_EQ(third, firstList[item % 3 + 2]->renderer());
169 } 166 }
170 167
171 rootDisplayItemList().invalidate(second); 168 renderView()->viewDisplayList().invalidate(second);
172 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100)); 169 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 100, 100));
173 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200)); 170 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 200));
174 drawRect(context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100) ); 171 drawRect(context, first, PaintPhaseForeground, FloatRect(100, 100, 100, 100) );
175 drawRect(context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200) ); 172 drawRect(context, second, PaintPhaseForeground, FloatRect(100, 100, 50, 200) );
176 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100)); 173 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 100, 100));
177 drawRect(context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200)); 174 drawRect(context, second, PaintPhaseOutline, FloatRect(100, 100, 50, 200));
178 175
179 const PaintList& secondList = rootDisplayItemList().paintList(); 176 const PaintList& secondList = renderView()->viewDisplayList().paintList();
180 EXPECT_EQ((size_t)9, secondList.size()); 177 EXPECT_EQ((size_t)9, secondList.size());
181 for (int item = 0; item < 9; item += 3) { 178 for (int item = 0; item < 9; item += 3) {
182 EXPECT_EQ(first, secondList[item % 3 + 0]->client()); 179 EXPECT_EQ(first, secondList[item % 3 + 0]->renderer());
183 EXPECT_EQ(second, secondList[item % 3 + 1]->client()); 180 EXPECT_EQ(second, secondList[item % 3 + 1]->renderer());
184 EXPECT_EQ(third, secondList[item % 3 + 2]->client()); 181 EXPECT_EQ(third, secondList[item % 3 + 2]->renderer());
185 } 182 }
186 183
187 rootDisplayItemList().invalidate(second); 184 renderView()->viewDisplayList().invalidate(second);
188 const PaintList& thirdList = rootDisplayItemList().paintList(); 185 const PaintList& thirdList = renderView()->viewDisplayList().paintList();
189 EXPECT_EQ((size_t)6, thirdList.size()); 186 EXPECT_EQ((size_t)6, thirdList.size());
190 for (int item = 0; item < 6; item += 2) { 187 for (int item = 0; item < 6; item += 2) {
191 EXPECT_EQ(first, thirdList[item % 2 + 0]->client()); 188 EXPECT_EQ(first, thirdList[item % 2 + 0]->renderer());
192 EXPECT_EQ(third, thirdList[item % 2 + 1]->client()); 189 EXPECT_EQ(third, thirdList[item % 2 + 1]->renderer());
193 } 190 }
194 } 191 }
195 192
196 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstNoOverlap) 193 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstNoOverlap)
197 { 194 {
198 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); 195 setBodyInnerHTML("<div id='first'></div><div id='second'></div>");
199 RenderObject* first = document().body()->firstChild()->renderer(); 196 RenderObject* first = document().body()->firstChild()->renderer();
200 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer(); 197 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer();
201 GraphicsContext* context = new GraphicsContext(nullptr); 198 GraphicsContext* context = new GraphicsContext(nullptr);
202 199
203 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); 200 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50));
204 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); 201 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50));
205 202
206 const PaintList& firstList = rootDisplayItemList().paintList(); 203 const PaintList& firstList = renderView()->viewDisplayList().paintList();
207 EXPECT_EQ((size_t)2, firstList.size()); 204 EXPECT_EQ((size_t)2, firstList.size());
208 EXPECT_EQ(second, firstList[0]->client()); 205 EXPECT_EQ(second, firstList[0]->renderer());
209 EXPECT_EQ(second, firstList[1]->client()); 206 EXPECT_EQ(second, firstList[1]->renderer());
210 207
211 rootDisplayItemList().invalidate(first); 208 renderView()->viewDisplayList().invalidate(first);
212 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 50)); 209 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 50));
213 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50)); 210 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50));
214 211
215 const PaintList& secondList = rootDisplayItemList().paintList(); 212 const PaintList& secondList = renderView()->viewDisplayList().paintList();
216 EXPECT_EQ((size_t)4, secondList.size()); 213 EXPECT_EQ((size_t)4, secondList.size());
217 EXPECT_EQ(first, secondList[0]->client()); 214 EXPECT_EQ(first, secondList[0]->renderer());
218 EXPECT_EQ(first, secondList[1]->client()); 215 EXPECT_EQ(first, secondList[1]->renderer());
219 EXPECT_EQ(second, secondList[2]->client()); 216 EXPECT_EQ(second, secondList[2]->renderer());
220 EXPECT_EQ(second, secondList[3]->client()); 217 EXPECT_EQ(second, secondList[3]->renderer());
221 218
222 rootDisplayItemList().invalidate(first); 219 renderView()->viewDisplayList().invalidate(first);
223 const PaintList& thirdList = rootDisplayItemList().paintList(); 220 const PaintList& thirdList = renderView()->viewDisplayList().paintList();
224 EXPECT_EQ((size_t)2, thirdList.size()); 221 EXPECT_EQ((size_t)2, thirdList.size());
225 EXPECT_EQ(second, thirdList[0]->client()); 222 EXPECT_EQ(second, thirdList[0]->renderer());
226 EXPECT_EQ(second, thirdList[1]->client()); 223 EXPECT_EQ(second, thirdList[1]->renderer());
227 } 224 }
228 225
229 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstOverlap) 226 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddFirstOverlap)
230 { 227 {
231 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); 228 setBodyInnerHTML("<div id='first'></div><div id='second'></div>");
232 RenderObject* first = document().body()->firstChild()->renderer(); 229 RenderObject* first = document().body()->firstChild()->renderer();
233 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer(); 230 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer();
234 GraphicsContext* context = new GraphicsContext(nullptr); 231 GraphicsContext* context = new GraphicsContext(nullptr);
235 232
236 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); 233 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50));
237 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); 234 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50));
238 235
239 const PaintList& firstList = rootDisplayItemList().paintList(); 236 const PaintList& firstList = renderView()->viewDisplayList().paintList();
240 EXPECT_EQ((size_t)2, firstList.size()); 237 EXPECT_EQ((size_t)2, firstList.size());
241 EXPECT_EQ(second, firstList[0]->client()); 238 EXPECT_EQ(second, firstList[0]->renderer());
242 EXPECT_EQ(second, firstList[1]->client()); 239 EXPECT_EQ(second, firstList[1]->renderer());
243 240
244 rootDisplayItemList().invalidate(first); 241 renderView()->viewDisplayList().invalidate(first);
245 rootDisplayItemList().invalidate(second); 242 renderView()->viewDisplayList().invalidate(second);
246 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); 243 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150));
247 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); 244 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150));
248 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); 245 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50));
249 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); 246 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50));
250 247
251 const PaintList& secondList = rootDisplayItemList().paintList(); 248 const PaintList& secondList = renderView()->viewDisplayList().paintList();
252 EXPECT_EQ((size_t)4, secondList.size()); 249 EXPECT_EQ((size_t)4, secondList.size());
253 EXPECT_EQ(first, secondList[0]->client()); 250 EXPECT_EQ(first, secondList[0]->renderer());
254 EXPECT_EQ(first, secondList[1]->client()); 251 EXPECT_EQ(first, secondList[1]->renderer());
255 EXPECT_EQ(second, secondList[2]->client()); 252 EXPECT_EQ(second, secondList[2]->renderer());
256 EXPECT_EQ(second, secondList[3]->client()); 253 EXPECT_EQ(second, secondList[3]->renderer());
257 254
258 rootDisplayItemList().invalidate(first); 255 renderView()->viewDisplayList().invalidate(first);
259 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); 256 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50));
260 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); 257 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50));
261 258
262 const PaintList& thirdList = rootDisplayItemList().paintList(); 259 const PaintList& thirdList = renderView()->viewDisplayList().paintList();
263 EXPECT_EQ((size_t)2, thirdList.size()); 260 EXPECT_EQ((size_t)2, thirdList.size());
264 EXPECT_EQ(second, thirdList[0]->client()); 261 EXPECT_EQ(second, thirdList[0]->renderer());
265 EXPECT_EQ(second, thirdList[1]->client()); 262 EXPECT_EQ(second, thirdList[1]->renderer());
266 } 263 }
267 264
268 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastNoOverlap) 265 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastNoOverlap)
269 { 266 {
270 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); 267 setBodyInnerHTML("<div id='first'></div><div id='second'></div>");
271 RenderObject* first = document().body()->firstChild()->renderer(); 268 RenderObject* first = document().body()->firstChild()->renderer();
272 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer(); 269 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer();
273 GraphicsContext* context = new GraphicsContext(nullptr); 270 GraphicsContext* context = new GraphicsContext(nullptr);
274 271
275 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 50)); 272 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 50, 50));
276 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50)); 273 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 50, 50));
277 274
278 const PaintList& firstList = rootDisplayItemList().paintList(); 275 const PaintList& firstList = renderView()->viewDisplayList().paintList();
279 EXPECT_EQ((size_t)2, firstList.size()); 276 EXPECT_EQ((size_t)2, firstList.size());
280 EXPECT_EQ(first, firstList[0]->client()); 277 EXPECT_EQ(first, firstList[0]->renderer());
281 EXPECT_EQ(first, firstList[1]->client()); 278 EXPECT_EQ(first, firstList[1]->renderer());
282 279
283 rootDisplayItemList().invalidate(second); 280 renderView()->viewDisplayList().invalidate(second);
284 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); 281 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50));
285 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); 282 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50));
286 283
287 const PaintList& secondList = rootDisplayItemList().paintList(); 284 const PaintList& secondList = renderView()->viewDisplayList().paintList();
288 EXPECT_EQ((size_t)4, secondList.size()); 285 EXPECT_EQ((size_t)4, secondList.size());
289 EXPECT_EQ(second, secondList[0]->client()); 286 EXPECT_EQ(second, secondList[0]->renderer());
290 EXPECT_EQ(second, secondList[1]->client()); 287 EXPECT_EQ(second, secondList[1]->renderer());
291 EXPECT_EQ(first, secondList[2]->client()); 288 EXPECT_EQ(first, secondList[2]->renderer());
292 EXPECT_EQ(first, secondList[3]->client()); 289 EXPECT_EQ(first, secondList[3]->renderer());
293 290
294 rootDisplayItemList().invalidate(second); 291 renderView()->viewDisplayList().invalidate(second);
295 const PaintList& thirdList = rootDisplayItemList().paintList(); 292 const PaintList& thirdList = renderView()->viewDisplayList().paintList();
296 EXPECT_EQ((size_t)2, thirdList.size()); 293 EXPECT_EQ((size_t)2, thirdList.size());
297 EXPECT_EQ(first, thirdList[0]->client()); 294 EXPECT_EQ(first, thirdList[0]->renderer());
298 EXPECT_EQ(first, thirdList[1]->client()); 295 EXPECT_EQ(first, thirdList[1]->renderer());
299 } 296 }
300 297
301 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastOverlap) 298 TEST_F(ViewDisplayListTest, ViewDisplayListTest_UpdateAddLastOverlap)
302 { 299 {
303 setBodyInnerHTML("<div id='first'></div><div id='second'></div>"); 300 setBodyInnerHTML("<div id='first'></div><div id='second'></div>");
304 RenderObject* first = document().body()->firstChild()->renderer(); 301 RenderObject* first = document().body()->firstChild()->renderer();
305 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer(); 302 RenderObject* second = document().body()->firstChild()->nextSibling()->rende rer();
306 GraphicsContext* context = new GraphicsContext(nullptr); 303 GraphicsContext* context = new GraphicsContext(nullptr);
307 304
308 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); 305 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150));
309 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); 306 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150));
310 307
311 const PaintList& firstList = rootDisplayItemList().paintList(); 308 const PaintList& firstList = renderView()->viewDisplayList().paintList();
312 EXPECT_EQ((size_t)2, firstList.size()); 309 EXPECT_EQ((size_t)2, firstList.size());
313 EXPECT_EQ(first, firstList[0]->client()); 310 EXPECT_EQ(first, firstList[0]->renderer());
314 EXPECT_EQ(first, firstList[1]->client()); 311 EXPECT_EQ(first, firstList[1]->renderer());
315 312
316 rootDisplayItemList().invalidate(first); 313 renderView()->viewDisplayList().invalidate(first);
317 rootDisplayItemList().invalidate(second); 314 renderView()->viewDisplayList().invalidate(second);
318 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); 315 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150));
319 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); 316 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150));
320 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50)); 317 drawRect(context, second, PaintPhaseBlockBackground, FloatRect(200, 200, 50, 50));
321 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50)); 318 drawRect(context, second, PaintPhaseOutline, FloatRect(200, 200, 50, 50));
322 319
323 const PaintList& secondList = rootDisplayItemList().paintList(); 320 const PaintList& secondList = renderView()->viewDisplayList().paintList();
324 EXPECT_EQ((size_t)4, secondList.size()); 321 EXPECT_EQ((size_t)4, secondList.size());
325 EXPECT_EQ(first, secondList[0]->client()); 322 EXPECT_EQ(first, secondList[0]->renderer());
326 EXPECT_EQ(first, secondList[1]->client()); 323 EXPECT_EQ(first, secondList[1]->renderer());
327 EXPECT_EQ(second, secondList[2]->client()); 324 EXPECT_EQ(second, secondList[2]->renderer());
328 EXPECT_EQ(second, secondList[3]->client()); 325 EXPECT_EQ(second, secondList[3]->renderer());
329 326
330 rootDisplayItemList().invalidate(first); 327 renderView()->viewDisplayList().invalidate(first);
331 rootDisplayItemList().invalidate(second); 328 renderView()->viewDisplayList().invalidate(second);
332 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150)); 329 drawRect(context, first, PaintPhaseBlockBackground, FloatRect(100, 100, 150, 150));
333 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150)); 330 drawRect(context, first, PaintPhaseOutline, FloatRect(100, 100, 150, 150));
334 331
335 const PaintList& thirdList = rootDisplayItemList().paintList(); 332 const PaintList& thirdList = renderView()->viewDisplayList().paintList();
336 EXPECT_EQ((size_t)2, thirdList.size()); 333 EXPECT_EQ((size_t)2, thirdList.size());
337 EXPECT_EQ(first, thirdList[0]->client()); 334 EXPECT_EQ(first, thirdList[0]->renderer());
338 EXPECT_EQ(first, thirdList[1]->client()); 335 EXPECT_EQ(first, thirdList[1]->renderer());
339 } 336 }
340 337
341 } 338 }
342 339
343 } 340 }
OLDNEW
« no previous file with comments | « Source/core/paint/ViewDisplayList.cpp ('k') | Source/core/rendering/PaintPhase.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698