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 |