| 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_rendering_stats_instrumentation.h" | 10 #include "cc/test/fake_rendering_stats_instrumentation.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 } | 29 } |
| 30 | 30 |
| 31 typedef PicturePile::PictureInfo PictureInfo; | 31 typedef PicturePile::PictureInfo PictureInfo; |
| 32 typedef PicturePile::PictureMapKey PictureMapKey; | 32 typedef PicturePile::PictureMapKey PictureMapKey; |
| 33 typedef PicturePile::PictureMap PictureMap; | 33 typedef PicturePile::PictureMap PictureMap; |
| 34 | 34 |
| 35 protected: | 35 protected: |
| 36 virtual ~TestPicturePile() {} | 36 virtual ~TestPicturePile() {} |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 class PicturePileTest : public testing::Test { | 39 class PicturePileTestBase { |
| 40 public: | 40 public: |
| 41 PicturePileTest() | 41 PicturePileTestBase() |
| 42 : pile_(new TestPicturePile()), | 42 : pile_(new TestPicturePile()), |
| 43 background_color_(SK_ColorBLUE), | 43 background_color_(SK_ColorBLUE), |
| 44 min_scale_(0.125), | 44 min_scale_(0.125), |
| 45 frame_number_(0), | 45 frame_number_(0), |
| 46 contents_opaque_(false) { | 46 contents_opaque_(false) { |
| 47 pile_->SetTileGridSize(gfx::Size(1000, 1000)); | 47 pile_->SetTileGridSize(gfx::Size(1000, 1000)); |
| 48 pile_->SetMinContentsScale(min_scale_); | 48 pile_->SetMinContentsScale(min_scale_); |
| 49 SetTilingSize(pile_->tiling().max_texture_size()); | 49 SetTilingSize(pile_->tiling().max_texture_size()); |
| 50 } | 50 } |
| 51 | 51 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 84 |
| 85 FakeContentLayerClient client_; | 85 FakeContentLayerClient client_; |
| 86 FakeRenderingStatsInstrumentation stats_instrumentation_; | 86 FakeRenderingStatsInstrumentation stats_instrumentation_; |
| 87 scoped_refptr<TestPicturePile> pile_; | 87 scoped_refptr<TestPicturePile> pile_; |
| 88 SkColor background_color_; | 88 SkColor background_color_; |
| 89 float min_scale_; | 89 float min_scale_; |
| 90 int frame_number_; | 90 int frame_number_; |
| 91 bool contents_opaque_; | 91 bool contents_opaque_; |
| 92 }; | 92 }; |
| 93 | 93 |
| 94 class PicturePileTest : public PicturePileTestBase, public testing::Test {}; |
| 95 |
| 94 TEST_F(PicturePileTest, SmallInvalidateInflated) { | 96 TEST_F(PicturePileTest, SmallInvalidateInflated) { |
| 95 // Invalidate something inside a tile. | 97 // Invalidate something inside a tile. |
| 96 Region invalidate_rect(gfx::Rect(50, 50, 1, 1)); | 98 Region invalidate_rect(gfx::Rect(50, 50, 1, 1)); |
| 97 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); | 99 UpdateAndExpandInvalidation(&invalidate_rect, tiling_size(), tiling_rect()); |
| 98 EXPECT_EQ(gfx::Rect(50, 50, 1, 1).ToString(), invalidate_rect.ToString()); | 100 EXPECT_EQ(gfx::Rect(50, 50, 1, 1).ToString(), invalidate_rect.ToString()); |
| 99 | 101 |
| 100 EXPECT_EQ(1, pile_->tiling().num_tiles_x()); | 102 EXPECT_EQ(1, pile_->tiling().num_tiles_x()); |
| 101 EXPECT_EQ(1, pile_->tiling().num_tiles_y()); | 103 EXPECT_EQ(1, pile_->tiling().num_tiles_y()); |
| 102 | 104 |
| 103 TestPicturePile::PictureInfo& picture_info = | 105 TestPicturePile::PictureInfo& picture_info = |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 recorded_over_tiles.right(), recorded_over_tiles.y(), 30, 30); | 379 recorded_over_tiles.right(), recorded_over_tiles.y(), 30, 30); |
| 378 invalidation = invalidation_outside; | 380 invalidation = invalidation_outside; |
| 379 UpdateAndExpandInvalidation(&invalidation, huge_layer_size, viewport); | 381 UpdateAndExpandInvalidation(&invalidation, huge_layer_size, viewport); |
| 380 gfx::Rect expanded_recorded_viewport = | 382 gfx::Rect expanded_recorded_viewport = |
| 381 pile_->tiling().ExpandRectToTileBounds(pile_->recorded_viewport()); | 383 pile_->tiling().ExpandRectToTileBounds(pile_->recorded_viewport()); |
| 382 Region expected_invalidation = | 384 Region expected_invalidation = |
| 383 pile_->tiling().ExpandRectToTileBounds(invalidation_outside); | 385 pile_->tiling().ExpandRectToTileBounds(invalidation_outside); |
| 384 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 386 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 385 } | 387 } |
| 386 | 388 |
| 387 TEST_F(PicturePileTest, ResizePileOutsideInterestRect) { | 389 enum Corner { |
| 390 TOP_LEFT, |
| 391 TOP_RIGHT, |
| 392 BOTTOM_LEFT, |
| 393 BOTTOM_RIGHT, |
| 394 }; |
| 395 |
| 396 class PicturePileResizeCornerTest : public PicturePileTestBase, |
| 397 public testing::TestWithParam<Corner> { |
| 398 protected: |
| 399 static gfx::Rect CornerSinglePixelRect(Corner corner, const gfx::Size& s) { |
| 400 switch (corner) { |
| 401 case TOP_LEFT: |
| 402 return gfx::Rect(0, 0, 1, 1); |
| 403 case TOP_RIGHT: |
| 404 return gfx::Rect(s.width() - 1, 0, 1, 1); |
| 405 case BOTTOM_LEFT: |
| 406 return gfx::Rect(0, s.height() - 1, 1, 1); |
| 407 case BOTTOM_RIGHT: |
| 408 return gfx::Rect(s.width() - 1, s.height() - 1, 1, 1); |
| 409 } |
| 410 NOTREACHED(); |
| 411 return gfx::Rect(); |
| 412 } |
| 413 }; |
| 414 |
| 415 TEST_P(PicturePileResizeCornerTest, ResizePileOutsideInterestRect) { |
| 416 Corner corner = GetParam(); |
| 417 |
| 388 // This size chosen to be larger than the interest rect size, which is | 418 // This size chosen to be larger than the interest rect size, which is |
| 389 // at least kPixelDistanceToRecord * 2 in each dimension. | 419 // at least kPixelDistanceToRecord * 2 in each dimension. |
| 390 int tile_size = 100000; | 420 int tile_size = 100000; |
| 391 gfx::Size base_tiling_size(5 * tile_size, 5 * tile_size); | 421 // The small number subtracted keeps the last tile in each axis larger than |
| 392 gfx::Size grow_down_tiling_size(5 * tile_size, 7 * tile_size); | 422 // the interest rect also. |
| 393 gfx::Size grow_right_tiling_size(7 * tile_size, 5 * tile_size); | 423 int offset = -100; |
| 394 gfx::Size grow_both_tiling_size(7 * tile_size, 7 * tile_size); | 424 gfx::Size base_tiling_size(6 * tile_size + offset, 6 * tile_size + offset); |
| 425 gfx::Size grow_down_tiling_size(6 * tile_size + offset, |
| 426 8 * tile_size + offset); |
| 427 gfx::Size grow_right_tiling_size(8 * tile_size + offset, |
| 428 6 * tile_size + offset); |
| 429 gfx::Size grow_both_tiling_size(8 * tile_size + offset, |
| 430 8 * tile_size + offset); |
| 395 | 431 |
| 396 Region invalidation; | 432 Region invalidation; |
| 397 Region expected_invalidation; | 433 Region expected_invalidation; |
| 398 | 434 |
| 399 pile_->tiling().SetMaxTextureSize(gfx::Size(tile_size, tile_size)); | 435 pile_->tiling().SetMaxTextureSize(gfx::Size(tile_size, tile_size)); |
| 400 SetTilingSize(base_tiling_size); | 436 SetTilingSize(base_tiling_size); |
| 401 | 437 |
| 402 // We should have a recording for every tile. | 438 // We should have a recording for every tile. |
| 403 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 439 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 404 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 440 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 405 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 441 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 406 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 442 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 407 TestPicturePile::PictureMapKey key(i, j); | 443 TestPicturePile::PictureMapKey key(i, j); |
| 408 TestPicturePile::PictureMap& map = pile_->picture_map(); | 444 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 409 TestPicturePile::PictureMap::iterator it = map.find(key); | 445 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 410 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 446 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); |
| 411 } | 447 } |
| 412 } | 448 } |
| 413 | 449 |
| 414 UpdateAndExpandInvalidation( | 450 UpdateAndExpandInvalidation( |
| 415 &invalidation, grow_down_tiling_size, gfx::Rect(1, 1)); | 451 &invalidation, |
| 452 grow_down_tiling_size, |
| 453 CornerSinglePixelRect(corner, grow_down_tiling_size)); |
| 416 | 454 |
| 417 // We should have lost the recordings in the bottom row. | 455 // We should have lost the recordings in the bottom row. |
| 418 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 456 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 419 EXPECT_EQ(8, pile_->tiling().num_tiles_y()); | 457 EXPECT_EQ(8, pile_->tiling().num_tiles_y()); |
| 420 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 458 for (int i = 0; i < 6; ++i) { |
| 421 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 459 for (int j = 0; j < 6; ++j) { |
| 422 TestPicturePile::PictureMapKey key(i, j); | 460 TestPicturePile::PictureMapKey key(i, j); |
| 423 TestPicturePile::PictureMap& map = pile_->picture_map(); | 461 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 424 TestPicturePile::PictureMap::iterator it = map.find(key); | 462 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 425 EXPECT_EQ(j < 5, it != map.end() && it->second.GetPicture()); | 463 EXPECT_EQ(j < 5, it != map.end() && it->second.GetPicture()); |
| 426 } | 464 } |
| 427 } | 465 } |
| 428 | 466 |
| 429 // We invalidated the old bottom row. | 467 // We invalidated the old bottom row. |
| 430 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(0, 5), | 468 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(0, 5), |
| 431 pile_->tiling().TileBounds(5, 5)); | 469 pile_->tiling().TileBounds(5, 5)); |
| 432 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 470 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 433 invalidation.Clear(); | 471 invalidation.Clear(); |
| 434 | 472 |
| 435 UpdateWholePile(); | 473 UpdateWholePile(); |
| 436 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 474 UpdateAndExpandInvalidation(&invalidation, |
| 475 base_tiling_size, |
| 476 CornerSinglePixelRect(corner, base_tiling_size)); |
| 437 | 477 |
| 438 // We should have lost the recordings that are now outside the tiling only. | 478 // We should have lost the recordings that are now outside the tiling only. |
| 439 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 479 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 440 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 480 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 441 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 481 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 442 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 482 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 443 TestPicturePile::PictureMapKey key(i, j); | 483 TestPicturePile::PictureMapKey key(i, j); |
| 444 TestPicturePile::PictureMap& map = pile_->picture_map(); | 484 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 445 TestPicturePile::PictureMap::iterator it = map.find(key); | 485 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 446 EXPECT_EQ(j < 6, it != map.end() && it->second.GetPicture()); | 486 EXPECT_EQ(j < 6, it != map.end() && it->second.GetPicture()); |
| 447 } | 487 } |
| 448 } | 488 } |
| 449 | 489 |
| 450 // No invalidation when shrinking. | 490 // No invalidation when shrinking. |
| 451 expected_invalidation.Clear(); | 491 expected_invalidation.Clear(); |
| 452 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 492 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 453 invalidation.Clear(); | 493 invalidation.Clear(); |
| 454 | 494 |
| 455 UpdateWholePile(); | 495 UpdateWholePile(); |
| 456 UpdateAndExpandInvalidation( | 496 UpdateAndExpandInvalidation( |
| 457 &invalidation, grow_right_tiling_size, gfx::Rect(1, 1)); | 497 &invalidation, |
| 498 grow_right_tiling_size, |
| 499 CornerSinglePixelRect(corner, grow_right_tiling_size)); |
| 458 | 500 |
| 459 // We should have lost the recordings in the right column. | 501 // We should have lost the recordings in the right column. |
| 460 EXPECT_EQ(8, pile_->tiling().num_tiles_x()); | 502 EXPECT_EQ(8, pile_->tiling().num_tiles_x()); |
| 461 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 503 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 462 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 504 for (int i = 0; i < 6; ++i) { |
| 463 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 505 for (int j = 0; j < 6; ++j) { |
| 464 TestPicturePile::PictureMapKey key(i, j); | 506 TestPicturePile::PictureMapKey key(i, j); |
| 465 TestPicturePile::PictureMap& map = pile_->picture_map(); | 507 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 466 TestPicturePile::PictureMap::iterator it = map.find(key); | 508 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 467 EXPECT_EQ(i < 5, it != map.end() && it->second.GetPicture()); | 509 EXPECT_EQ(i < 5, it != map.end() && it->second.GetPicture()); |
| 468 } | 510 } |
| 469 } | 511 } |
| 470 | 512 |
| 471 // We invalidated the old right column. | 513 // We invalidated the old right column. |
| 472 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), | 514 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 473 pile_->tiling().TileBounds(5, 5)); | 515 pile_->tiling().TileBounds(5, 5)); |
| 474 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 516 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 475 invalidation.Clear(); | 517 invalidation.Clear(); |
| 476 | 518 |
| 477 UpdateWholePile(); | 519 UpdateWholePile(); |
| 478 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 520 UpdateAndExpandInvalidation(&invalidation, |
| 521 base_tiling_size, |
| 522 CornerSinglePixelRect(corner, base_tiling_size)); |
| 479 | 523 |
| 480 // We should have lost the recordings that are now outside the tiling only. | 524 // We should have lost the recordings that are now outside the tiling only. |
| 481 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 525 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 482 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 526 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 483 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 527 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 484 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 528 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 485 TestPicturePile::PictureMapKey key(i, j); | 529 TestPicturePile::PictureMapKey key(i, j); |
| 486 TestPicturePile::PictureMap& map = pile_->picture_map(); | 530 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 487 TestPicturePile::PictureMap::iterator it = map.find(key); | 531 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 488 EXPECT_EQ(i < 6, it != map.end() && it->second.GetPicture()); | 532 EXPECT_EQ(i < 6, it != map.end() && it->second.GetPicture()); |
| 489 } | 533 } |
| 490 } | 534 } |
| 491 | 535 |
| 492 // No invalidation when shrinking. | 536 // No invalidation when shrinking. |
| 493 expected_invalidation.Clear(); | 537 expected_invalidation.Clear(); |
| 494 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 538 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 495 invalidation.Clear(); | 539 invalidation.Clear(); |
| 496 | 540 |
| 497 UpdateWholePile(); | 541 UpdateWholePile(); |
| 498 UpdateAndExpandInvalidation( | 542 UpdateAndExpandInvalidation( |
| 499 &invalidation, grow_both_tiling_size, gfx::Rect(1, 1)); | 543 &invalidation, |
| 544 grow_both_tiling_size, |
| 545 CornerSinglePixelRect(corner, grow_both_tiling_size)); |
| 500 | 546 |
| 501 // We should have lost the recordings in the right column and bottom row. | 547 // We should have lost the recordings in the right column and bottom row. |
| 502 EXPECT_EQ(8, pile_->tiling().num_tiles_x()); | 548 EXPECT_EQ(8, pile_->tiling().num_tiles_x()); |
| 503 EXPECT_EQ(8, pile_->tiling().num_tiles_y()); | 549 EXPECT_EQ(8, pile_->tiling().num_tiles_y()); |
| 504 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 550 for (int i = 0; i < 6; ++i) { |
| 505 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 551 for (int j = 0; j < 6; ++j) { |
| 506 TestPicturePile::PictureMapKey key(i, j); | 552 TestPicturePile::PictureMapKey key(i, j); |
| 507 TestPicturePile::PictureMap& map = pile_->picture_map(); | 553 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 508 TestPicturePile::PictureMap::iterator it = map.find(key); | 554 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 509 EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.GetPicture()); | 555 EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.GetPicture()); |
| 510 } | 556 } |
| 511 } | 557 } |
| 512 | 558 |
| 513 // We invalidated the old right column and the old bottom row. | 559 // We invalidated the old right column and the old bottom row. |
| 514 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), | 560 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 515 pile_->tiling().TileBounds(5, 5)); | 561 pile_->tiling().TileBounds(5, 5)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 532 EXPECT_EQ(i < 6 && j < 6, it != map.end() && it->second.GetPicture()); | 578 EXPECT_EQ(i < 6 && j < 6, it != map.end() && it->second.GetPicture()); |
| 533 } | 579 } |
| 534 } | 580 } |
| 535 | 581 |
| 536 // No invalidation when shrinking. | 582 // No invalidation when shrinking. |
| 537 expected_invalidation.Clear(); | 583 expected_invalidation.Clear(); |
| 538 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 584 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 539 invalidation.Clear(); | 585 invalidation.Clear(); |
| 540 } | 586 } |
| 541 | 587 |
| 542 TEST_F(PicturePileTest, SmallResizePileOutsideInterestRect) { | 588 TEST_P(PicturePileResizeCornerTest, SmallResizePileOutsideInterestRect) { |
| 589 Corner corner = GetParam(); |
| 590 |
| 543 // This size chosen to be larger than the interest rect size, which is | 591 // This size chosen to be larger than the interest rect size, which is |
| 544 // at least kPixelDistanceToRecord * 2 in each dimension. | 592 // at least kPixelDistanceToRecord * 2 in each dimension. |
| 545 int tile_size = 100000; | 593 int tile_size = 100000; |
| 546 gfx::Size base_tiling_size(5 * tile_size, 5 * tile_size); | 594 // The small number subtracted keeps the last tile in each axis larger than |
| 547 gfx::Size grow_down_tiling_size(5 * tile_size, 5 * tile_size + 5); | 595 // the interest rect also. |
| 548 gfx::Size grow_right_tiling_size(5 * tile_size + 5, 5 * tile_size); | 596 int offset = -100; |
| 549 gfx::Size grow_both_tiling_size(5 * tile_size + 5, 5 * tile_size + 5); | 597 gfx::Size base_tiling_size(6 * tile_size + offset, 6 * tile_size + offset); |
| 598 gfx::Size grow_down_tiling_size(6 * tile_size + offset, |
| 599 6 * tile_size + offset + 5); |
| 600 gfx::Size grow_right_tiling_size(6 * tile_size + offset + 5, |
| 601 6 * tile_size + offset); |
| 602 gfx::Size grow_both_tiling_size(6 * tile_size + offset + 5, |
| 603 6 * tile_size + offset + 5); |
| 550 | 604 |
| 551 Region invalidation; | 605 Region invalidation; |
| 552 Region expected_invalidation; | 606 Region expected_invalidation; |
| 553 | 607 |
| 554 pile_->tiling().SetMaxTextureSize(gfx::Size(tile_size, tile_size)); | 608 pile_->tiling().SetMaxTextureSize(gfx::Size(tile_size, tile_size)); |
| 555 SetTilingSize(base_tiling_size); | 609 SetTilingSize(base_tiling_size); |
| 556 | 610 |
| 557 // We should have a recording for every tile. | 611 // We should have a recording for every tile. |
| 558 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 612 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 559 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 613 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 560 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 614 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 561 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 615 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 562 TestPicturePile::PictureMapKey key(i, j); | 616 TestPicturePile::PictureMapKey key(i, j); |
| 563 TestPicturePile::PictureMap& map = pile_->picture_map(); | 617 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 564 TestPicturePile::PictureMap::iterator it = map.find(key); | 618 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 565 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 619 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); |
| 566 } | 620 } |
| 567 } | 621 } |
| 568 | 622 |
| 569 UpdateAndExpandInvalidation( | 623 UpdateAndExpandInvalidation( |
| 570 &invalidation, grow_down_tiling_size, gfx::Rect(1, 1)); | 624 &invalidation, |
| 625 grow_down_tiling_size, |
| 626 CornerSinglePixelRect(corner, grow_down_tiling_size)); |
| 571 | 627 |
| 572 // We should have lost the recordings in the bottom row. | 628 // We should have lost the recordings in the bottom row that do not intersect |
| 629 // the interest rect. |
| 573 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 630 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 574 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 631 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 575 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 632 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 576 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 633 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 577 TestPicturePile::PictureMapKey key(i, j); | 634 TestPicturePile::PictureMapKey key(i, j); |
| 578 TestPicturePile::PictureMap& map = pile_->picture_map(); | 635 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 579 TestPicturePile::PictureMap::iterator it = map.find(key); | 636 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 580 EXPECT_EQ(j < 5, it != map.end() && it->second.GetPicture()); | 637 bool expect_tile; |
| 638 switch (corner) { |
| 639 case TOP_LEFT: |
| 640 case TOP_RIGHT: |
| 641 expect_tile = j < 5; |
| 642 break; |
| 643 case BOTTOM_LEFT: |
| 644 // The interest rect in the bottom left tile means we'll record it. |
| 645 expect_tile = j < 5 || (j == 5 && i == 0); |
| 646 break; |
| 647 case BOTTOM_RIGHT: |
| 648 // The interest rect in the bottom right tile means we'll record it. |
| 649 expect_tile = j < 5 || (j == 5 && i == 5); |
| 650 break; |
| 651 } |
| 652 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()); |
| 581 } | 653 } |
| 582 } | 654 } |
| 583 | 655 |
| 584 // We invalidated the bottom row. | 656 // We invalidated the bottom row outside the new interest rect. The tile that |
| 585 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(0, 5), | 657 // insects the interest rect in invalidated only on its new pixels. |
| 586 pile_->tiling().TileBounds(5, 5)); | 658 switch (corner) { |
| 659 case TOP_LEFT: |
| 660 case TOP_RIGHT: |
| 661 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(0, 5), |
| 662 pile_->tiling().TileBounds(5, 5)); |
| 663 break; |
| 664 case BOTTOM_LEFT: |
| 665 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(1, 5), |
| 666 pile_->tiling().TileBounds(5, 5)); |
| 667 expected_invalidation.Union(SubtractRects( |
| 668 pile_->tiling().TileBounds(0, 5), gfx::Rect(base_tiling_size))); |
| 669 break; |
| 670 case BOTTOM_RIGHT: |
| 671 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(0, 5), |
| 672 pile_->tiling().TileBounds(4, 5)); |
| 673 expected_invalidation.Union(SubtractRects( |
| 674 pile_->tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size))); |
| 675 break; |
| 676 } |
| 587 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 677 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 588 invalidation.Clear(); | 678 invalidation.Clear(); |
| 589 | 679 |
| 590 UpdateWholePile(); | 680 UpdateWholePile(); |
| 591 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 681 UpdateAndExpandInvalidation(&invalidation, |
| 682 base_tiling_size, |
| 683 CornerSinglePixelRect(corner, base_tiling_size)); |
| 592 | 684 |
| 593 // We should have lost nothing. | 685 // We should have lost nothing. |
| 594 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 686 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 595 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 687 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 596 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 688 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 597 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 689 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 598 TestPicturePile::PictureMapKey key(i, j); | 690 TestPicturePile::PictureMapKey key(i, j); |
| 599 TestPicturePile::PictureMap& map = pile_->picture_map(); | 691 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 600 TestPicturePile::PictureMap::iterator it = map.find(key); | 692 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 601 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 693 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); |
| 602 } | 694 } |
| 603 } | 695 } |
| 604 | 696 |
| 605 // We invalidated nothing. | 697 // We invalidated nothing. |
| 606 expected_invalidation.Clear(); | 698 expected_invalidation.Clear(); |
| 607 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 699 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 608 invalidation.Clear(); | 700 invalidation.Clear(); |
| 609 | 701 |
| 610 UpdateWholePile(); | 702 UpdateWholePile(); |
| 611 UpdateAndExpandInvalidation( | 703 UpdateAndExpandInvalidation( |
| 612 &invalidation, grow_right_tiling_size, gfx::Rect(1, 1)); | 704 &invalidation, |
| 705 grow_right_tiling_size, |
| 706 CornerSinglePixelRect(corner, grow_right_tiling_size)); |
| 613 | 707 |
| 614 // We should have lost the recordings in the right column. | 708 // We should have lost the recordings in the right column. |
| 615 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 709 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 616 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 710 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 617 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 711 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 618 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 712 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 619 TestPicturePile::PictureMapKey key(i, j); | 713 TestPicturePile::PictureMapKey key(i, j); |
| 620 TestPicturePile::PictureMap& map = pile_->picture_map(); | 714 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 621 TestPicturePile::PictureMap::iterator it = map.find(key); | 715 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 622 EXPECT_EQ(i < 5, it != map.end() && it->second.GetPicture()); | 716 bool expect_tile; |
| 717 switch (corner) { |
| 718 case TOP_LEFT: |
| 719 case BOTTOM_LEFT: |
| 720 expect_tile = i < 5; |
| 721 break; |
| 722 case TOP_RIGHT: |
| 723 // The interest rect in the top right tile means we'll record it. |
| 724 expect_tile = i < 5 || (j == 0 && i == 5); |
| 725 break; |
| 726 case BOTTOM_RIGHT: |
| 727 // The interest rect in the bottom right tile means we'll record it. |
| 728 expect_tile = i < 5 || (j == 5 && i == 5); |
| 729 break; |
| 730 } |
| 731 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()); |
| 623 } | 732 } |
| 624 } | 733 } |
| 625 | 734 |
| 626 // We invalidated the right column. | 735 // We invalidated the right column outside the new interest rect. The tile |
| 627 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), | 736 // that insects the interest rect in invalidated only on its new pixels. |
| 628 pile_->tiling().TileBounds(5, 5)); | 737 switch (corner) { |
| 738 case TOP_LEFT: |
| 739 case BOTTOM_LEFT: |
| 740 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 741 pile_->tiling().TileBounds(5, 5)); |
| 742 break; |
| 743 case TOP_RIGHT: |
| 744 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 1), |
| 745 pile_->tiling().TileBounds(5, 5)); |
| 746 expected_invalidation.Union(SubtractRects( |
| 747 pile_->tiling().TileBounds(5, 0), gfx::Rect(base_tiling_size))); |
| 748 break; |
| 749 case BOTTOM_RIGHT: |
| 750 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 751 pile_->tiling().TileBounds(5, 4)); |
| 752 expected_invalidation.Union(SubtractRects( |
| 753 pile_->tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size))); |
| 754 break; |
| 755 } |
| 629 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 756 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 630 invalidation.Clear(); | 757 invalidation.Clear(); |
| 631 | 758 |
| 632 UpdateWholePile(); | 759 UpdateWholePile(); |
| 633 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 760 UpdateAndExpandInvalidation(&invalidation, |
| 761 base_tiling_size, |
| 762 CornerSinglePixelRect(corner, base_tiling_size)); |
| 634 | 763 |
| 635 // We should have lost nothing. | 764 // We should have lost nothing. |
| 636 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 765 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 637 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 766 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 638 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 767 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 639 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 768 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 640 TestPicturePile::PictureMapKey key(i, j); | 769 TestPicturePile::PictureMapKey key(i, j); |
| 641 TestPicturePile::PictureMap& map = pile_->picture_map(); | 770 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 642 TestPicturePile::PictureMap::iterator it = map.find(key); | 771 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 643 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 772 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); |
| 644 } | 773 } |
| 645 } | 774 } |
| 646 | 775 |
| 647 // We invalidated nothing. | 776 // We invalidated nothing. |
| 648 expected_invalidation.Clear(); | 777 expected_invalidation.Clear(); |
| 649 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 778 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 650 invalidation.Clear(); | 779 invalidation.Clear(); |
| 651 | 780 |
| 652 UpdateWholePile(); | 781 UpdateWholePile(); |
| 653 UpdateAndExpandInvalidation( | 782 UpdateAndExpandInvalidation( |
| 654 &invalidation, grow_both_tiling_size, gfx::Rect(1, 1)); | 783 &invalidation, |
| 784 grow_both_tiling_size, |
| 785 CornerSinglePixelRect(corner, grow_both_tiling_size)); |
| 655 | 786 |
| 656 // We should have lost the recordings in the right column and bottom row. | 787 // We should have lost the recordings in the right column and bottom row. The |
| 788 // tile that insects the interest rect in invalidated only on its new pixels. |
| 657 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 789 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 658 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 790 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 659 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 791 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 660 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 792 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 661 TestPicturePile::PictureMapKey key(i, j); | 793 TestPicturePile::PictureMapKey key(i, j); |
| 662 TestPicturePile::PictureMap& map = pile_->picture_map(); | 794 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 663 TestPicturePile::PictureMap::iterator it = map.find(key); | 795 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 664 EXPECT_EQ(i < 5 && j < 5, it != map.end() && it->second.GetPicture()); | 796 bool expect_tile; |
| 797 switch (corner) { |
| 798 case TOP_LEFT: |
| 799 expect_tile = i < 5 && j < 5; |
| 800 break; |
| 801 case TOP_RIGHT: |
| 802 // The interest rect in the top right tile means we'll record it. |
| 803 expect_tile = (i < 5 && j < 5) || (j == 0 && i == 5); |
| 804 break; |
| 805 case BOTTOM_LEFT: |
| 806 // The interest rect in the bottom left tile means we'll record it. |
| 807 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 0); |
| 808 break; |
| 809 case BOTTOM_RIGHT: |
| 810 // The interest rect in the bottom right tile means we'll record it. |
| 811 expect_tile = (i < 5 && j < 5) || (j == 5 && i == 5); |
| 812 break; |
| 813 } |
| 814 EXPECT_EQ(expect_tile, it != map.end() && it->second.GetPicture()) |
| 815 << i << "," << j; |
| 665 } | 816 } |
| 666 } | 817 } |
| 667 | 818 |
| 668 // We invalidated the right column and the bottom row. | 819 // We invalidated the right column and the bottom row outside the new interest |
| 669 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), | 820 // rect. The tile that insects the interest rect in invalidated only on its |
| 670 pile_->tiling().TileBounds(5, 5)); | 821 // new pixels. |
| 671 expected_invalidation.Union(gfx::UnionRects( | 822 switch (corner) { |
| 672 pile_->tiling().TileBounds(0, 5), pile_->tiling().TileBounds(5, 5))); | 823 case TOP_LEFT: |
| 824 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 825 pile_->tiling().TileBounds(5, 5)); |
| 826 expected_invalidation.Union(gfx::UnionRects( |
| 827 pile_->tiling().TileBounds(0, 5), pile_->tiling().TileBounds(5, 5))); |
| 828 break; |
| 829 case TOP_RIGHT: |
| 830 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 1), |
| 831 pile_->tiling().TileBounds(5, 5)); |
| 832 expected_invalidation.Union(gfx::UnionRects( |
| 833 pile_->tiling().TileBounds(0, 5), pile_->tiling().TileBounds(5, 5))); |
| 834 expected_invalidation.Union(SubtractRects( |
| 835 pile_->tiling().TileBounds(5, 0), gfx::Rect(base_tiling_size))); |
| 836 break; |
| 837 case BOTTOM_LEFT: |
| 838 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 839 pile_->tiling().TileBounds(5, 5)); |
| 840 expected_invalidation.Union(gfx::UnionRects( |
| 841 pile_->tiling().TileBounds(1, 5), pile_->tiling().TileBounds(5, 5))); |
| 842 expected_invalidation.Union(SubtractRects( |
| 843 pile_->tiling().TileBounds(0, 5), gfx::Rect(base_tiling_size))); |
| 844 break; |
| 845 case BOTTOM_RIGHT: |
| 846 expected_invalidation = gfx::UnionRects(pile_->tiling().TileBounds(5, 0), |
| 847 pile_->tiling().TileBounds(5, 4)); |
| 848 expected_invalidation.Union(gfx::UnionRects( |
| 849 pile_->tiling().TileBounds(0, 5), pile_->tiling().TileBounds(4, 5))); |
| 850 expected_invalidation.Union(SubtractRegions( |
| 851 pile_->tiling().TileBounds(5, 5), gfx::Rect(base_tiling_size))); |
| 852 break; |
| 853 } |
| 673 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 854 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 674 invalidation.Clear(); | 855 invalidation.Clear(); |
| 675 | 856 |
| 676 UpdateWholePile(); | 857 UpdateWholePile(); |
| 677 UpdateAndExpandInvalidation(&invalidation, base_tiling_size, gfx::Rect(1, 1)); | 858 UpdateAndExpandInvalidation(&invalidation, |
| 859 base_tiling_size, |
| 860 CornerSinglePixelRect(corner, base_tiling_size)); |
| 678 | 861 |
| 679 // We should have lost nothing. | 862 // We should have lost nothing. |
| 680 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); | 863 EXPECT_EQ(6, pile_->tiling().num_tiles_x()); |
| 681 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); | 864 EXPECT_EQ(6, pile_->tiling().num_tiles_y()); |
| 682 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { | 865 for (int i = 0; i < pile_->tiling().num_tiles_x(); ++i) { |
| 683 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { | 866 for (int j = 0; j < pile_->tiling().num_tiles_y(); ++j) { |
| 684 TestPicturePile::PictureMapKey key(i, j); | 867 TestPicturePile::PictureMapKey key(i, j); |
| 685 TestPicturePile::PictureMap& map = pile_->picture_map(); | 868 TestPicturePile::PictureMap& map = pile_->picture_map(); |
| 686 TestPicturePile::PictureMap::iterator it = map.find(key); | 869 TestPicturePile::PictureMap::iterator it = map.find(key); |
| 687 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); | 870 EXPECT_TRUE(it != map.end() && it->second.GetPicture()); |
| 688 } | 871 } |
| 689 } | 872 } |
| 690 | 873 |
| 691 // We invalidated nothing. | 874 // We invalidated nothing. |
| 692 expected_invalidation.Clear(); | 875 expected_invalidation.Clear(); |
| 693 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); | 876 EXPECT_EQ(expected_invalidation.ToString(), invalidation.ToString()); |
| 694 invalidation.Clear(); | 877 invalidation.Clear(); |
| 695 } | 878 } |
| 696 | 879 |
| 880 INSTANTIATE_TEST_CASE_P( |
| 881 PicturePileResizeCornerTests, |
| 882 PicturePileResizeCornerTest, |
| 883 ::testing::Values(TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT)); |
| 884 |
| 697 TEST_F(PicturePileTest, ResizePileInsideInterestRect) { | 885 TEST_F(PicturePileTest, ResizePileInsideInterestRect) { |
| 698 // This size chosen to be small enough that all the rects below fit inside the | 886 // This size chosen to be small enough that all the rects below fit inside the |
| 699 // the interest rect, so they are smaller than kPixelDistanceToRecord in each | 887 // the interest rect, so they are smaller than kPixelDistanceToRecord in each |
| 700 // dimension. | 888 // dimension. |
| 701 int tile_size = 100; | 889 int tile_size = 100; |
| 702 gfx::Size base_tiling_size(5 * tile_size, 5 * tile_size); | 890 gfx::Size base_tiling_size(5 * tile_size, 5 * tile_size); |
| 703 gfx::Size grow_down_tiling_size(5 * tile_size, 7 * tile_size); | 891 gfx::Size grow_down_tiling_size(5 * tile_size, 7 * tile_size); |
| 704 gfx::Size grow_right_tiling_size(7 * tile_size, 5 * tile_size); | 892 gfx::Size grow_right_tiling_size(7 * tile_size, 5 * tile_size); |
| 705 gfx::Size grow_both_tiling_size(7 * tile_size, 7 * tile_size); | 893 gfx::Size grow_both_tiling_size(7 * tile_size, 7 * tile_size); |
| 706 | 894 |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 998 } | 1186 } |
| 999 } | 1187 } |
| 1000 | 1188 |
| 1001 // No invalidation when shrinking. | 1189 // No invalidation when shrinking. |
| 1002 EXPECT_EQ(Region().ToString(), invalidation.ToString()); | 1190 EXPECT_EQ(Region().ToString(), invalidation.ToString()); |
| 1003 invalidation.Clear(); | 1191 invalidation.Clear(); |
| 1004 } | 1192 } |
| 1005 | 1193 |
| 1006 } // namespace | 1194 } // namespace |
| 1007 } // namespace cc | 1195 } // namespace cc |
| OLD | NEW |