| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "cc/resources/picture_layer_tiling.h" | 5 #include "cc/resources/picture_layer_tiling.h" |
| 6 | 6 |
| 7 #include "cc/test/fake_picture_layer_tiling_client.h" | 7 #include "cc/test/fake_picture_layer_tiling_client.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "ui/gfx/rect_conversions.h" | 9 #include "ui/gfx/rect_conversions.h" |
| 10 #include "ui/gfx/size_conversions.h" | 10 #include "ui/gfx/size_conversions.h" |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 ACTIVE_TREE, | 421 ACTIVE_TREE, |
| 422 layer_bounds, // device viewport | 422 layer_bounds, // device viewport |
| 423 gfx::Rect(layer_bounds), // viewport in layer space | 423 gfx::Rect(layer_bounds), // viewport in layer space |
| 424 gfx::Rect(layer_bounds), // visible content rect | 424 gfx::Rect(layer_bounds), // visible content rect |
| 425 layer_bounds, // last layer bounds | 425 layer_bounds, // last layer bounds |
| 426 layer_bounds, // current layer bounds | 426 layer_bounds, // current layer bounds |
| 427 1.f, // last contents scale | 427 1.f, // last contents scale |
| 428 1.f, // current contents scale | 428 1.f, // current contents scale |
| 429 gfx::Transform(), // last screen transform | 429 gfx::Transform(), // last screen transform |
| 430 gfx::Transform(), // current screen transform | 430 gfx::Transform(), // current screen transform |
| 431 1, // current frame number | |
| 432 1.0, // current frame time | 431 1.0, // current frame time |
| 433 false, // store screen space quads on tiles | 432 false, // store screen space quads on tiles |
| 434 10000); // max tiles in tile manager | 433 10000); // max tiles in tile manager |
| 435 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 434 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 436 | 435 |
| 437 // Make the viewport rect empty. All tiles are killed and become zombies. | 436 // Make the viewport rect empty. All tiles are killed and become zombies. |
| 438 tiling_->UpdateTilePriorities( | 437 tiling_->UpdateTilePriorities( |
| 439 ACTIVE_TREE, | 438 ACTIVE_TREE, |
| 440 layer_bounds, // device viewport | 439 layer_bounds, // device viewport |
| 441 gfx::Rect(), // viewport in layer space | 440 gfx::Rect(), // viewport in layer space |
| 442 gfx::Rect(), // visible content rect | 441 gfx::Rect(), // visible content rect |
| 443 layer_bounds, // last layer bounds | 442 layer_bounds, // last layer bounds |
| 444 layer_bounds, // current layer bounds | 443 layer_bounds, // current layer bounds |
| 445 1.f, // last contents scale | 444 1.f, // last contents scale |
| 446 1.f, // current contents scale | 445 1.f, // current contents scale |
| 447 gfx::Transform(), // last screen transform | 446 gfx::Transform(), // last screen transform |
| 448 gfx::Transform(), // current screen transform | 447 gfx::Transform(), // current screen transform |
| 449 2, // current frame number | |
| 450 2.0, // current frame time | 448 2.0, // current frame time |
| 451 false, // store screen space quads on tiles | 449 false, // store screen space quads on tiles |
| 452 10000); // max tiles in tile manager | 450 10000); // max tiles in tile manager |
| 453 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 451 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 454 } | 452 } |
| 455 | 453 |
| 456 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { | 454 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { |
| 457 gfx::Size layer_bounds(1099, 801); | 455 gfx::Size layer_bounds(1099, 801); |
| 458 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 456 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
| 459 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 457 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
| 460 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 458 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 461 | 459 |
| 462 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); | 460 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); |
| 463 | 461 |
| 464 tiling_->UpdateTilePriorities( | 462 tiling_->UpdateTilePriorities( |
| 465 ACTIVE_TREE, | 463 ACTIVE_TREE, |
| 466 layer_bounds, // device viewport | 464 layer_bounds, // device viewport |
| 467 giant_rect, // viewport in layer space | 465 giant_rect, // viewport in layer space |
| 468 gfx::Rect(layer_bounds), // visible content rect | 466 gfx::Rect(layer_bounds), // visible content rect |
| 469 layer_bounds, // last layer bounds | 467 layer_bounds, // last layer bounds |
| 470 layer_bounds, // current layer bounds | 468 layer_bounds, // current layer bounds |
| 471 1.f, // last contents scale | 469 1.f, // last contents scale |
| 472 1.f, // current contents scale | 470 1.f, // current contents scale |
| 473 gfx::Transform(), // last screen transform | 471 gfx::Transform(), // last screen transform |
| 474 gfx::Transform(), // current screen transform | 472 gfx::Transform(), // current screen transform |
| 475 1, // current frame number | |
| 476 1.0, // current frame time | 473 1.0, // current frame time |
| 477 false, // store screen space quads on tiles | 474 false, // store screen space quads on tiles |
| 478 10000); // max tiles in tile manager | 475 10000); // max tiles in tile manager |
| 479 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 476 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 480 | 477 |
| 481 // If the visible content rect is empty, it should still have live tiles. | 478 // If the visible content rect is empty, it should still have live tiles. |
| 482 tiling_->UpdateTilePriorities( | 479 tiling_->UpdateTilePriorities( |
| 483 ACTIVE_TREE, | 480 ACTIVE_TREE, |
| 484 layer_bounds, // device viewport | 481 layer_bounds, // device viewport |
| 485 giant_rect, // viewport in layer space | 482 giant_rect, // viewport in layer space |
| 486 gfx::Rect(), // visible content rect | 483 gfx::Rect(), // visible content rect |
| 487 layer_bounds, // last layer bounds | 484 layer_bounds, // last layer bounds |
| 488 layer_bounds, // current layer bounds | 485 layer_bounds, // current layer bounds |
| 489 1.f, // last contents scale | 486 1.f, // last contents scale |
| 490 1.f, // current contents scale | 487 1.f, // current contents scale |
| 491 gfx::Transform(), // last screen transform | 488 gfx::Transform(), // last screen transform |
| 492 gfx::Transform(), // current screen transform | 489 gfx::Transform(), // current screen transform |
| 493 2, // current frame number | |
| 494 2.0, // current frame time | 490 2.0, // current frame time |
| 495 false, // store screen space quads on tiles | 491 false, // store screen space quads on tiles |
| 496 10000); // max tiles in tile manager | 492 10000); // max tiles in tile manager |
| 497 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 493 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 498 } | 494 } |
| 499 | 495 |
| 500 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { | 496 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { |
| 501 gfx::Size layer_bounds(1099, 801); | 497 gfx::Size layer_bounds(1099, 801); |
| 502 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 498 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
| 503 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 499 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
| 504 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 500 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
| 505 | 501 |
| 506 // This rect does not intersect with the layer, as the layer is outside the | 502 // This rect does not intersect with the layer, as the layer is outside the |
| 507 // viewport. | 503 // viewport. |
| 508 gfx::Rect viewport_rect(1100, 0, 1000, 1000); | 504 gfx::Rect viewport_rect(1100, 0, 1000, 1000); |
| 509 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); | 505 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); |
| 510 | 506 |
| 511 tiling_->UpdateTilePriorities( | 507 tiling_->UpdateTilePriorities( |
| 512 ACTIVE_TREE, | 508 ACTIVE_TREE, |
| 513 layer_bounds, // device viewport | 509 layer_bounds, // device viewport |
| 514 viewport_rect, // viewport in layer space | 510 viewport_rect, // viewport in layer space |
| 515 gfx::Rect(), // visible content rect | 511 gfx::Rect(), // visible content rect |
| 516 layer_bounds, // last layer bounds | 512 layer_bounds, // last layer bounds |
| 517 layer_bounds, // current layer bounds | 513 layer_bounds, // current layer bounds |
| 518 1.f, // last contents scale | 514 1.f, // last contents scale |
| 519 1.f, // current contents scale | 515 1.f, // current contents scale |
| 520 gfx::Transform(), // last screen transform | 516 gfx::Transform(), // last screen transform |
| 521 gfx::Transform(), // current screen transform | 517 gfx::Transform(), // current screen transform |
| 522 2, // current frame number | 518 1.0, // current frame time |
| 523 2.0, // current frame time | |
| 524 false, // store screen space quads on tiles | 519 false, // store screen space quads on tiles |
| 525 10000); // max tiles in tile manager | 520 10000); // max tiles in tile manager |
| 526 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 521 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
| 527 } | 522 } |
| 528 | 523 |
| 529 static void TilesIntersectingRectExist(gfx::Rect rect, Tile* tile) { | 524 static void TilesIntersectingRectExist(gfx::Rect rect, Tile* tile) { |
| 530 ASSERT_TRUE(tile != NULL); | 525 ASSERT_TRUE(tile != NULL); |
| 531 bool expected_live = rect.Intersects(tile->content_rect()); | 526 bool expected_live = rect.Intersects(tile->content_rect()); |
| 532 EXPECT_EQ(expected_live, tile->priority(ACTIVE_TREE).is_live) << | 527 EXPECT_EQ(expected_live, tile->priority(ACTIVE_TREE).is_live) << |
| 533 "Rects intersecting " << rect.ToString() << " should exist. " << | 528 "Rects intersecting " << rect.ToString() << " should exist. " << |
| (...skipping 13 matching lines...) Expand all Loading... |
| 547 ACTIVE_TREE, | 542 ACTIVE_TREE, |
| 548 layer_bounds, // device viewport | 543 layer_bounds, // device viewport |
| 549 gfx::Rect(layer_bounds), // viewport in layer space | 544 gfx::Rect(layer_bounds), // viewport in layer space |
| 550 visible_rect, // visible content rect | 545 visible_rect, // visible content rect |
| 551 layer_bounds, // last layer bounds | 546 layer_bounds, // last layer bounds |
| 552 layer_bounds, // current layer bounds | 547 layer_bounds, // current layer bounds |
| 553 1.f, // last contents scale | 548 1.f, // last contents scale |
| 554 1.f, // current contents scale | 549 1.f, // current contents scale |
| 555 gfx::Transform(), // last screen transform | 550 gfx::Transform(), // last screen transform |
| 556 gfx::Transform(), // current screen transform | 551 gfx::Transform(), // current screen transform |
| 557 2, // current frame number | 552 1.0, // current frame time |
| 558 2.0, // current frame time | |
| 559 false, // store screen space quads on tiles | 553 false, // store screen space quads on tiles |
| 560 1); // max tiles in tile manager | 554 1); // max tiles in tile manager |
| 561 VerifyTiles(1.f, | 555 VerifyTiles(1.f, |
| 562 gfx::Rect(layer_bounds), | 556 gfx::Rect(layer_bounds), |
| 563 base::Bind(&TilesIntersectingRectExist, visible_rect)); | 557 base::Bind(&TilesIntersectingRectExist, visible_rect)); |
| 564 } | 558 } |
| 565 | 559 |
| 566 static void CountExistingTiles(int *count, Tile* tile) { | 560 static void CountExistingTiles(int *count, Tile* tile) { |
| 567 ASSERT_TRUE(tile != NULL); | 561 ASSERT_TRUE(tile != NULL); |
| 568 if (tile->priority(ACTIVE_TREE).is_live) | 562 if (tile->priority(ACTIVE_TREE).is_live) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 581 ACTIVE_TREE, | 575 ACTIVE_TREE, |
| 582 layer_bounds, // device viewport | 576 layer_bounds, // device viewport |
| 583 gfx::Rect(layer_bounds), // viewport in layer space | 577 gfx::Rect(layer_bounds), // viewport in layer space |
| 584 gfx::Rect(layer_bounds), // visible content rect | 578 gfx::Rect(layer_bounds), // visible content rect |
| 585 layer_bounds, // last layer bounds | 579 layer_bounds, // last layer bounds |
| 586 layer_bounds, // current layer bounds | 580 layer_bounds, // current layer bounds |
| 587 1.f, // last contents scale | 581 1.f, // last contents scale |
| 588 1.f, // current contents scale | 582 1.f, // current contents scale |
| 589 gfx::Transform(), // last screen transform | 583 gfx::Transform(), // last screen transform |
| 590 gfx::Transform(), // current screen transform | 584 gfx::Transform(), // current screen transform |
| 591 2, // current frame number | 585 1.0, // current frame time |
| 592 2.0, // current frame time | |
| 593 false, // store screen space quads on tiles | 586 false, // store screen space quads on tiles |
| 594 1); // max tiles in tile manager | 587 1); // max tiles in tile manager |
| 595 | 588 |
| 596 int num_tiles = 0; | 589 int num_tiles = 0; |
| 597 VerifyTiles(1.f, | 590 VerifyTiles(1.f, |
| 598 gfx::Rect(layer_bounds), | 591 gfx::Rect(layer_bounds), |
| 599 base::Bind(&CountExistingTiles, &num_tiles)); | 592 base::Bind(&CountExistingTiles, &num_tiles)); |
| 600 // If we're making a rect the size of one tile, it can only overlap up to 4 | 593 // If we're making a rect the size of one tile, it can only overlap up to 4 |
| 601 // tiles depending on its position. | 594 // tiles depending on its position. |
| 602 EXPECT_LE(num_tiles, 4); | 595 EXPECT_LE(num_tiles, 4); |
| 603 } | 596 } |
| 604 | 597 |
| 605 } // namespace | 598 } // namespace |
| 606 } // namespace cc | 599 } // namespace cc |
| OLD | NEW |