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

Side by Side Diff: chrome/renderer/paint_aggregator_unittest.cc

Issue 5613002: Allow painting multiple paint rects.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "chrome/renderer/paint_aggregator.h" 5 #include "chrome/renderer/paint_aggregator.h"
6 #include "testing/gtest/include/gtest/gtest.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 7
8 TEST(PaintAggregator, InitialState) { 8 TEST(PaintAggregator, InitialState) {
9 PaintAggregator greg; 9 PaintAggregator greg;
10 EXPECT_FALSE(greg.HasPendingUpdate()); 10 EXPECT_FALSE(greg.HasPendingUpdate());
11 } 11 }
12 12
13 TEST(PaintAggregator, SingleInvalidation) { 13 TEST(PaintAggregator, SingleInvalidation) {
14 PaintAggregator greg; 14 PaintAggregator greg;
15 15
16 gfx::Rect rect(2, 4, 10, 16); 16 gfx::Rect rect(2, 4, 10, 16);
17 greg.InvalidateRect(rect); 17 greg.InvalidateRect(rect);
18 18
19 EXPECT_TRUE(greg.HasPendingUpdate()); 19 EXPECT_TRUE(greg.HasPendingUpdate());
20 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 20 PaintAggregator::PendingUpdate update;
21 ASSERT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 21 greg.PopPendingUpdate(&update);
22 22
23 EXPECT_EQ(rect, greg.GetPendingUpdate().paint_rects[0]); 23 EXPECT_TRUE(update.scroll_rect.IsEmpty());
24 ASSERT_EQ(1U, update.paint_rects.size());
25
26 EXPECT_EQ(rect, update.paint_rects[0]);
24 } 27 }
25 28
26 TEST(PaintAggregator, DoubleDisjointInvalidation) { 29 TEST(PaintAggregator, DoubleDisjointInvalidation) {
27 PaintAggregator greg; 30 PaintAggregator greg;
28 31
29 gfx::Rect r1(2, 4, 2, 4); 32 gfx::Rect r1(2, 4, 2, 40);
30 gfx::Rect r2(4, 2, 4, 2); 33 gfx::Rect r2(4, 2, 40, 2);
31 34
32 greg.InvalidateRect(r1); 35 greg.InvalidateRect(r1);
33 greg.InvalidateRect(r2); 36 greg.InvalidateRect(r2);
34 37
35 gfx::Rect expected_bounds = r1.Union(r2); 38 gfx::Rect expected_bounds = r1.Union(r2);
36 39
37 EXPECT_TRUE(greg.HasPendingUpdate()); 40 EXPECT_TRUE(greg.HasPendingUpdate());
38 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 41 PaintAggregator::PendingUpdate update;
39 ASSERT_EQ(2U, greg.GetPendingUpdate().paint_rects.size()); 42 greg.PopPendingUpdate(&update);
40 43
41 EXPECT_EQ(expected_bounds, greg.GetPendingUpdate().GetPaintBounds()); 44 EXPECT_TRUE(update.scroll_rect.IsEmpty());
45 EXPECT_EQ(2U, update.paint_rects.size());
46
47 EXPECT_EQ(expected_bounds, update.GetPaintBounds());
48 }
49
50 TEST(PaintAggregator, DisjointInvalidationsCombined) {
51 PaintAggregator greg;
52
53 gfx::Rect r1(2, 4, 2, 2);
54 gfx::Rect r2(4, 2, 2, 2);
55
56 greg.InvalidateRect(r1);
57 greg.InvalidateRect(r2);
58
59 gfx::Rect expected_bounds = r1.Union(r2);
60
61 EXPECT_TRUE(greg.HasPendingUpdate());
62 PaintAggregator::PendingUpdate update;
63 greg.PopPendingUpdate(&update);
64
65 EXPECT_TRUE(update.scroll_rect.IsEmpty());
66 ASSERT_EQ(1U, update.paint_rects.size());
67
68 EXPECT_EQ(expected_bounds, update.paint_rects[0]);
42 } 69 }
43 70
44 TEST(PaintAggregator, SingleScroll) { 71 TEST(PaintAggregator, SingleScroll) {
45 PaintAggregator greg; 72 PaintAggregator greg;
46 73
47 gfx::Rect rect(1, 2, 3, 4); 74 gfx::Rect rect(1, 2, 3, 4);
48 gfx::Point delta(1, 0); 75 gfx::Point delta(1, 0);
49 greg.ScrollRect(delta.x(), delta.y(), rect); 76 greg.ScrollRect(delta.x(), delta.y(), rect);
50 77
51 EXPECT_TRUE(greg.HasPendingUpdate()); 78 EXPECT_TRUE(greg.HasPendingUpdate());
52 EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty()); 79 PaintAggregator::PendingUpdate update;
53 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 80 greg.PopPendingUpdate(&update);
54 81
55 EXPECT_EQ(rect, greg.GetPendingUpdate().scroll_rect); 82 EXPECT_TRUE(update.paint_rects.empty());
83 EXPECT_FALSE(update.scroll_rect.IsEmpty());
56 84
57 EXPECT_EQ(delta.x(), greg.GetPendingUpdate().scroll_delta.x()); 85 EXPECT_EQ(rect, update.scroll_rect);
58 EXPECT_EQ(delta.y(), greg.GetPendingUpdate().scroll_delta.y());
59 86
60 gfx::Rect resulting_damage = greg.GetPendingUpdate().GetScrollDamage(); 87 EXPECT_EQ(delta.x(), update.scroll_delta.x());
88 EXPECT_EQ(delta.y(), update.scroll_delta.y());
89
90 gfx::Rect resulting_damage = update.GetScrollDamage();
61 gfx::Rect expected_damage(1, 2, 1, 4); 91 gfx::Rect expected_damage(1, 2, 1, 4);
62 EXPECT_EQ(expected_damage, resulting_damage); 92 EXPECT_EQ(expected_damage, resulting_damage);
63 } 93 }
64 94
65 TEST(PaintAggregator, DoubleOverlappingScroll) { 95 TEST(PaintAggregator, DoubleOverlappingScroll) {
66 PaintAggregator greg; 96 PaintAggregator greg;
67 97
68 gfx::Rect rect(1, 2, 3, 4); 98 gfx::Rect rect(1, 2, 3, 4);
69 gfx::Point delta1(1, 0); 99 gfx::Point delta1(1, 0);
70 gfx::Point delta2(1, 0); 100 gfx::Point delta2(1, 0);
71 greg.ScrollRect(delta1.x(), delta1.y(), rect); 101 greg.ScrollRect(delta1.x(), delta1.y(), rect);
72 greg.ScrollRect(delta2.x(), delta2.y(), rect); 102 greg.ScrollRect(delta2.x(), delta2.y(), rect);
73 103
74 EXPECT_TRUE(greg.HasPendingUpdate()); 104 EXPECT_TRUE(greg.HasPendingUpdate());
75 EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty()); 105 PaintAggregator::PendingUpdate update;
76 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 106 greg.PopPendingUpdate(&update);
77 107
78 EXPECT_EQ(rect, greg.GetPendingUpdate().scroll_rect); 108 EXPECT_TRUE(update.paint_rects.empty());
109 EXPECT_FALSE(update.scroll_rect.IsEmpty());
110
111 EXPECT_EQ(rect, update.scroll_rect);
79 112
80 gfx::Point expected_delta(delta1.x() + delta2.x(), 113 gfx::Point expected_delta(delta1.x() + delta2.x(),
81 delta1.y() + delta2.y()); 114 delta1.y() + delta2.y());
82 EXPECT_EQ(expected_delta.x(), greg.GetPendingUpdate().scroll_delta.x()); 115 EXPECT_EQ(expected_delta.x(), update.scroll_delta.x());
83 EXPECT_EQ(expected_delta.y(), greg.GetPendingUpdate().scroll_delta.y()); 116 EXPECT_EQ(expected_delta.y(), update.scroll_delta.y());
84 117
85 gfx::Rect resulting_damage = greg.GetPendingUpdate().GetScrollDamage(); 118 gfx::Rect resulting_damage = update.GetScrollDamage();
86 gfx::Rect expected_damage(1, 2, 2, 4); 119 gfx::Rect expected_damage(1, 2, 2, 4);
87 EXPECT_EQ(expected_damage, resulting_damage); 120 EXPECT_EQ(expected_damage, resulting_damage);
88 } 121 }
89 122
90 TEST(PaintAggregator, NegatingScroll) { 123 TEST(PaintAggregator, NegatingScroll) {
91 PaintAggregator greg; 124 PaintAggregator greg;
92 125
93 // Scroll twice in opposite directions by equal amounts. The result 126 // Scroll twice in opposite directions by equal amounts. The result
94 // should be no scrolling. 127 // should be no scrolling.
95 128
(...skipping 10 matching lines...) Expand all
106 PaintAggregator greg; 139 PaintAggregator greg;
107 140
108 // We don't support optimized diagonal scrolling, so this should result in 141 // We don't support optimized diagonal scrolling, so this should result in
109 // repainting. 142 // repainting.
110 143
111 gfx::Rect rect(1, 2, 3, 4); 144 gfx::Rect rect(1, 2, 3, 4);
112 gfx::Point delta(1, 1); 145 gfx::Point delta(1, 1);
113 greg.ScrollRect(delta.x(), delta.y(), rect); 146 greg.ScrollRect(delta.x(), delta.y(), rect);
114 147
115 EXPECT_TRUE(greg.HasPendingUpdate()); 148 EXPECT_TRUE(greg.HasPendingUpdate());
116 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 149 PaintAggregator::PendingUpdate update;
117 ASSERT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 150 greg.PopPendingUpdate(&update);
118 151
119 EXPECT_EQ(rect, greg.GetPendingUpdate().paint_rects[0]); 152 EXPECT_TRUE(update.scroll_rect.IsEmpty());
153 ASSERT_EQ(1U, update.paint_rects.size());
154
155 EXPECT_EQ(rect, update.paint_rects[0]);
120 } 156 }
121 157
122 TEST(PaintAggregator, ContainedPaintAfterScroll) { 158 TEST(PaintAggregator, ContainedPaintAfterScroll) {
123 PaintAggregator greg; 159 PaintAggregator greg;
124 160
125 gfx::Rect scroll_rect(0, 0, 10, 10); 161 gfx::Rect scroll_rect(0, 0, 10, 10);
126 greg.ScrollRect(2, 0, scroll_rect); 162 greg.ScrollRect(2, 0, scroll_rect);
127 163
128 gfx::Rect paint_rect(4, 4, 2, 2); 164 gfx::Rect paint_rect(4, 4, 2, 2);
129 greg.InvalidateRect(paint_rect); 165 greg.InvalidateRect(paint_rect);
130 166
131 EXPECT_TRUE(greg.HasPendingUpdate()); 167 EXPECT_TRUE(greg.HasPendingUpdate());
168 PaintAggregator::PendingUpdate update;
169 greg.PopPendingUpdate(&update);
132 170
133 // expecting a paint rect inside the scroll rect 171 // expecting a paint rect inside the scroll rect
134 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 172 EXPECT_FALSE(update.scroll_rect.IsEmpty());
135 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 173 EXPECT_EQ(1U, update.paint_rects.size());
136 174
137 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 175 EXPECT_EQ(scroll_rect, update.scroll_rect);
138 EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]); 176 EXPECT_EQ(paint_rect, update.paint_rects[0]);
139 } 177 }
140 178
141 TEST(PaintAggregator, ContainedPaintBeforeScroll) { 179 TEST(PaintAggregator, ContainedPaintBeforeScroll) {
142 PaintAggregator greg; 180 PaintAggregator greg;
143 181
144 gfx::Rect paint_rect(4, 4, 2, 2); 182 gfx::Rect paint_rect(4, 4, 2, 2);
145 greg.InvalidateRect(paint_rect); 183 greg.InvalidateRect(paint_rect);
146 184
147 gfx::Rect scroll_rect(0, 0, 10, 10); 185 gfx::Rect scroll_rect(0, 0, 10, 10);
148 greg.ScrollRect(2, 0, scroll_rect); 186 greg.ScrollRect(2, 0, scroll_rect);
149 187
150 EXPECT_TRUE(greg.HasPendingUpdate()); 188 EXPECT_TRUE(greg.HasPendingUpdate());
189 PaintAggregator::PendingUpdate update;
190 greg.PopPendingUpdate(&update);
151 191
152 // Expecting a paint rect inside the scroll rect 192 // Expecting a paint rect inside the scroll rect
153 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 193 EXPECT_FALSE(update.scroll_rect.IsEmpty());
154 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 194 EXPECT_EQ(1U, update.paint_rects.size());
155 195
156 paint_rect.Offset(2, 0); 196 paint_rect.Offset(2, 0);
157 197
158 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 198 EXPECT_EQ(scroll_rect, update.scroll_rect);
159 EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]); 199 EXPECT_EQ(paint_rect, update.paint_rects[0]);
160 } 200 }
161 201
162 TEST(PaintAggregator, ContainedPaintsBeforeAndAfterScroll) { 202 TEST(PaintAggregator, ContainedPaintsBeforeAndAfterScroll) {
163 PaintAggregator greg; 203 PaintAggregator greg;
164 204
165 gfx::Rect paint_rect1(4, 4, 2, 2); 205 gfx::Rect paint_rect1(4, 4, 2, 2);
166 greg.InvalidateRect(paint_rect1); 206 greg.InvalidateRect(paint_rect1);
167 207
168 gfx::Rect scroll_rect(0, 0, 10, 10); 208 gfx::Rect scroll_rect(0, 0, 10, 10);
169 greg.ScrollRect(2, 0, scroll_rect); 209 greg.ScrollRect(2, 0, scroll_rect);
170 210
171 gfx::Rect paint_rect2(6, 4, 2, 2); 211 gfx::Rect paint_rect2(6, 4, 2, 2);
172 greg.InvalidateRect(paint_rect2); 212 greg.InvalidateRect(paint_rect2);
173 213
174 gfx::Rect expected_paint_rect = paint_rect2; 214 gfx::Rect expected_paint_rect = paint_rect2;
175 215
176 EXPECT_TRUE(greg.HasPendingUpdate()); 216 EXPECT_TRUE(greg.HasPendingUpdate());
217 PaintAggregator::PendingUpdate update;
218 greg.PopPendingUpdate(&update);
177 219
178 // Expecting a paint rect inside the scroll rect 220 // Expecting a paint rect inside the scroll rect
179 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 221 EXPECT_FALSE(update.scroll_rect.IsEmpty());
180 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 222 EXPECT_EQ(1U, update.paint_rects.size());
181 223
182 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 224 EXPECT_EQ(scroll_rect, update.scroll_rect);
183 EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]); 225 EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
184 } 226 }
185 227
186 TEST(PaintAggregator, LargeContainedPaintAfterScroll) { 228 TEST(PaintAggregator, LargeContainedPaintAfterScroll) {
187 PaintAggregator greg; 229 PaintAggregator greg;
188 230
189 gfx::Rect scroll_rect(0, 0, 10, 10); 231 gfx::Rect scroll_rect(0, 0, 10, 10);
190 greg.ScrollRect(0, 1, scroll_rect); 232 greg.ScrollRect(0, 1, scroll_rect);
191 233
192 gfx::Rect paint_rect(0, 0, 10, 9); // Repaint 90% 234 gfx::Rect paint_rect(0, 0, 10, 9); // Repaint 90%
193 greg.InvalidateRect(paint_rect); 235 greg.InvalidateRect(paint_rect);
194 236
195 EXPECT_TRUE(greg.HasPendingUpdate()); 237 EXPECT_TRUE(greg.HasPendingUpdate());
238 PaintAggregator::PendingUpdate update;
239 greg.PopPendingUpdate(&update);
196 240
197 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 241 EXPECT_TRUE(update.scroll_rect.IsEmpty());
198 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 242 EXPECT_EQ(1U, update.paint_rects.size());
199 243
200 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().paint_rects[0]); 244 EXPECT_EQ(scroll_rect, update.paint_rects[0]);
201 } 245 }
202 246
203 TEST(PaintAggregator, LargeContainedPaintBeforeScroll) { 247 TEST(PaintAggregator, LargeContainedPaintBeforeScroll) {
204 PaintAggregator greg; 248 PaintAggregator greg;
205 249
206 gfx::Rect paint_rect(0, 0, 10, 9); // Repaint 90% 250 gfx::Rect paint_rect(0, 0, 10, 9); // Repaint 90%
207 greg.InvalidateRect(paint_rect); 251 greg.InvalidateRect(paint_rect);
208 252
209 gfx::Rect scroll_rect(0, 0, 10, 10); 253 gfx::Rect scroll_rect(0, 0, 10, 10);
210 greg.ScrollRect(0, 1, scroll_rect); 254 greg.ScrollRect(0, 1, scroll_rect);
211 255
212 EXPECT_TRUE(greg.HasPendingUpdate()); 256 EXPECT_TRUE(greg.HasPendingUpdate());
257 PaintAggregator::PendingUpdate update;
258 greg.PopPendingUpdate(&update);
213 259
214 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 260 EXPECT_TRUE(update.scroll_rect.IsEmpty());
215 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 261 EXPECT_EQ(1U, update.paint_rects.size());
216 262
217 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().paint_rects[0]); 263 EXPECT_EQ(scroll_rect, update.paint_rects[0]);
218 } 264 }
219 265
220 TEST(PaintAggregator, OverlappingPaintBeforeScroll) { 266 TEST(PaintAggregator, OverlappingPaintBeforeScroll) {
221 PaintAggregator greg; 267 PaintAggregator greg;
222 268
223 gfx::Rect paint_rect(4, 4, 10, 2); 269 gfx::Rect paint_rect(4, 4, 10, 2);
224 greg.InvalidateRect(paint_rect); 270 greg.InvalidateRect(paint_rect);
225 271
226 gfx::Rect scroll_rect(0, 0, 10, 10); 272 gfx::Rect scroll_rect(0, 0, 10, 10);
227 greg.ScrollRect(2, 0, scroll_rect); 273 greg.ScrollRect(2, 0, scroll_rect);
228 274
229 gfx::Rect expected_paint_rect = scroll_rect.Union(paint_rect); 275 gfx::Rect expected_paint_rect = scroll_rect.Union(paint_rect);
230 276
231 EXPECT_TRUE(greg.HasPendingUpdate()); 277 EXPECT_TRUE(greg.HasPendingUpdate());
278 PaintAggregator::PendingUpdate update;
279 greg.PopPendingUpdate(&update);
232 280
233 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 281 EXPECT_TRUE(update.scroll_rect.IsEmpty());
234 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 282 EXPECT_EQ(1U, update.paint_rects.size());
235 283
236 EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]); 284 EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
237 } 285 }
238 286
239 TEST(PaintAggregator, OverlappingPaintAfterScroll) { 287 TEST(PaintAggregator, OverlappingPaintAfterScroll) {
240 PaintAggregator greg; 288 PaintAggregator greg;
241 289
242 gfx::Rect scroll_rect(0, 0, 10, 10); 290 gfx::Rect scroll_rect(0, 0, 10, 10);
243 greg.ScrollRect(2, 0, scroll_rect); 291 greg.ScrollRect(2, 0, scroll_rect);
244 292
245 gfx::Rect paint_rect(4, 4, 10, 2); 293 gfx::Rect paint_rect(4, 4, 10, 2);
246 greg.InvalidateRect(paint_rect); 294 greg.InvalidateRect(paint_rect);
247 295
248 gfx::Rect expected_paint_rect = scroll_rect.Union(paint_rect); 296 gfx::Rect expected_paint_rect = scroll_rect.Union(paint_rect);
249 297
250 EXPECT_TRUE(greg.HasPendingUpdate()); 298 EXPECT_TRUE(greg.HasPendingUpdate());
299 PaintAggregator::PendingUpdate update;
300 greg.PopPendingUpdate(&update);
251 301
252 EXPECT_TRUE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 302 EXPECT_TRUE(update.scroll_rect.IsEmpty());
253 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 303 EXPECT_EQ(1U, update.paint_rects.size());
254 304
255 EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]); 305 EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
256 } 306 }
257 307
258 TEST(PaintAggregator, DisjointPaintBeforeScroll) { 308 TEST(PaintAggregator, DisjointPaintBeforeScroll) {
259 PaintAggregator greg; 309 PaintAggregator greg;
260 310
261 gfx::Rect paint_rect(4, 4, 10, 2); 311 gfx::Rect paint_rect(4, 4, 10, 2);
262 greg.InvalidateRect(paint_rect); 312 greg.InvalidateRect(paint_rect);
263 313
264 gfx::Rect scroll_rect(0, 0, 2, 10); 314 gfx::Rect scroll_rect(0, 0, 2, 10);
265 greg.ScrollRect(2, 0, scroll_rect); 315 greg.ScrollRect(2, 0, scroll_rect);
266 316
267 EXPECT_TRUE(greg.HasPendingUpdate()); 317 EXPECT_TRUE(greg.HasPendingUpdate());
318 PaintAggregator::PendingUpdate update;
319 greg.PopPendingUpdate(&update);
268 320
269 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 321 EXPECT_FALSE(update.scroll_rect.IsEmpty());
270 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 322 EXPECT_EQ(1U, update.paint_rects.size());
271 323
272 EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]); 324 EXPECT_EQ(paint_rect, update.paint_rects[0]);
273 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 325 EXPECT_EQ(scroll_rect, update.scroll_rect);
274 } 326 }
275 327
276 TEST(PaintAggregator, DisjointPaintAfterScroll) { 328 TEST(PaintAggregator, DisjointPaintAfterScroll) {
277 PaintAggregator greg; 329 PaintAggregator greg;
278 330
279 gfx::Rect scroll_rect(0, 0, 2, 10); 331 gfx::Rect scroll_rect(0, 0, 2, 10);
280 greg.ScrollRect(2, 0, scroll_rect); 332 greg.ScrollRect(2, 0, scroll_rect);
281 333
282 gfx::Rect paint_rect(4, 4, 10, 2); 334 gfx::Rect paint_rect(4, 4, 10, 2);
283 greg.InvalidateRect(paint_rect); 335 greg.InvalidateRect(paint_rect);
284 336
285 EXPECT_TRUE(greg.HasPendingUpdate()); 337 EXPECT_TRUE(greg.HasPendingUpdate());
338 PaintAggregator::PendingUpdate update;
339 greg.PopPendingUpdate(&update);
286 340
287 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 341 EXPECT_FALSE(update.scroll_rect.IsEmpty());
288 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 342 EXPECT_EQ(1U, update.paint_rects.size());
289 343
290 EXPECT_EQ(paint_rect, greg.GetPendingUpdate().paint_rects[0]); 344 EXPECT_EQ(paint_rect, update.paint_rects[0]);
291 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 345 EXPECT_EQ(scroll_rect, update.scroll_rect);
292 } 346 }
293 347
294 TEST(PaintAggregator, ContainedPaintTrimmedByScroll) { 348 TEST(PaintAggregator, ContainedPaintTrimmedByScroll) {
295 PaintAggregator greg; 349 PaintAggregator greg;
296 350
297 gfx::Rect paint_rect(4, 4, 6, 6); 351 gfx::Rect paint_rect(4, 4, 6, 6);
298 greg.InvalidateRect(paint_rect); 352 greg.InvalidateRect(paint_rect);
299 353
300 gfx::Rect scroll_rect(0, 0, 10, 10); 354 gfx::Rect scroll_rect(0, 0, 10, 10);
301 greg.ScrollRect(2, 0, scroll_rect); 355 greg.ScrollRect(2, 0, scroll_rect);
302 356
303 // The paint rect should have become narrower. 357 // The paint rect should have become narrower.
304 gfx::Rect expected_paint_rect(6, 4, 4, 6); 358 gfx::Rect expected_paint_rect(6, 4, 4, 6);
305 359
306 EXPECT_TRUE(greg.HasPendingUpdate()); 360 EXPECT_TRUE(greg.HasPendingUpdate());
361 PaintAggregator::PendingUpdate update;
362 greg.PopPendingUpdate(&update);
307 363
308 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 364 EXPECT_FALSE(update.scroll_rect.IsEmpty());
309 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 365 EXPECT_EQ(1U, update.paint_rects.size());
310 366
311 EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]); 367 EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
312 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 368 EXPECT_EQ(scroll_rect, update.scroll_rect);
313 } 369 }
314 370
315 TEST(PaintAggregator, ContainedPaintEliminatedByScroll) { 371 TEST(PaintAggregator, ContainedPaintEliminatedByScroll) {
316 PaintAggregator greg; 372 PaintAggregator greg;
317 373
318 gfx::Rect paint_rect(4, 4, 6, 6); 374 gfx::Rect paint_rect(4, 4, 6, 6);
319 greg.InvalidateRect(paint_rect); 375 greg.InvalidateRect(paint_rect);
320 376
321 gfx::Rect scroll_rect(0, 0, 10, 10); 377 gfx::Rect scroll_rect(0, 0, 10, 10);
322 greg.ScrollRect(6, 0, scroll_rect); 378 greg.ScrollRect(6, 0, scroll_rect);
323 379
324 EXPECT_TRUE(greg.HasPendingUpdate()); 380 EXPECT_TRUE(greg.HasPendingUpdate());
381 PaintAggregator::PendingUpdate update;
382 greg.PopPendingUpdate(&update);
325 383
326 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 384 EXPECT_FALSE(update.scroll_rect.IsEmpty());
327 EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty()); 385 EXPECT_TRUE(update.paint_rects.empty());
328 386
329 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 387 EXPECT_EQ(scroll_rect, update.scroll_rect);
330 } 388 }
331 389
332 TEST(PaintAggregator, ContainedPaintAfterScrollTrimmedByScrollDamage) { 390 TEST(PaintAggregator, ContainedPaintAfterScrollTrimmedByScrollDamage) {
333 PaintAggregator greg; 391 PaintAggregator greg;
334 392
335 gfx::Rect scroll_rect(0, 0, 10, 10); 393 gfx::Rect scroll_rect(0, 0, 10, 10);
336 greg.ScrollRect(4, 0, scroll_rect); 394 greg.ScrollRect(4, 0, scroll_rect);
337 395
338 gfx::Rect paint_rect(2, 0, 4, 10); 396 gfx::Rect paint_rect(2, 0, 4, 10);
339 greg.InvalidateRect(paint_rect); 397 greg.InvalidateRect(paint_rect);
340 398
341 gfx::Rect expected_scroll_damage(0, 0, 4, 10); 399 gfx::Rect expected_scroll_damage(0, 0, 4, 10);
342 gfx::Rect expected_paint_rect(4, 0, 2, 10); 400 gfx::Rect expected_paint_rect(4, 0, 2, 10);
343 401
344 EXPECT_TRUE(greg.HasPendingUpdate()); 402 EXPECT_TRUE(greg.HasPendingUpdate());
403 PaintAggregator::PendingUpdate update;
404 greg.PopPendingUpdate(&update);
345 405
346 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 406 EXPECT_FALSE(update.scroll_rect.IsEmpty());
347 EXPECT_EQ(1U, greg.GetPendingUpdate().paint_rects.size()); 407 EXPECT_EQ(1U, update.paint_rects.size());
348 408
349 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 409 EXPECT_EQ(scroll_rect, update.scroll_rect);
350 EXPECT_EQ(expected_scroll_damage, greg.GetPendingUpdate().GetScrollDamage()); 410 EXPECT_EQ(expected_scroll_damage, update.GetScrollDamage());
351 EXPECT_EQ(expected_paint_rect, greg.GetPendingUpdate().paint_rects[0]); 411 EXPECT_EQ(expected_paint_rect, update.paint_rects[0]);
352 } 412 }
353 413
354 TEST(PaintAggregator, ContainedPaintAfterScrollEliminatedByScrollDamage) { 414 TEST(PaintAggregator, ContainedPaintAfterScrollEliminatedByScrollDamage) {
355 PaintAggregator greg; 415 PaintAggregator greg;
356 416
357 gfx::Rect scroll_rect(0, 0, 10, 10); 417 gfx::Rect scroll_rect(0, 0, 10, 10);
358 greg.ScrollRect(4, 0, scroll_rect); 418 greg.ScrollRect(4, 0, scroll_rect);
359 419
360 gfx::Rect paint_rect(2, 0, 2, 10); 420 gfx::Rect paint_rect(2, 0, 2, 10);
361 greg.InvalidateRect(paint_rect); 421 greg.InvalidateRect(paint_rect);
362 422
363 gfx::Rect expected_scroll_damage(0, 0, 4, 10); 423 gfx::Rect expected_scroll_damage(0, 0, 4, 10);
364 424
365 EXPECT_TRUE(greg.HasPendingUpdate()); 425 EXPECT_TRUE(greg.HasPendingUpdate());
426 PaintAggregator::PendingUpdate update;
427 greg.PopPendingUpdate(&update);
366 428
367 EXPECT_FALSE(greg.GetPendingUpdate().scroll_rect.IsEmpty()); 429 EXPECT_FALSE(update.scroll_rect.IsEmpty());
368 EXPECT_TRUE(greg.GetPendingUpdate().paint_rects.empty()); 430 EXPECT_TRUE(update.paint_rects.empty());
369 431
370 EXPECT_EQ(scroll_rect, greg.GetPendingUpdate().scroll_rect); 432 EXPECT_EQ(scroll_rect, update.scroll_rect);
371 EXPECT_EQ(expected_scroll_damage, greg.GetPendingUpdate().GetScrollDamage()); 433 EXPECT_EQ(expected_scroll_damage, update.GetScrollDamage());
372 } 434 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698