OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <map> | 5 #include <map> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "cc/resources/picture_pile.h" | 8 #include "cc/resources/picture_pile.h" |
9 #include "cc/test/fake_content_layer_client.h" | 9 #include "cc/test/fake_content_layer_client.h" |
10 #include "cc/test/fake_picture_pile.h" | 10 #include "cc/test/fake_picture_pile.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 | 144 |
145 TEST_F(PicturePileTest, SmallInvalidateInflated) { | 145 TEST_F(PicturePileTest, SmallInvalidateInflated) { |
146 // Invalidate something inside a tile. | 146 // Invalidate something inside a tile. |
147 Region invalidate_rect(gfx::Rect(50, 50, 1, 1)); | 147 Region invalidate_rect(gfx::Rect(50, 50, 1, 1)); |
148 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); | 148 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); |
149 EXPECT_EQ(gfx::Rect(50, 50, 1, 1).ToString(), invalidate_rect.ToString()); | 149 EXPECT_EQ(gfx::Rect(50, 50, 1, 1).ToString(), invalidate_rect.ToString()); |
150 | 150 |
151 EXPECT_EQ(1, pile_.tiling().num_tiles_x()); | 151 EXPECT_EQ(1, pile_.tiling().num_tiles_x()); |
152 EXPECT_EQ(1, pile_.tiling().num_tiles_y()); | 152 EXPECT_EQ(1, pile_.tiling().num_tiles_y()); |
153 | 153 |
154 FakePicturePile::PictureInfo& picture_info = | 154 PicturePile::PictureMapKey key = FakePicturePile::PictureMapKey(0, 0); |
155 pile_.picture_map().find(FakePicturePile::PictureMapKey(0, 0))->second; | 155 PicturePile::PictureMap::iterator it = pile_.picture_map().find(key); |
156 // We should have a picture. | 156 EXPECT_TRUE(it != pile_.picture_map().end()); |
157 EXPECT_TRUE(!!picture_info.GetPicture()); | 157 const Picture* picture = it->second.get(); |
158 gfx::Rect picture_rect = gfx::ScaleToEnclosedRect( | 158 EXPECT_TRUE(picture); |
159 picture_info.GetPicture()->LayerRect(), min_scale_); | 159 |
| 160 gfx::Rect picture_rect = |
| 161 gfx::ScaleToEnclosedRect(picture->LayerRect(), min_scale_); |
160 | 162 |
161 // The the picture should be large enough that scaling it never makes a rect | 163 // The the picture should be large enough that scaling it never makes a rect |
162 // smaller than 1 px wide or tall. | 164 // smaller than 1 px wide or tall. |
163 EXPECT_FALSE(picture_rect.IsEmpty()) << "Picture rect " << | 165 EXPECT_FALSE(picture_rect.IsEmpty()) << "Picture rect " |
164 picture_rect.ToString(); | 166 << picture_rect.ToString(); |
165 } | 167 } |
166 | 168 |
167 TEST_F(PicturePileTest, LargeInvalidateInflated) { | 169 TEST_F(PicturePileTest, LargeInvalidateInflated) { |
168 // Invalidate something inside a tile. | 170 // Invalidate something inside a tile. |
169 Region invalidate_rect(gfx::Rect(50, 50, 100, 100)); | 171 Region invalidate_rect(gfx::Rect(50, 50, 100, 100)); |
170 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); | 172 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); |
171 EXPECT_EQ(gfx::Rect(50, 50, 100, 100).ToString(), invalidate_rect.ToString()); | 173 EXPECT_EQ(gfx::Rect(50, 50, 100, 100).ToString(), invalidate_rect.ToString()); |
172 | 174 |
173 EXPECT_EQ(1, pile_.tiling().num_tiles_x()); | 175 EXPECT_EQ(1, pile_.tiling().num_tiles_x()); |
174 EXPECT_EQ(1, pile_.tiling().num_tiles_y()); | 176 EXPECT_EQ(1, pile_.tiling().num_tiles_y()); |
175 | 177 |
176 FakePicturePile::PictureInfo& picture_info = | 178 PicturePile::PictureMapKey key = FakePicturePile::PictureMapKey(0, 0); |
177 pile_.picture_map().find(FakePicturePile::PictureMapKey(0, 0))->second; | 179 PicturePile::PictureMap::iterator it = pile_.picture_map().find(key); |
178 EXPECT_TRUE(!!picture_info.GetPicture()); | 180 EXPECT_TRUE(it != pile_.picture_map().end()); |
| 181 const Picture* picture = it->second.get(); |
| 182 EXPECT_TRUE(picture); |
179 | 183 |
180 int expected_inflation = pile_.buffer_pixels(); | 184 int expected_inflation = pile_.buffer_pixels(); |
181 | 185 |
182 const Picture* base_picture = picture_info.GetPicture(); | |
183 gfx::Rect base_picture_rect(tiling_size()); | 186 gfx::Rect base_picture_rect(tiling_size()); |
184 base_picture_rect.Inset(-expected_inflation, -expected_inflation); | 187 base_picture_rect.Inset(-expected_inflation, -expected_inflation); |
185 EXPECT_EQ(base_picture_rect.ToString(), | 188 EXPECT_EQ(base_picture_rect.ToString(), picture->LayerRect().ToString()); |
186 base_picture->LayerRect().ToString()); | |
187 } | |
188 | |
189 TEST_F(PicturePileTest, InvalidateOnTileBoundaryInflated) { | |
190 gfx::Size new_tiling_size = | |
191 gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 2.f)); | |
192 // This creates initial pictures. | |
193 SetTilingSize(new_tiling_size); | |
194 | |
195 // Due to border pixels, we should have 3 tiles. | |
196 EXPECT_EQ(3, pile_.tiling().num_tiles_x()); | |
197 EXPECT_EQ(3, pile_.tiling().num_tiles_y()); | |
198 | |
199 // We should have 1/.125 - 1 = 7 border pixels. | |
200 EXPECT_EQ(7, pile_.buffer_pixels()); | |
201 EXPECT_EQ(7, pile_.tiling().border_texels()); | |
202 | |
203 // Invalidate everything to have a non zero invalidation frequency. | |
204 UpdateWholePile(); | |
205 | |
206 // Invalidate something just over a tile boundary by a single pixel. | |
207 // This will invalidate the tile (1, 1), as well as 1 row of pixels in (1, 0). | |
208 Region invalidate_rect( | |
209 gfx::Rect(pile_.tiling().TileBoundsWithBorder(0, 0).right(), | |
210 pile_.tiling().TileBoundsWithBorder(0, 0).bottom() - 1, | |
211 50, | |
212 50)); | |
213 Region expected_invalidation = invalidate_rect; | |
214 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); | |
215 EXPECT_EQ(expected_invalidation.ToString(), invalidate_rect.ToString()); | |
216 | |
217 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | |
218 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | |
219 FakePicturePile::PictureInfo& picture_info = | |
220 pile_.picture_map() | |
221 .find(FakePicturePile::PictureMapKey(i, j)) | |
222 ->second; | |
223 | |
224 // Expect (1, 1) and (1, 0) to be invalidated once more | |
225 // than the rest of the tiles. | |
226 if (i == 1 && (j == 0 || j == 1)) { | |
227 EXPECT_FLOAT_EQ( | |
228 2.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED, | |
229 picture_info.GetInvalidationFrequencyForTesting()); | |
230 } else { | |
231 EXPECT_FLOAT_EQ( | |
232 1.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED, | |
233 picture_info.GetInvalidationFrequencyForTesting()); | |
234 } | |
235 } | |
236 } | |
237 } | |
238 | |
239 TEST_F(PicturePileTest, InvalidateOnFullLayer) { | |
240 UpdateWholePile(); | |
241 | |
242 // Everything was invalidated once so far. | |
243 for (auto& it : pile_.picture_map()) { | |
244 EXPECT_FLOAT_EQ( | |
245 1.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED, | |
246 it.second.GetInvalidationFrequencyForTesting()); | |
247 } | |
248 | |
249 // Invalidate everything, | |
250 Region invalidation = tiling_rect(); | |
251 UpdateAndExpandInvalidation(&invalidation, tiling_size(), tiling_rect()); | |
252 | |
253 // Everything was invalidated again. | |
254 for (auto& it : pile_.picture_map()) { | |
255 EXPECT_FLOAT_EQ( | |
256 2.0f / FakePicturePile::PictureInfo::INVALIDATION_FRAMES_TRACKED, | |
257 it.second.GetInvalidationFrequencyForTesting()); | |
258 } | |
259 } | |
260 | |
261 TEST_F(PicturePileTest, StopRecordingOffscreenInvalidations) { | |
262 gfx::Size new_tiling_size = | |
263 gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 4.f)); | |
264 SetTilingSize(new_tiling_size); | |
265 | |
266 gfx::Rect viewport(tiling_size().width(), 1); | |
267 | |
268 // Update the whole pile until the invalidation frequency is high. | |
269 for (int frame = 0; frame < 33; ++frame) { | |
270 UpdateWholePile(); | |
271 } | |
272 | |
273 // Make sure we have a high invalidation frequency. | |
274 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | |
275 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | |
276 FakePicturePile::PictureInfo& picture_info = | |
277 pile_.picture_map() | |
278 .find(FakePicturePile::PictureMapKey(i, j)) | |
279 ->second; | |
280 EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting()) | |
281 << "i " << i << " j " << j; | |
282 } | |
283 } | |
284 | |
285 // Update once more with a small viewport. | |
286 Region invalidation(tiling_rect()); | |
287 UpdateAndExpandInvalidation(&invalidation, tiling_size(), viewport); | |
288 EXPECT_EQ(tiling_rect().ToString(), invalidation.ToString()); | |
289 | |
290 bool had_tiles_with_no_pictures = false; | |
291 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | |
292 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | |
293 FakePicturePile::PictureInfo& picture_info = | |
294 pile_.picture_map() | |
295 .find(FakePicturePile::PictureMapKey(i, j)) | |
296 ->second; | |
297 EXPECT_FLOAT_EQ(1.0f, picture_info.GetInvalidationFrequencyForTesting()); | |
298 | |
299 // If the y far enough away we expect to find no picture (no re-recording | |
300 // happened). For close y, the picture should change. | |
301 if (j >= 3) { | |
302 EXPECT_FALSE(picture_info.GetPicture()) << "i " << i << " j " << j; | |
303 had_tiles_with_no_pictures = true; | |
304 } else { | |
305 EXPECT_TRUE(picture_info.GetPicture()) << "i " << i << " j " << j; | |
306 } | |
307 } | |
308 } | |
309 | |
310 EXPECT_TRUE(had_tiles_with_no_pictures); | |
311 | |
312 // Update a partial tile that doesn't get recorded. We should expand the | |
313 // invalidation to the entire tiles that overlap it. | |
314 Region small_invalidation = | |
315 gfx::Rect(pile_.tiling().TileBounds(3, 4).x(), | |
316 pile_.tiling().TileBounds(3, 4).y() + 10, | |
317 1, | |
318 1); | |
319 UpdateAndExpandInvalidation(&small_invalidation, tiling_size(), viewport); | |
320 EXPECT_TRUE(small_invalidation.Contains(gfx::UnionRects( | |
321 pile_.tiling().TileBounds(2, 4), pile_.tiling().TileBounds(3, 4)))) | |
322 << small_invalidation.ToString(); | |
323 | |
324 // Now update with no invalidation and full viewport | |
325 Region empty_invalidation; | |
326 UpdateAndExpandInvalidation(&empty_invalidation, tiling_size(), | |
327 tiling_rect()); | |
328 EXPECT_EQ(Region().ToString(), empty_invalidation.ToString()); | |
329 | |
330 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | |
331 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | |
332 FakePicturePile::PictureInfo& picture_info = | |
333 pile_.picture_map() | |
334 .find(FakePicturePile::PictureMapKey(i, j)) | |
335 ->second; | |
336 // Expect the invalidation frequency to be less than 1, since we just | |
337 // updated with no invalidations. | |
338 EXPECT_LT(picture_info.GetInvalidationFrequencyForTesting(), 1.f); | |
339 | |
340 // We expect that there are pictures everywhere now. | |
341 EXPECT_TRUE(picture_info.GetPicture()) << "i " << i << " j " << j; | |
342 } | |
343 } | |
344 } | 189 } |
345 | 190 |
346 TEST_F(PicturePileTest, ClearingInvalidatesRecordedRect) { | 191 TEST_F(PicturePileTest, ClearingInvalidatesRecordedRect) { |
347 gfx::Rect rect(0, 0, 5, 5); | 192 gfx::Rect rect(0, 0, 5, 5); |
348 EXPECT_TRUE(pile_.CanRasterLayerRect(rect)); | 193 EXPECT_TRUE(pile_.CanRasterLayerRect(rect)); |
349 EXPECT_TRUE(pile_.CanRasterSlowTileCheck(rect)); | 194 EXPECT_TRUE(pile_.CanRasterSlowTileCheck(rect)); |
350 | 195 |
351 pile_.Clear(); | 196 pile_.Clear(); |
352 | 197 |
353 // Make sure both the cache-aware check (using recorded region) and the normal | 198 // Make sure both the cache-aware check (using recorded region) and the normal |
354 // check are both false after clearing. | 199 // check are both false after clearing. |
355 EXPECT_FALSE(pile_.CanRasterLayerRect(rect)); | 200 EXPECT_FALSE(pile_.CanRasterLayerRect(rect)); |
356 EXPECT_FALSE(pile_.CanRasterSlowTileCheck(rect)); | 201 EXPECT_FALSE(pile_.CanRasterSlowTileCheck(rect)); |
357 } | 202 } |
358 | 203 |
359 TEST_F(PicturePileTest, FrequentInvalidationCanRaster) { | |
360 // This test makes sure that if part of the page is frequently invalidated | |
361 // and doesn't get re-recorded, then CanRaster is not true for any | |
362 // tiles touching it, but is true for adjacent tiles, even if it | |
363 // overlaps on borders (edge case). | |
364 gfx::Size new_tiling_size = | |
365 gfx::ToCeiledSize(gfx::ScaleSize(tiling_size(), 4.f)); | |
366 SetTilingSize(new_tiling_size); | |
367 | |
368 gfx::Rect tile02_borders = pile_.tiling().TileBoundsWithBorder(0, 2); | |
369 gfx::Rect tile03_borders = pile_.tiling().TileBoundsWithBorder(0, 3); | |
370 gfx::Rect tile02_noborders = pile_.tiling().TileBounds(0, 2); | |
371 gfx::Rect tile03_noborders = pile_.tiling().TileBounds(0, 3); | |
372 | |
373 // Sanity check these two tiles are overlapping with borders, since this is | |
374 // what the test is trying to repro. | |
375 EXPECT_TRUE(tile02_borders.Intersects(tile03_borders)); | |
376 EXPECT_FALSE(tile02_noborders.Intersects(tile03_noborders)); | |
377 UpdateWholePile(); | |
378 EXPECT_TRUE(pile_.CanRasterLayerRect(tile02_noborders)); | |
379 EXPECT_TRUE(pile_.CanRasterSlowTileCheck(tile02_noborders)); | |
380 EXPECT_TRUE(pile_.CanRasterLayerRect(tile03_noborders)); | |
381 EXPECT_TRUE(pile_.CanRasterSlowTileCheck(tile03_noborders)); | |
382 // Sanity check that an initial paint goes down the fast path of having | |
383 // a valid recorded viewport. | |
384 EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty()); | |
385 | |
386 // Update the whole layer until the invalidation frequency is high. | |
387 for (int frame = 0; frame < 33; ++frame) { | |
388 UpdateWholePile(); | |
389 } | |
390 | |
391 // Update once more with a small viewport. | |
392 gfx::Rect viewport(tiling_size().width(), 1); | |
393 Region invalidation(tiling_rect()); | |
394 UpdateAndExpandInvalidation(&invalidation, tiling_size(), viewport); | |
395 EXPECT_EQ(tiling_rect().ToString(), invalidation.ToString()); | |
396 | |
397 // Sanity check some pictures exist and others don't. | |
398 EXPECT_TRUE(pile_.picture_map() | |
399 .find(FakePicturePile::PictureMapKey(0, 2)) | |
400 ->second.GetPicture()); | |
401 EXPECT_FALSE(pile_.picture_map() | |
402 .find(FakePicturePile::PictureMapKey(0, 3)) | |
403 ->second.GetPicture()); | |
404 | |
405 EXPECT_TRUE(pile_.CanRasterLayerRect(tile02_noborders)); | |
406 EXPECT_TRUE(pile_.CanRasterSlowTileCheck(tile02_noborders)); | |
407 EXPECT_FALSE(pile_.CanRasterLayerRect(tile03_noborders)); | |
408 EXPECT_FALSE(pile_.CanRasterSlowTileCheck(tile03_noborders)); | |
409 } | |
410 | |
411 TEST_F(PicturePileTest, NoInvalidationValidViewport) { | 204 TEST_F(PicturePileTest, NoInvalidationValidViewport) { |
412 // This test validates that the recorded_viewport cache of full tiles | 205 // This test validates that the recorded_viewport cache of full tiles |
413 // is still valid for some use cases. If it's not, it's a performance | 206 // is still valid for some use cases. If it's not, it's a performance |
414 // issue because CanRaster checks will go down the slow path. | 207 // issue because CanRaster checks will go down the slow path. |
415 EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty()); | 208 EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty()); |
416 | 209 |
417 // No invalidation, same viewport. | 210 // No invalidation, same viewport. |
418 Region invalidation; | 211 Region invalidation; |
419 UpdateAndExpandInvalidation(&invalidation, tiling_size(), tiling_rect()); | 212 UpdateAndExpandInvalidation(&invalidation, tiling_size(), tiling_rect()); |
420 EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty()); | 213 EXPECT_TRUE(!pile_.recorded_viewport().IsEmpty()); |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 SetTilingSize(base_tiling_size); | 367 SetTilingSize(base_tiling_size); |
575 | 368 |
576 // We should have a recording for every tile. | 369 // We should have a recording for every tile. |
577 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 370 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
578 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 371 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
579 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 372 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
580 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 373 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
581 FakePicturePile::PictureMapKey key(i, j); | 374 FakePicturePile::PictureMapKey key(i, j); |
582 FakePicturePile::PictureMap& map = pile_.picture_map(); | 375 FakePicturePile::PictureMap& map = pile_.picture_map(); |
583 FakePicturePile::PictureMap::iterator it = map.find(key); | 376 FakePicturePile::PictureMap::iterator it = map.find(key); |
584 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 377 EXPECT_TRUE(it != map.end() && it->second.get()); |
585 } | 378 } |
586 } | 379 } |
587 | 380 |
588 UpdateAndExpandInvalidation( | 381 UpdateAndExpandInvalidation( |
589 &invalidation, | 382 &invalidation, |
590 grow_down_tiling_size, | 383 grow_down_tiling_size, |
591 CornerSinglePixelRect(corner, grow_down_tiling_size)); | 384 CornerSinglePixelRect(corner, grow_down_tiling_size)); |
592 | 385 |
593 // We should have lost all of the recordings in the bottom row as none of them | 386 // We should have lost all of the recordings in the bottom row as none of them |
594 // are in the current interest rect (which is either the above or below it). | 387 // are in the current interest rect (which is either the above or below it). |
595 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 388 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
596 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); | 389 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); |
597 for (int i = 0; i < 6; ++i) { | 390 for (int i = 0; i < 6; ++i) { |
598 for (int j = 0; j < 6; ++j) { | 391 for (int j = 0; j < 6; ++j) { |
599 FakePicturePile::PictureMapKey key(i, j); | 392 FakePicturePile::PictureMapKey key(i, j); |
600 FakePicturePile::PictureMap& map = pile_.picture_map(); | 393 FakePicturePile::PictureMap& map = pile_.picture_map(); |
601 FakePicturePile::PictureMap::iterator it = map.find(key); | 394 FakePicturePile::PictureMap::iterator it = map.find(key); |
602 EXPECT_EQ(j < 5, it != map.end() && it->second.GetPicture()); | 395 EXPECT_EQ(j < 5, it != map.end() && it->second.get()); |
603 } | 396 } |
604 } | 397 } |
605 | 398 |
606 // We invalidated all new pixels in the recording. | 399 // We invalidated all new pixels in the recording. |
607 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), | 400 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), |
608 gfx::Rect(base_tiling_size)); | 401 gfx::Rect(base_tiling_size)); |
609 // But the new pixels don't cover the whole bottom row. | 402 // But the new pixels don't cover the whole bottom row. |
610 gfx::Rect bottom_row = gfx::UnionRects(pile_.tiling().TileBounds(0, 5), | 403 gfx::Rect bottom_row = gfx::UnionRects(pile_.tiling().TileBounds(0, 5), |
611 pile_.tiling().TileBounds(5, 5)); | 404 pile_.tiling().TileBounds(5, 5)); |
612 EXPECT_FALSE(expected_invalidation.Contains(bottom_row)); | 405 EXPECT_FALSE(expected_invalidation.Contains(bottom_row)); |
(...skipping 24 matching lines...) Expand all Loading... |
637 break; | 430 break; |
638 case BOTTOM_LEFT: | 431 case BOTTOM_LEFT: |
639 // The interest rect in the bottom left tile means we'll record it. | 432 // The interest rect in the bottom left tile means we'll record it. |
640 expect_tile = j < 5 || (j == 5 && i == 0); | 433 expect_tile = j < 5 || (j == 5 && i == 0); |
641 break; | 434 break; |
642 case BOTTOM_RIGHT: | 435 case BOTTOM_RIGHT: |
643 // The interest rect in the bottom right tile means we'll record it. | 436 // The interest rect in the bottom right tile means we'll record it. |
644 expect_tile = j < 5 || (j == 5 && i == 5); | 437 expect_tile = j < 5 || (j == 5 && i == 5); |
645 break; | 438 break; |
646 } | 439 } |
647 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()); | 440 EXPECT_EQ(expect_tile, it != map.end() && it->second.get()); |
648 } | 441 } |
649 } | 442 } |
650 | 443 |
651 // When shrinking, the previously exposed region is invalidated. | 444 // When shrinking, the previously exposed region is invalidated. |
652 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), | 445 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), |
653 gfx::Rect(base_tiling_size)); | 446 gfx::Rect(base_tiling_size)); |
654 // The whole bottom row of tiles (except any with the interest rect) are | 447 // The whole bottom row of tiles (except any with the interest rect) are |
655 // dropped. | 448 // dropped. |
656 gfx::Rect bottom_row_minus_existing_corner = gfx::UnionRects( | 449 gfx::Rect bottom_row_minus_existing_corner = gfx::UnionRects( |
657 pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(5, 5)); | 450 pile_.tiling().TileBounds(0, 5), pile_.tiling().TileBounds(5, 5)); |
(...skipping 26 matching lines...) Expand all Loading... |
684 // We should have lost all of the recordings in the right column as none of | 477 // We should have lost all of the recordings in the right column as none of |
685 // them are in the current interest rect (which is either entirely left or | 478 // them are in the current interest rect (which is either entirely left or |
686 // right of it). | 479 // right of it). |
687 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); | 480 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); |
688 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 481 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
689 for (int i = 0; i < 6; ++i) { | 482 for (int i = 0; i < 6; ++i) { |
690 for (int j = 0; j < 6; ++j) { | 483 for (int j = 0; j < 6; ++j) { |
691 FakePicturePile::PictureMapKey key(i, j); | 484 FakePicturePile::PictureMapKey key(i, j); |
692 FakePicturePile::PictureMap& map = pile_.picture_map(); | 485 FakePicturePile::PictureMap& map = pile_.picture_map(); |
693 FakePicturePile::PictureMap::iterator it = map.find(key); | 486 FakePicturePile::PictureMap::iterator it = map.find(key); |
694 EXPECT_EQ(i < 5, it != map.end() && it->second.GetPicture()); | 487 EXPECT_EQ(i < 5, it != map.end() && it->second.get()); |
695 } | 488 } |
696 } | 489 } |
697 | 490 |
698 // We invalidated all new pixels in the recording. | 491 // We invalidated all new pixels in the recording. |
699 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), | 492 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), |
700 gfx::Rect(base_tiling_size)); | 493 gfx::Rect(base_tiling_size)); |
701 // But the new pixels don't cover the whole right_column. | 494 // But the new pixels don't cover the whole right_column. |
702 gfx::Rect right_column = gfx::UnionRects(pile_.tiling().TileBounds(5, 0), | 495 gfx::Rect right_column = gfx::UnionRects(pile_.tiling().TileBounds(5, 0), |
703 pile_.tiling().TileBounds(5, 5)); | 496 pile_.tiling().TileBounds(5, 5)); |
704 EXPECT_FALSE(expected_invalidation.Contains(right_column)); | 497 EXPECT_FALSE(expected_invalidation.Contains(right_column)); |
(...skipping 26 matching lines...) Expand all Loading... |
731 break; | 524 break; |
732 case TOP_RIGHT: | 525 case TOP_RIGHT: |
733 // The interest rect in the top right tile means we'll record it. | 526 // The interest rect in the top right tile means we'll record it. |
734 expect_tile = i < 5 || (j == 0 && i == 5); | 527 expect_tile = i < 5 || (j == 0 && i == 5); |
735 break; | 528 break; |
736 case BOTTOM_RIGHT: | 529 case BOTTOM_RIGHT: |
737 // The interest rect in the bottom right tile means we'll record it. | 530 // The interest rect in the bottom right tile means we'll record it. |
738 expect_tile = i < 5 || (j == 5 && i == 5); | 531 expect_tile = i < 5 || (j == 5 && i == 5); |
739 break; | 532 break; |
740 } | 533 } |
741 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()); | 534 EXPECT_EQ(expect_tile, it != map.end() && it->second.get()); |
742 } | 535 } |
743 } | 536 } |
744 | 537 |
745 // When shrinking, the previously exposed region is invalidated. | 538 // When shrinking, the previously exposed region is invalidated. |
746 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), | 539 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), |
747 gfx::Rect(base_tiling_size)); | 540 gfx::Rect(base_tiling_size)); |
748 // The whole right column of tiles (except for ones with the interest rect) | 541 // The whole right column of tiles (except for ones with the interest rect) |
749 // are dropped. | 542 // are dropped. |
750 gfx::Rect right_column_minus_existing_corner = gfx::UnionRects( | 543 gfx::Rect right_column_minus_existing_corner = gfx::UnionRects( |
751 pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 5)); | 544 pile_.tiling().TileBounds(5, 0), pile_.tiling().TileBounds(5, 5)); |
(...skipping 21 matching lines...) Expand all Loading... |
773 CornerSinglePixelRect(corner, grow_both_tiling_size)); | 566 CornerSinglePixelRect(corner, grow_both_tiling_size)); |
774 | 567 |
775 // We should have lost the recordings in the right column and bottom row. | 568 // We should have lost the recordings in the right column and bottom row. |
776 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); | 569 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); |
777 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); | 570 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); |
778 for (int i = 0; i < 6; ++i) { | 571 for (int i = 0; i < 6; ++i) { |
779 for (int j = 0; j < 6; ++j) { | 572 for (int j = 0; j < 6; ++j) { |
780 FakePicturePile::PictureMapKey key(i, j); | 573 FakePicturePile::PictureMapKey key(i, j); |
781 FakePicturePile::PictureMap& map = pile_.picture_map(); | 574 FakePicturePile::PictureMap& map = pile_.picture_map(); |
782 FakePicturePile::PictureMap::iterator it = map.find(key); | 575 FakePicturePile::PictureMap::iterator it = map.find(key); |
783 EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.GetPicture()); | 576 EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.get()); |
784 } | 577 } |
785 } | 578 } |
786 | 579 |
787 // We invalidated all new pixels in the recording. | 580 // We invalidated all new pixels in the recording. |
788 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), | 581 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), |
789 gfx::Rect(base_tiling_size)); | 582 gfx::Rect(base_tiling_size)); |
790 // But the new pixels don't cover the whole right column or bottom row. | 583 // But the new pixels don't cover the whole right column or bottom row. |
791 Region right_column_and_bottom_row = | 584 Region right_column_and_bottom_row = |
792 UnionRegions(gfx::UnionRects(pile_.tiling().TileBounds(5, 0), | 585 UnionRegions(gfx::UnionRects(pile_.tiling().TileBounds(5, 0), |
793 pile_.tiling().TileBounds(5, 5)), | 586 pile_.tiling().TileBounds(5, 5)), |
(...skipping 29 matching lines...) Expand all Loading... |
823 break; | 616 break; |
824 case BOTTOM_LEFT: | 617 case BOTTOM_LEFT: |
825 // The interest rect in the bottom left tile means we'll record it. | 618 // The interest rect in the bottom left tile means we'll record it. |
826 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0); | 619 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0); |
827 break; | 620 break; |
828 case BOTTOM_RIGHT: | 621 case BOTTOM_RIGHT: |
829 // The interest rect in the bottom right tile means we'll record it. | 622 // The interest rect in the bottom right tile means we'll record it. |
830 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5); | 623 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5); |
831 break; | 624 break; |
832 } | 625 } |
833 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()) | 626 EXPECT_EQ(expect_tile, it != map.end() && it->second.get()) << i << "," |
834 << i << "," << j; | 627 << j; |
835 } | 628 } |
836 } | 629 } |
837 | 630 |
838 // We invalidated all previous pixels in the recording. | 631 // We invalidated all previous pixels in the recording. |
839 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), | 632 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), |
840 gfx::Rect(base_tiling_size)); | 633 gfx::Rect(base_tiling_size)); |
841 // The whole right column and bottom row of tiles (except for ones with the | 634 // The whole right column and bottom row of tiles (except for ones with the |
842 // interest rect) are dropped. | 635 // interest rect) are dropped. |
843 Region right_column_and_bottom_row_minus_existing_corner = | 636 Region right_column_and_bottom_row_minus_existing_corner = |
844 right_column_and_bottom_row; | 637 right_column_and_bottom_row; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
888 SetTilingSize(base_tiling_size); | 681 SetTilingSize(base_tiling_size); |
889 | 682 |
890 // We should have a recording for every tile. | 683 // We should have a recording for every tile. |
891 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 684 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
892 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 685 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
893 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 686 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
894 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 687 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
895 FakePicturePile::PictureMapKey key(i, j); | 688 FakePicturePile::PictureMapKey key(i, j); |
896 FakePicturePile::PictureMap& map = pile_.picture_map(); | 689 FakePicturePile::PictureMap& map = pile_.picture_map(); |
897 FakePicturePile::PictureMap::iterator it = map.find(key); | 690 FakePicturePile::PictureMap::iterator it = map.find(key); |
898 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 691 EXPECT_TRUE(it != map.end() && it->second.get()); |
899 } | 692 } |
900 } | 693 } |
901 | 694 |
902 // In this test (unlike the large resize test), as all growing and shrinking | 695 // In this test (unlike the large resize test), as all growing and shrinking |
903 // happens within tiles, the resulting invalidation is symmetrical, so use | 696 // happens within tiles, the resulting invalidation is symmetrical, so use |
904 // this enum to repeat the test both ways. | 697 // this enum to repeat the test both ways. |
905 enum ChangeDirection { GROW, SHRINK, LAST_DIRECTION = SHRINK }; | 698 enum ChangeDirection { GROW, SHRINK, LAST_DIRECTION = SHRINK }; |
906 | 699 |
907 // Grow downward. | 700 // Grow downward. |
908 for (int dir = 0; dir <= LAST_DIRECTION; ++dir) { | 701 for (int dir = 0; dir <= LAST_DIRECTION; ++dir) { |
(...skipping 20 matching lines...) Expand all Loading... |
929 break; | 722 break; |
930 case BOTTOM_LEFT: | 723 case BOTTOM_LEFT: |
931 // The interest rect in the bottom left tile means we'll record it. | 724 // The interest rect in the bottom left tile means we'll record it. |
932 expect_tile = j < 5 || (j == 5 && i == 0); | 725 expect_tile = j < 5 || (j == 5 && i == 0); |
933 break; | 726 break; |
934 case BOTTOM_RIGHT: | 727 case BOTTOM_RIGHT: |
935 // The interest rect in the bottom right tile means we'll record it. | 728 // The interest rect in the bottom right tile means we'll record it. |
936 expect_tile = j < 5 || (j == 5 && i == 5); | 729 expect_tile = j < 5 || (j == 5 && i == 5); |
937 break; | 730 break; |
938 } | 731 } |
939 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()); | 732 EXPECT_EQ(expect_tile, it != map.end() && it->second.get()); |
940 } | 733 } |
941 } | 734 } |
942 | 735 |
943 // We invalidated the bottom row outside the new interest rect. The tile | 736 // We invalidated the bottom row outside the new interest rect. The tile |
944 // that insects the interest rect in invalidated only on its newly | 737 // that insects the interest rect in invalidated only on its newly |
945 // exposed or previously exposed pixels. | 738 // exposed or previously exposed pixels. |
946 if (dir == GROW) { | 739 if (dir == GROW) { |
947 // Only calculate the expected invalidation while growing, as the tile | 740 // Only calculate the expected invalidation while growing, as the tile |
948 // bounds post-growing is the newly exposed / previously exposed sizes. | 741 // bounds post-growing is the newly exposed / previously exposed sizes. |
949 // Post-shrinking, the tile bounds are smaller, so can't be used. | 742 // Post-shrinking, the tile bounds are smaller, so can't be used. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
995 break; | 788 break; |
996 case TOP_RIGHT: | 789 case TOP_RIGHT: |
997 // The interest rect in the top right tile means we'll record it. | 790 // The interest rect in the top right tile means we'll record it. |
998 expect_tile = i < 5 || (j == 0 && i == 5); | 791 expect_tile = i < 5 || (j == 0 && i == 5); |
999 break; | 792 break; |
1000 case BOTTOM_RIGHT: | 793 case BOTTOM_RIGHT: |
1001 // The interest rect in the bottom right tile means we'll record it. | 794 // The interest rect in the bottom right tile means we'll record it. |
1002 expect_tile = i < 5 || (j == 5 && i == 5); | 795 expect_tile = i < 5 || (j == 5 && i == 5); |
1003 break; | 796 break; |
1004 } | 797 } |
1005 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()); | 798 EXPECT_EQ(expect_tile, it != map.end() && it->second.get()); |
1006 } | 799 } |
1007 } | 800 } |
1008 | 801 |
1009 // We invalidated the right column outside the new interest rect. The tile | 802 // We invalidated the right column outside the new interest rect. The tile |
1010 // that insects the interest rect in invalidated only on its new or | 803 // that insects the interest rect in invalidated only on its new or |
1011 // previously exposed pixels. | 804 // previously exposed pixels. |
1012 if (dir == GROW) { | 805 if (dir == GROW) { |
1013 // Calculate the expected invalidation the first time through the loop. | 806 // Calculate the expected invalidation the first time through the loop. |
1014 switch (corner) { | 807 switch (corner) { |
1015 case TOP_LEFT: | 808 case TOP_LEFT: |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 break; | 857 break; |
1065 case BOTTOM_LEFT: | 858 case BOTTOM_LEFT: |
1066 // The interest rect in the bottom left tile means we'll record it. | 859 // The interest rect in the bottom left tile means we'll record it. |
1067 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0); | 860 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0); |
1068 break; | 861 break; |
1069 case BOTTOM_RIGHT: | 862 case BOTTOM_RIGHT: |
1070 // The interest rect in the bottom right tile means we'll record it. | 863 // The interest rect in the bottom right tile means we'll record it. |
1071 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5); | 864 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5); |
1072 break; | 865 break; |
1073 } | 866 } |
1074 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()) | 867 EXPECT_EQ(expect_tile, it != map.end() && it->second.get()) << i << "," |
1075 << i << "," << j; | 868 << j; |
1076 } | 869 } |
1077 } | 870 } |
1078 | 871 |
1079 // We invalidated the right column and the bottom row outside the new | 872 // We invalidated the right column and the bottom row outside the new |
1080 // interest rect. The tile that insects the interest rect in invalidated | 873 // interest rect. The tile that insects the interest rect in invalidated |
1081 // only on its new or previous exposed pixels. | 874 // only on its new or previous exposed pixels. |
1082 if (dir == GROW) { | 875 if (dir == GROW) { |
1083 // Calculate the expected invalidation the first time through the loop. | 876 // Calculate the expected invalidation the first time through the loop. |
1084 switch (corner) { | 877 switch (corner) { |
1085 case TOP_LEFT: | 878 case TOP_LEFT: |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 SetTilingSize(base_tiling_size); | 938 SetTilingSize(base_tiling_size); |
1146 | 939 |
1147 // We should have a recording for every tile. | 940 // We should have a recording for every tile. |
1148 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 941 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1149 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 942 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1150 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 943 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1151 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 944 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1152 FakePicturePile::PictureMapKey key(i, j); | 945 FakePicturePile::PictureMapKey key(i, j); |
1153 FakePicturePile::PictureMap& map = pile_.picture_map(); | 946 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1154 FakePicturePile::PictureMap::iterator it = map.find(key); | 947 FakePicturePile::PictureMap::iterator it = map.find(key); |
1155 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 948 EXPECT_TRUE(it != map.end() && it->second.get()); |
1156 } | 949 } |
1157 } | 950 } |
1158 | 951 |
1159 UpdateAndExpandInvalidation( | 952 UpdateAndExpandInvalidation( |
1160 &invalidation, grow_down_tiling_size, gfx::Rect(1, 1)); | 953 &invalidation, grow_down_tiling_size, gfx::Rect(1, 1)); |
1161 | 954 |
1162 // We should have a recording for every tile. | 955 // We should have a recording for every tile. |
1163 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 956 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1164 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); | 957 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); |
1165 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 958 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1166 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 959 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1167 FakePicturePile::PictureMapKey key(i, j); | 960 FakePicturePile::PictureMapKey key(i, j); |
1168 FakePicturePile::PictureMap& map = pile_.picture_map(); | 961 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1169 FakePicturePile::PictureMap::iterator it = map.find(key); | 962 FakePicturePile::PictureMap::iterator it = map.find(key); |
1170 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 963 EXPECT_TRUE(it != map.end() && it->second.get()); |
1171 } | 964 } |
1172 } | 965 } |
1173 | 966 |
1174 // We invalidated the newly exposed pixels on the bottom row of tiles. | 967 // We invalidated the newly exposed pixels on the bottom row of tiles. |
1175 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), | 968 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), |
1176 gfx::Rect(base_tiling_size)); | 969 gfx::Rect(base_tiling_size)); |
1177 Region bottom_row_new_pixels = | 970 Region bottom_row_new_pixels = |
1178 SubtractRegions(gfx::UnionRects(pile_.tiling().TileBounds(0, 5), | 971 SubtractRegions(gfx::UnionRects(pile_.tiling().TileBounds(0, 5), |
1179 pile_.tiling().TileBounds(5, 5)), | 972 pile_.tiling().TileBounds(5, 5)), |
1180 gfx::Rect(base_tiling_size)); | 973 gfx::Rect(base_tiling_size)); |
1181 EXPECT_TRUE(expected_invalidation.Contains(bottom_row_new_pixels)); | 974 EXPECT_TRUE(expected_invalidation.Contains(bottom_row_new_pixels)); |
1182 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 975 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1183 invalidation.Clear(); | 976 invalidation.Clear(); |
1184 | 977 |
1185 UpdateWholePile(); | 978 UpdateWholePile(); |
1186 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 979 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); |
1187 | 980 |
1188 // We should have a recording for every tile. | 981 // We should have a recording for every tile. |
1189 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 982 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1190 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 983 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1191 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 984 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1192 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 985 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1193 FakePicturePile::PictureMapKey key(i, j); | 986 FakePicturePile::PictureMapKey key(i, j); |
1194 FakePicturePile::PictureMap& map = pile_.picture_map(); | 987 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1195 FakePicturePile::PictureMap::iterator it = map.find(key); | 988 FakePicturePile::PictureMap::iterator it = map.find(key); |
1196 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 989 EXPECT_TRUE(it != map.end() && it->second.get()); |
1197 } | 990 } |
1198 } | 991 } |
1199 | 992 |
1200 // We invalidated the previously exposed pixels on the bottom row of tiles. | 993 // We invalidated the previously exposed pixels on the bottom row of tiles. |
1201 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), | 994 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), |
1202 gfx::Rect(base_tiling_size)); | 995 gfx::Rect(base_tiling_size)); |
1203 EXPECT_TRUE(expected_invalidation.Contains(bottom_row_new_pixels)); | 996 EXPECT_TRUE(expected_invalidation.Contains(bottom_row_new_pixels)); |
1204 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 997 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1205 invalidation.Clear(); | 998 invalidation.Clear(); |
1206 | 999 |
1207 UpdateWholePile(); | 1000 UpdateWholePile(); |
1208 UpdateAndExpandInvalidation( | 1001 UpdateAndExpandInvalidation( |
1209 &invalidation, grow_right_tiling_size, gfx::Rect(1, 1)); | 1002 &invalidation, grow_right_tiling_size, gfx::Rect(1, 1)); |
1210 | 1003 |
1211 // We should have a recording for every tile. | 1004 // We should have a recording for every tile. |
1212 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); | 1005 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); |
1213 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1006 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1214 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1007 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1215 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1008 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1216 FakePicturePile::PictureMapKey key(i, j); | 1009 FakePicturePile::PictureMapKey key(i, j); |
1217 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1010 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1218 FakePicturePile::PictureMap::iterator it = map.find(key); | 1011 FakePicturePile::PictureMap::iterator it = map.find(key); |
1219 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1012 EXPECT_TRUE(it != map.end() && it->second.get()); |
1220 } | 1013 } |
1221 } | 1014 } |
1222 | 1015 |
1223 // We invalidated the newly exposed pixels on the right column of tiles. | 1016 // We invalidated the newly exposed pixels on the right column of tiles. |
1224 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), | 1017 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), |
1225 gfx::Rect(base_tiling_size)); | 1018 gfx::Rect(base_tiling_size)); |
1226 Region right_column_new_pixels = | 1019 Region right_column_new_pixels = |
1227 SubtractRegions(gfx::UnionRects(pile_.tiling().TileBounds(5, 0), | 1020 SubtractRegions(gfx::UnionRects(pile_.tiling().TileBounds(5, 0), |
1228 pile_.tiling().TileBounds(5, 5)), | 1021 pile_.tiling().TileBounds(5, 5)), |
1229 gfx::Rect(base_tiling_size)); | 1022 gfx::Rect(base_tiling_size)); |
1230 EXPECT_TRUE(expected_invalidation.Contains(right_column_new_pixels)); | 1023 EXPECT_TRUE(expected_invalidation.Contains(right_column_new_pixels)); |
1231 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1024 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1232 invalidation.Clear(); | 1025 invalidation.Clear(); |
1233 | 1026 |
1234 UpdateWholePile(); | 1027 UpdateWholePile(); |
1235 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 1028 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); |
1236 | 1029 |
1237 // We should have lost the recordings that are now outside the tiling only. | 1030 // We should have lost the recordings that are now outside the tiling only. |
1238 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1031 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1239 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1032 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1240 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1033 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1241 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1034 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1242 FakePicturePile::PictureMapKey key(i, j); | 1035 FakePicturePile::PictureMapKey key(i, j); |
1243 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1036 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1244 FakePicturePile::PictureMap::iterator it = map.find(key); | 1037 FakePicturePile::PictureMap::iterator it = map.find(key); |
1245 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1038 EXPECT_TRUE(it != map.end() && it->second.get()); |
1246 } | 1039 } |
1247 } | 1040 } |
1248 | 1041 |
1249 // We invalidated the previously exposed pixels on the right column of tiles. | 1042 // We invalidated the previously exposed pixels on the right column of tiles. |
1250 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), | 1043 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), |
1251 gfx::Rect(base_tiling_size)); | 1044 gfx::Rect(base_tiling_size)); |
1252 EXPECT_TRUE(expected_invalidation.Contains(right_column_new_pixels)); | 1045 EXPECT_TRUE(expected_invalidation.Contains(right_column_new_pixels)); |
1253 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1046 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1254 invalidation.Clear(); | 1047 invalidation.Clear(); |
1255 | 1048 |
1256 UpdateWholePile(); | 1049 UpdateWholePile(); |
1257 UpdateAndExpandInvalidation( | 1050 UpdateAndExpandInvalidation( |
1258 &invalidation, grow_both_tiling_size, gfx::Rect(1, 1)); | 1051 &invalidation, grow_both_tiling_size, gfx::Rect(1, 1)); |
1259 | 1052 |
1260 // We should have a recording for every tile. | 1053 // We should have a recording for every tile. |
1261 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); | 1054 EXPECT_EQ(8, pile_.tiling().num_tiles_x()); |
1262 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); | 1055 EXPECT_EQ(8, pile_.tiling().num_tiles_y()); |
1263 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1056 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1264 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1057 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1265 FakePicturePile::PictureMapKey key(i, j); | 1058 FakePicturePile::PictureMapKey key(i, j); |
1266 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1059 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1267 FakePicturePile::PictureMap::iterator it = map.find(key); | 1060 FakePicturePile::PictureMap::iterator it = map.find(key); |
1268 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1061 EXPECT_TRUE(it != map.end() && it->second.get()); |
1269 } | 1062 } |
1270 } | 1063 } |
1271 | 1064 |
1272 // We invalidated the newly exposed pixels on the bottom row and right column | 1065 // We invalidated the newly exposed pixels on the bottom row and right column |
1273 // of tiles. | 1066 // of tiles. |
1274 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), | 1067 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), |
1275 gfx::Rect(base_tiling_size)); | 1068 gfx::Rect(base_tiling_size)); |
1276 Region bottom_row_and_right_column_new_pixels = SubtractRegions( | 1069 Region bottom_row_and_right_column_new_pixels = SubtractRegions( |
1277 UnionRegions(gfx::UnionRects(pile_.tiling().TileBounds(0, 5), | 1070 UnionRegions(gfx::UnionRects(pile_.tiling().TileBounds(0, 5), |
1278 pile_.tiling().TileBounds(5, 5)), | 1071 pile_.tiling().TileBounds(5, 5)), |
1279 gfx::UnionRects(pile_.tiling().TileBounds(5, 0), | 1072 gfx::UnionRects(pile_.tiling().TileBounds(5, 0), |
1280 pile_.tiling().TileBounds(5, 5))), | 1073 pile_.tiling().TileBounds(5, 5))), |
1281 gfx::Rect(base_tiling_size)); | 1074 gfx::Rect(base_tiling_size)); |
1282 EXPECT_TRUE( | 1075 EXPECT_TRUE( |
1283 expected_invalidation.Contains(bottom_row_and_right_column_new_pixels)); | 1076 expected_invalidation.Contains(bottom_row_and_right_column_new_pixels)); |
1284 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1077 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1285 invalidation.Clear(); | 1078 invalidation.Clear(); |
1286 | 1079 |
1287 UpdateWholePile(); | 1080 UpdateWholePile(); |
1288 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect()); | 1081 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect()); |
1289 | 1082 |
1290 // We should have lost the recordings that are now outside the tiling only. | 1083 // We should have lost the recordings that are now outside the tiling only. |
1291 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1084 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1292 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1085 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1293 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1086 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1294 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1087 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1295 FakePicturePile::PictureMapKey key(i, j); | 1088 FakePicturePile::PictureMapKey key(i, j); |
1296 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1089 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1297 FakePicturePile::PictureMap::iterator it = map.find(key); | 1090 FakePicturePile::PictureMap::iterator it = map.find(key); |
1298 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1091 EXPECT_TRUE(it != map.end() && it->second.get()); |
1299 } | 1092 } |
1300 } | 1093 } |
1301 | 1094 |
1302 // We invalidated the previously exposed pixels on the bottom row and right | 1095 // We invalidated the previously exposed pixels on the bottom row and right |
1303 // column of tiles. | 1096 // column of tiles. |
1304 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), | 1097 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), |
1305 gfx::Rect(base_tiling_size)); | 1098 gfx::Rect(base_tiling_size)); |
1306 EXPECT_TRUE( | 1099 EXPECT_TRUE( |
1307 expected_invalidation.Contains(bottom_row_and_right_column_new_pixels)); | 1100 expected_invalidation.Contains(bottom_row_and_right_column_new_pixels)); |
1308 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1101 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
(...skipping 17 matching lines...) Expand all Loading... |
1326 SetTilingSize(base_tiling_size); | 1119 SetTilingSize(base_tiling_size); |
1327 | 1120 |
1328 // We should have a recording for every tile. | 1121 // We should have a recording for every tile. |
1329 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1122 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1330 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1123 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1331 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1124 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1332 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1125 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1333 FakePicturePile::PictureMapKey key(i, j); | 1126 FakePicturePile::PictureMapKey key(i, j); |
1334 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1127 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1335 FakePicturePile::PictureMap::iterator it = map.find(key); | 1128 FakePicturePile::PictureMap::iterator it = map.find(key); |
1336 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1129 EXPECT_TRUE(it != map.end() && it->second.get()); |
1337 } | 1130 } |
1338 } | 1131 } |
1339 | 1132 |
1340 UpdateAndExpandInvalidation( | 1133 UpdateAndExpandInvalidation( |
1341 &invalidation, grow_down_tiling_size, gfx::Rect(1, 1)); | 1134 &invalidation, grow_down_tiling_size, gfx::Rect(1, 1)); |
1342 | 1135 |
1343 // We should have a recording for every tile. | 1136 // We should have a recording for every tile. |
1344 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1137 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1345 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1138 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1346 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1139 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1347 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1140 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1348 FakePicturePile::PictureMapKey key(i, j); | 1141 FakePicturePile::PictureMapKey key(i, j); |
1349 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1142 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1350 FakePicturePile::PictureMap::iterator it = map.find(key); | 1143 FakePicturePile::PictureMap::iterator it = map.find(key); |
1351 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1144 EXPECT_TRUE(it != map.end() && it->second.get()); |
1352 } | 1145 } |
1353 } | 1146 } |
1354 | 1147 |
1355 // We invalidated the newly exposed pixels. | 1148 // We invalidated the newly exposed pixels. |
1356 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), | 1149 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), |
1357 gfx::Rect(base_tiling_size)); | 1150 gfx::Rect(base_tiling_size)); |
1358 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1151 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1359 invalidation.Clear(); | 1152 invalidation.Clear(); |
1360 | 1153 |
1361 UpdateWholePile(); | 1154 UpdateWholePile(); |
1362 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 1155 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); |
1363 | 1156 |
1364 // We should have a recording for every tile. | 1157 // We should have a recording for every tile. |
1365 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1158 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1366 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1159 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1367 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1160 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1368 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1161 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1369 FakePicturePile::PictureMapKey key(i, j); | 1162 FakePicturePile::PictureMapKey key(i, j); |
1370 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1163 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1371 FakePicturePile::PictureMap::iterator it = map.find(key); | 1164 FakePicturePile::PictureMap::iterator it = map.find(key); |
1372 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1165 EXPECT_TRUE(it != map.end() && it->second.get()); |
1373 } | 1166 } |
1374 } | 1167 } |
1375 | 1168 |
1376 // We invalidated the previously exposed pixels. | 1169 // We invalidated the previously exposed pixels. |
1377 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), | 1170 expected_invalidation = SubtractRegions(gfx::Rect(grow_down_tiling_size), |
1378 gfx::Rect(base_tiling_size)); | 1171 gfx::Rect(base_tiling_size)); |
1379 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1172 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1380 invalidation.Clear(); | 1173 invalidation.Clear(); |
1381 | 1174 |
1382 UpdateWholePile(); | 1175 UpdateWholePile(); |
1383 UpdateAndExpandInvalidation( | 1176 UpdateAndExpandInvalidation( |
1384 &invalidation, grow_right_tiling_size, gfx::Rect(1, 1)); | 1177 &invalidation, grow_right_tiling_size, gfx::Rect(1, 1)); |
1385 | 1178 |
1386 // We should have a recording for every tile. | 1179 // We should have a recording for every tile. |
1387 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1180 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1388 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1181 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1389 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1182 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1390 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1183 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1391 FakePicturePile::PictureMapKey key(i, j); | 1184 FakePicturePile::PictureMapKey key(i, j); |
1392 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1185 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1393 FakePicturePile::PictureMap::iterator it = map.find(key); | 1186 FakePicturePile::PictureMap::iterator it = map.find(key); |
1394 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1187 EXPECT_TRUE(it != map.end() && it->second.get()); |
1395 } | 1188 } |
1396 } | 1189 } |
1397 | 1190 |
1398 // We invalidated the newly exposed pixels. | 1191 // We invalidated the newly exposed pixels. |
1399 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), | 1192 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), |
1400 gfx::Rect(base_tiling_size)); | 1193 gfx::Rect(base_tiling_size)); |
1401 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1194 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1402 invalidation.Clear(); | 1195 invalidation.Clear(); |
1403 | 1196 |
1404 UpdateWholePile(); | 1197 UpdateWholePile(); |
1405 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 1198 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); |
1406 | 1199 |
1407 // We should have lost the recordings that are now outside the tiling only. | 1200 // We should have lost the recordings that are now outside the tiling only. |
1408 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1201 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1409 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1202 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1410 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1203 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1411 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1204 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1412 FakePicturePile::PictureMapKey key(i, j); | 1205 FakePicturePile::PictureMapKey key(i, j); |
1413 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1206 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1414 FakePicturePile::PictureMap::iterator it = map.find(key); | 1207 FakePicturePile::PictureMap::iterator it = map.find(key); |
1415 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1208 EXPECT_TRUE(it != map.end() && it->second.get()); |
1416 } | 1209 } |
1417 } | 1210 } |
1418 | 1211 |
1419 // We invalidated the previously exposed pixels. | 1212 // We invalidated the previously exposed pixels. |
1420 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), | 1213 expected_invalidation = SubtractRegions(gfx::Rect(grow_right_tiling_size), |
1421 gfx::Rect(base_tiling_size)); | 1214 gfx::Rect(base_tiling_size)); |
1422 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1215 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1423 invalidation.Clear(); | 1216 invalidation.Clear(); |
1424 | 1217 |
1425 UpdateWholePile(); | 1218 UpdateWholePile(); |
1426 UpdateAndExpandInvalidation( | 1219 UpdateAndExpandInvalidation( |
1427 &invalidation, grow_both_tiling_size, gfx::Rect(1, 1)); | 1220 &invalidation, grow_both_tiling_size, gfx::Rect(1, 1)); |
1428 | 1221 |
1429 // We should have a recording for every tile. | 1222 // We should have a recording for every tile. |
1430 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1223 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1431 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1224 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1432 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1225 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1433 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1226 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1434 FakePicturePile::PictureMapKey key(i, j); | 1227 FakePicturePile::PictureMapKey key(i, j); |
1435 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1228 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1436 FakePicturePile::PictureMap::iterator it = map.find(key); | 1229 FakePicturePile::PictureMap::iterator it = map.find(key); |
1437 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1230 EXPECT_TRUE(it != map.end() && it->second.get()); |
1438 } | 1231 } |
1439 } | 1232 } |
1440 | 1233 |
1441 // We invalidated the newly exposed pixels. | 1234 // We invalidated the newly exposed pixels. |
1442 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), | 1235 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), |
1443 gfx::Rect(base_tiling_size)); | 1236 gfx::Rect(base_tiling_size)); |
1444 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1237 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1445 invalidation.Clear(); | 1238 invalidation.Clear(); |
1446 | 1239 |
1447 UpdateWholePile(); | 1240 UpdateWholePile(); |
1448 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect()); | 1241 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect()); |
1449 | 1242 |
1450 // We should have lost the recordings that are now outside the tiling only. | 1243 // We should have lost the recordings that are now outside the tiling only. |
1451 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); | 1244 EXPECT_EQ(6, pile_.tiling().num_tiles_x()); |
1452 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); | 1245 EXPECT_EQ(6, pile_.tiling().num_tiles_y()); |
1453 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { | 1246 for (int i = 0; i < pile_.tiling().num_tiles_x(); ++i) { |
1454 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { | 1247 for (int j = 0; j < pile_.tiling().num_tiles_y(); ++j) { |
1455 FakePicturePile::PictureMapKey key(i, j); | 1248 FakePicturePile::PictureMapKey key(i, j); |
1456 FakePicturePile::PictureMap& map = pile_.picture_map(); | 1249 FakePicturePile::PictureMap& map = pile_.picture_map(); |
1457 FakePicturePile::PictureMap::iterator it = map.find(key); | 1250 FakePicturePile::PictureMap::iterator it = map.find(key); |
1458 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 1251 EXPECT_TRUE(it != map.end() && it->second.get()); |
1459 } | 1252 } |
1460 } | 1253 } |
1461 | 1254 |
1462 // We invalidated the previously exposed pixels. | 1255 // We invalidated the previously exposed pixels. |
1463 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), | 1256 expected_invalidation = SubtractRegions(gfx::Rect(grow_both_tiling_size), |
1464 gfx::Rect(base_tiling_size)); | 1257 gfx::Rect(base_tiling_size)); |
1465 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 1258 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
1466 invalidation.Clear(); | 1259 invalidation.Clear(); |
1467 } | 1260 } |
1468 | 1261 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1543 EXPECT_TRUE(pile_.HasRecordings()); | 1336 EXPECT_TRUE(pile_.HasRecordings()); |
1544 pile_.SetEmptyBounds(); | 1337 pile_.SetEmptyBounds(); |
1545 EXPECT_FALSE(pile_.is_solid_color()); | 1338 EXPECT_FALSE(pile_.is_solid_color()); |
1546 EXPECT_TRUE(pile_.GetSize().IsEmpty()); | 1339 EXPECT_TRUE(pile_.GetSize().IsEmpty()); |
1547 EXPECT_TRUE(pile_.picture_map().empty()); | 1340 EXPECT_TRUE(pile_.picture_map().empty()); |
1548 EXPECT_FALSE(pile_.HasRecordings()); | 1341 EXPECT_FALSE(pile_.HasRecordings()); |
1549 } | 1342 } |
1550 | 1343 |
1551 } // namespace | 1344 } // namespace |
1552 } // namespace cc | 1345 } // namespace cc |
OLD | NEW |