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

Side by Side Diff: cc/layers/picture_layer_impl_unittest.cc

Issue 1418273002: cc: Move draw params from SetExternalDrawConstraints to OnDraw (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "cc/layers/picture_layer_impl.h" 5 #include "cc/layers/picture_layer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 gfx::Size layer_bounds(400, 400); 483 gfx::Size layer_bounds(400, 400);
484 SetupDefaultTrees(layer_bounds); 484 SetupDefaultTrees(layer_bounds);
485 485
486 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, 486 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
487 false); 487 false);
488 488
489 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 489 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
490 490
491 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the 491 // Update tiles with viewport for tile priority as (0, 0, 100, 100) and the
492 // identify transform for tile priority. 492 // identify transform for tile priority.
493 bool resourceless_software_draw = false; 493 gfx::Rect viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100);
494 gfx::Rect viewport = gfx::Rect(layer_bounds),
495 viewport_rect_for_tile_priority = gfx::Rect(0, 0, 100, 100);
496 gfx::Transform transform, transform_for_tile_priority; 494 gfx::Transform transform, transform_for_tile_priority;
497 495
498 host_impl_.SetExternalDrawConstraints(transform, 496 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority,
499 viewport, 497 transform_for_tile_priority);
500 viewport,
501 viewport_rect_for_tile_priority,
502 transform_for_tile_priority,
503 resourceless_software_draw);
504 bool update_lcd_text = false; 498 bool update_lcd_text = false;
505 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); 499 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
506 500
507 gfx::Rect viewport_rect_for_tile_priority_in_view_space = 501 gfx::Rect viewport_rect_for_tile_priority_in_view_space =
508 viewport_rect_for_tile_priority; 502 viewport_rect_for_tile_priority;
509 503
510 // Verify the viewport rect for tile priority is used in picture layer tiling. 504 // Verify the viewport rect for tile priority is used in picture layer tiling.
511 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space, 505 EXPECT_EQ(viewport_rect_for_tile_priority_in_view_space,
512 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 506 active_layer_->viewport_rect_for_tile_priority_in_content_space());
513 PictureLayerTilingSet* tilings = active_layer_->tilings(); 507 PictureLayerTilingSet* tilings = active_layer_->tilings();
514 for (size_t i = 0; i < tilings->num_tilings(); i++) { 508 for (size_t i = 0; i < tilings->num_tilings(); i++) {
515 PictureLayerTiling* tiling = tilings->tiling_at(i); 509 PictureLayerTiling* tiling = tilings->tiling_at(i);
516 EXPECT_EQ( 510 EXPECT_EQ(
517 tiling->GetCurrentVisibleRectForTesting(), 511 tiling->GetCurrentVisibleRectForTesting(),
518 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space, 512 gfx::ScaleToEnclosingRect(viewport_rect_for_tile_priority_in_view_space,
519 tiling->contents_scale())); 513 tiling->contents_scale()));
520 } 514 }
521 515
522 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in 516 // Update tiles with viewport for tile priority as (200, 200, 100, 100) in
523 // screen space and the transform for tile priority is translated and 517 // screen space and the transform for tile priority is translated and
524 // rotated. The actual viewport for tile priority used by PictureLayerImpl 518 // rotated. The actual viewport for tile priority used by PictureLayerImpl
525 // should be (200, 200, 100, 100) applied with the said transform. 519 // should be (200, 200, 100, 100) applied with the said transform.
526 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 520 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
527 521
528 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100); 522 viewport_rect_for_tile_priority = gfx::Rect(200, 200, 100, 100);
529 transform_for_tile_priority.Translate(100, 100); 523 transform_for_tile_priority.Translate(100, 100);
530 transform_for_tile_priority.Rotate(45); 524 transform_for_tile_priority.Rotate(45);
531 host_impl_.SetExternalDrawConstraints(transform, 525 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority,
532 viewport, 526 transform_for_tile_priority);
533 viewport,
534 viewport_rect_for_tile_priority,
535 transform_for_tile_priority,
536 resourceless_software_draw);
537 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); 527 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
538 528
539 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization); 529 gfx::Transform screen_to_view(gfx::Transform::kSkipInitialization);
540 bool success = transform_for_tile_priority.GetInverse(&screen_to_view); 530 bool success = transform_for_tile_priority.GetInverse(&screen_to_view);
541 EXPECT_TRUE(success); 531 EXPECT_TRUE(success);
542 532
543 // Note that we don't clip this to the layer bounds, since it is expected that 533 // Note that we don't clip this to the layer bounds, since it is expected that
544 // the rect will sometimes be outside of the layer bounds. If we clip to 534 // the rect will sometimes be outside of the layer bounds. If we clip to
545 // bounds, then tile priorities will end up being incorrect in cases of fully 535 // bounds, then tile priorities will end up being incorrect in cases of fully
546 // offscreen layer. 536 // offscreen layer.
(...skipping 20 matching lines...) Expand all
567 557
568 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, 558 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
569 false); 559 false);
570 560
571 // UpdateTiles with valid viewport. Should update tile viewport. 561 // UpdateTiles with valid viewport. Should update tile viewport.
572 // Note viewport is considered invalid if and only if in resourceless 562 // Note viewport is considered invalid if and only if in resourceless
573 // software draw. 563 // software draw.
574 bool resourceless_software_draw = false; 564 bool resourceless_software_draw = false;
575 gfx::Rect viewport = gfx::Rect(layer_bounds); 565 gfx::Rect viewport = gfx::Rect(layer_bounds);
576 gfx::Transform transform; 566 gfx::Transform transform;
577 host_impl_.SetExternalDrawConstraints(transform, 567 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
578 viewport,
579 viewport,
580 viewport,
581 transform,
582 resourceless_software_draw);
583 active_layer_->draw_properties().visible_layer_rect = viewport; 568 active_layer_->draw_properties().visible_layer_rect = viewport;
584 active_layer_->draw_properties().screen_space_transform = transform; 569 active_layer_->draw_properties().screen_space_transform = transform;
585 active_layer_->UpdateTiles(resourceless_software_draw); 570 active_layer_->UpdateTiles(resourceless_software_draw);
586 571
587 gfx::Rect visible_rect_for_tile_priority = 572 gfx::Rect visible_rect_for_tile_priority =
588 active_layer_->visible_rect_for_tile_priority(); 573 active_layer_->visible_rect_for_tile_priority();
589 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 574 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
590 gfx::Transform screen_space_transform_for_tile_priority = 575 gfx::Transform screen_space_transform_for_tile_priority =
591 active_layer_->draw_properties().screen_space_transform; 576 active_layer_->draw_properties().screen_space_transform;
592 577
593 // Expand viewport and set it as invalid for prioritizing tiles. 578 // Expand viewport and set it as invalid for prioritizing tiles.
594 // Should update viewport and transform, but not update visible rect. 579 // Should update viewport and transform, but not update visible rect.
595 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 580 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
596 resourceless_software_draw = true; 581 resourceless_software_draw = true;
597 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 582 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
598 transform.Translate(1.f, 1.f); 583 transform.Translate(1.f, 1.f);
599 active_layer_->draw_properties().visible_layer_rect = viewport; 584 active_layer_->draw_properties().visible_layer_rect = viewport;
600 active_layer_->draw_properties().screen_space_transform = transform; 585 active_layer_->draw_properties().screen_space_transform = transform;
601 host_impl_.SetExternalDrawConstraints(transform, 586 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
602 viewport,
603 viewport,
604 viewport,
605 transform,
606 resourceless_software_draw);
607 active_layer_->UpdateTiles(resourceless_software_draw); 587 active_layer_->UpdateTiles(resourceless_software_draw);
608 588
609 // Transform for tile priority is updated. 589 // Transform for tile priority is updated.
610 EXPECT_TRANSFORMATION_MATRIX_EQ( 590 EXPECT_TRANSFORMATION_MATRIX_EQ(
611 transform, active_layer_->draw_properties().screen_space_transform); 591 transform, active_layer_->draw_properties().screen_space_transform);
612 // Visible rect for tile priority retains old value. 592 // Visible rect for tile priority retains old value.
613 EXPECT_EQ(visible_rect_for_tile_priority, 593 EXPECT_EQ(visible_rect_for_tile_priority,
614 active_layer_->visible_rect_for_tile_priority()); 594 active_layer_->visible_rect_for_tile_priority());
615 595
616 // Keep expanded viewport but mark it valid. Should update tile viewport. 596 // Keep expanded viewport but mark it valid. Should update tile viewport.
617 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 597 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
618 resourceless_software_draw = false; 598 resourceless_software_draw = false;
619 host_impl_.SetExternalDrawConstraints(transform, 599 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
620 viewport,
621 viewport,
622 viewport,
623 transform,
624 resourceless_software_draw);
625 active_layer_->UpdateTiles(resourceless_software_draw); 600 active_layer_->UpdateTiles(resourceless_software_draw);
626 601
627 EXPECT_TRANSFORMATION_MATRIX_EQ( 602 EXPECT_TRANSFORMATION_MATRIX_EQ(
628 transform, active_layer_->draw_properties().screen_space_transform); 603 transform, active_layer_->draw_properties().screen_space_transform);
629 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); 604 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority());
630 } 605 }
631 606
632 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) { 607 TEST_F(PictureLayerImplTest, ViewportRectForTilePriorityIsCached) {
633 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 608 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
634 gfx::Size layer_bounds(400, 400); 609 gfx::Size layer_bounds(400, 400);
635 SetupDefaultTrees(layer_bounds); 610 SetupDefaultTrees(layer_bounds);
636 611
637 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, 612 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
638 false); 613 false);
639 614
640 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 615 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
641 616
642 bool resourceless_software_draw = false;
643 gfx::Rect viewport = gfx::Rect(layer_bounds);
644 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100); 617 gfx::Rect viewport_rect_for_tile_priority(0, 0, 100, 100);
645 gfx::Transform transform, transform_for_tile_priority; 618 gfx::Transform transform_for_tile_priority;
646 619
647 host_impl_.SetExternalDrawConstraints( 620 host_impl_.SetExternalTilePriorityConstraints(viewport_rect_for_tile_priority,
648 transform, viewport, viewport, viewport_rect_for_tile_priority, 621 transform_for_tile_priority);
649 transform_for_tile_priority, resourceless_software_draw);
650 bool update_lcd_text = false; 622 bool update_lcd_text = false;
651 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); 623 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
652 624
653 EXPECT_EQ(viewport_rect_for_tile_priority, 625 EXPECT_EQ(viewport_rect_for_tile_priority,
654 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 626 active_layer_->viewport_rect_for_tile_priority_in_content_space());
655 627
656 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 628 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
657 629
658 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50); 630 gfx::Rect another_viewport_rect_for_tile_priority(11, 11, 50, 50);
659 host_impl_.SetExternalDrawConstraints( 631 host_impl_.SetExternalTilePriorityConstraints(
660 transform, viewport, viewport, another_viewport_rect_for_tile_priority, 632 another_viewport_rect_for_tile_priority, transform_for_tile_priority);
661 transform_for_tile_priority, resourceless_software_draw);
662 633
663 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority 634 // Didn't call UpdateDrawProperties yet. The viewport rect for tile priority
664 // should remain to be the previously cached value. 635 // should remain to be the previously cached value.
665 EXPECT_EQ(viewport_rect_for_tile_priority, 636 EXPECT_EQ(viewport_rect_for_tile_priority,
666 active_layer_->viewport_rect_for_tile_priority_in_content_space()); 637 active_layer_->viewport_rect_for_tile_priority_in_content_space());
667 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); 638 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text);
668 639
669 // Now the UpdateDrawProperties is called. The viewport rect for tile 640 // Now the UpdateDrawProperties is called. The viewport rect for tile
670 // priority should be the latest value. 641 // priority should be the latest value.
671 EXPECT_EQ(another_viewport_rect_for_tile_priority, 642 EXPECT_EQ(another_viewport_rect_for_tile_priority,
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1808 // tilings. 1779 // tilings.
1809 ActivateTree(); 1780 ActivateTree();
1810 EXPECT_TRUE(active_layer_->CanHaveTilings()); 1781 EXPECT_TRUE(active_layer_->CanHaveTilings());
1811 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); 1782 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f);
1812 } 1783 }
1813 1784
1814 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { 1785 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) {
1815 gfx::Size layer_bounds(200, 200); 1786 gfx::Size layer_bounds(200, 200);
1816 1787
1817 gfx::Transform transform; 1788 gfx::Transform transform;
1818 gfx::Transform transform_for_tile_priority;
1819 bool resourceless_software_draw = false; 1789 bool resourceless_software_draw = false;
1820 gfx::Rect viewport(0, 0, 100, 200); 1790 gfx::Rect viewport(0, 0, 100, 200);
1821 host_impl_.SetExternalDrawConstraints(transform, 1791 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
1822 viewport, 1792 host_impl_.SetExternalViewportForTesting(viewport);
1823 viewport,
1824 viewport,
1825 transform,
1826 resourceless_software_draw);
1827 1793
1828 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = 1794 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source =
1829 FakeDisplayListRasterSource::CreateFilled(layer_bounds); 1795 FakeDisplayListRasterSource::CreateFilled(layer_bounds);
1830 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), 1796 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100),
1831 Region()); 1797 Region());
1832 1798
1833 EXPECT_EQ(1u, pending_layer_->num_tilings()); 1799 EXPECT_EQ(1u, pending_layer_->num_tilings());
1834 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority()); 1800 EXPECT_EQ(viewport, pending_layer_->visible_rect_for_tile_priority());
1835 1801
1836 base::TimeTicks time_ticks; 1802 base::TimeTicks time_ticks;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1870 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region()); 1836 SetupDefaultTreesWithFixedTileSize(layer_bounds, tile_size, Region());
1871 1837
1872 ASSERT_EQ(1u, pending_layer_->num_tilings()); 1838 ASSERT_EQ(1u, pending_layer_->num_tilings());
1873 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale()); 1839 ASSERT_EQ(1.f, pending_layer_->HighResTiling()->contents_scale());
1874 1840
1875 // Set external viewport for tile priority. 1841 // Set external viewport for tile priority.
1876 gfx::Rect viewport = gfx::Rect(layer_bounds); 1842 gfx::Rect viewport = gfx::Rect(layer_bounds);
1877 gfx::Transform transform; 1843 gfx::Transform transform;
1878 gfx::Transform transform_for_tile_priority; 1844 gfx::Transform transform_for_tile_priority;
1879 bool resourceless_software_draw = false; 1845 bool resourceless_software_draw = false;
1880 host_impl_.SetExternalDrawConstraints(transform, 1846 host_impl_.SetExternalTilePriorityConstraints(
1881 viewport, 1847 external_viewport_for_tile_priority, transform_for_tile_priority);
1882 viewport,
1883 external_viewport_for_tile_priority,
1884 transform_for_tile_priority,
1885 resourceless_software_draw);
1886 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); 1848 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1));
1887 bool update_lcd_text = false; 1849 bool update_lcd_text = false;
1888 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); 1850 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text);
1889 1851
1890 // Set visible content rect that is different from 1852 // Set visible content rect that is different from
1891 // external_viewport_for_tile_priority. 1853 // external_viewport_for_tile_priority.
1892 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect; 1854 pending_layer_->draw_properties().visible_layer_rect = visible_layer_rect;
1893 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 1855 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
1894 pending_layer_->UpdateTiles(resourceless_software_draw); 1856 pending_layer_->UpdateTiles(resourceless_software_draw);
1895 1857
(...skipping 1723 matching lines...) Expand 10 before | Expand all | Expand 10 after
3619 3581
3620 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f, 3582 SetupDrawPropertiesAndUpdateTiles(active_layer_, 1.f, 1.f, 1.f, 1.f, 0.f,
3621 false); 3583 false);
3622 3584
3623 // UpdateTiles with valid viewport. Should update tile viewport. 3585 // UpdateTiles with valid viewport. Should update tile viewport.
3624 // Note viewport is considered invalid if and only if in resourceless 3586 // Note viewport is considered invalid if and only if in resourceless
3625 // software draw. 3587 // software draw.
3626 bool resourceless_software_draw = false; 3588 bool resourceless_software_draw = false;
3627 gfx::Rect viewport = gfx::Rect(layer_bounds); 3589 gfx::Rect viewport = gfx::Rect(layer_bounds);
3628 gfx::Transform transform; 3590 gfx::Transform transform;
3629 host_impl_.SetExternalDrawConstraints(transform, 3591 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
3630 viewport,
3631 viewport,
3632 viewport,
3633 transform,
3634 resourceless_software_draw);
3635 active_layer_->draw_properties().visible_layer_rect = viewport; 3592 active_layer_->draw_properties().visible_layer_rect = viewport;
3636 active_layer_->draw_properties().screen_space_transform = transform; 3593 active_layer_->draw_properties().screen_space_transform = transform;
3637 active_layer_->UpdateTiles(resourceless_software_draw); 3594 active_layer_->UpdateTiles(resourceless_software_draw);
3638 3595
3639 gfx::Rect visible_rect_for_tile_priority = 3596 gfx::Rect visible_rect_for_tile_priority =
3640 active_layer_->visible_rect_for_tile_priority(); 3597 active_layer_->visible_rect_for_tile_priority();
3641 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty()); 3598 EXPECT_FALSE(visible_rect_for_tile_priority.IsEmpty());
3642 gfx::Transform screen_space_transform_for_tile_priority = 3599 gfx::Transform screen_space_transform_for_tile_priority =
3643 active_layer_->draw_properties().screen_space_transform; 3600 active_layer_->draw_properties().screen_space_transform;
3644 3601
3645 // Expand viewport and set it as invalid for prioritizing tiles. 3602 // Expand viewport and set it as invalid for prioritizing tiles.
3646 // Should update viewport and transform, but not update visible rect. 3603 // Should update viewport and transform, but not update visible rect.
3647 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 3604 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
3648 resourceless_software_draw = true; 3605 resourceless_software_draw = true;
3649 viewport = gfx::ScaleToEnclosingRect(viewport, 2); 3606 viewport = gfx::ScaleToEnclosingRect(viewport, 2);
3650 transform.Translate(1.f, 1.f); 3607 transform.Translate(1.f, 1.f);
3651 active_layer_->draw_properties().visible_layer_rect = viewport; 3608 active_layer_->draw_properties().visible_layer_rect = viewport;
3652 active_layer_->draw_properties().screen_space_transform = transform; 3609 active_layer_->draw_properties().screen_space_transform = transform;
3653 host_impl_.SetExternalDrawConstraints(transform, 3610 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
3654 viewport,
3655 viewport,
3656 viewport,
3657 transform,
3658 resourceless_software_draw);
3659 active_layer_->UpdateTiles(resourceless_software_draw); 3611 active_layer_->UpdateTiles(resourceless_software_draw);
3660 3612
3661 // Transform for tile priority is updated. 3613 // Transform for tile priority is updated.
3662 EXPECT_TRANSFORMATION_MATRIX_EQ( 3614 EXPECT_TRANSFORMATION_MATRIX_EQ(
3663 transform, active_layer_->draw_properties().screen_space_transform); 3615 transform, active_layer_->draw_properties().screen_space_transform);
3664 // Visible rect for tile priority retains old value. 3616 // Visible rect for tile priority retains old value.
3665 EXPECT_EQ(visible_rect_for_tile_priority, 3617 EXPECT_EQ(visible_rect_for_tile_priority,
3666 active_layer_->visible_rect_for_tile_priority()); 3618 active_layer_->visible_rect_for_tile_priority());
3667 3619
3668 // Keep expanded viewport but mark it valid. Should update tile viewport. 3620 // Keep expanded viewport but mark it valid. Should update tile viewport.
3669 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200)); 3621 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(200));
3670 resourceless_software_draw = false; 3622 resourceless_software_draw = false;
3671 host_impl_.SetExternalDrawConstraints(transform, 3623 host_impl_.SetExternalTilePriorityConstraints(viewport, transform);
3672 viewport,
3673 viewport,
3674 viewport,
3675 transform,
3676 resourceless_software_draw);
3677 active_layer_->UpdateTiles(resourceless_software_draw); 3624 active_layer_->UpdateTiles(resourceless_software_draw);
3678 3625
3679 EXPECT_TRANSFORMATION_MATRIX_EQ( 3626 EXPECT_TRANSFORMATION_MATRIX_EQ(
3680 transform, active_layer_->draw_properties().screen_space_transform); 3627 transform, active_layer_->draw_properties().screen_space_transform);
3681 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority()); 3628 EXPECT_EQ(viewport, active_layer_->visible_rect_for_tile_priority());
3682 } 3629 }
3683 3630
3684 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) { 3631 TEST_F(NoLowResPictureLayerImplTest, CleanUpTilings) {
3685 gfx::Size layer_bounds(1300, 1900); 3632 gfx::Size layer_bounds(1300, 1900);
3686 std::vector<PictureLayerTiling*> used_tilings; 3633 std::vector<PictureLayerTiling*> used_tilings;
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after
4782 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = 4729 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source =
4783 FakeDisplayListRasterSource::CreateFilled(layer_bounds); 4730 FakeDisplayListRasterSource::CreateFilled(layer_bounds);
4784 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = 4731 scoped_refptr<FakeDisplayListRasterSource> active_raster_source =
4785 FakeDisplayListRasterSource::CreateFilled(layer_bounds); 4732 FakeDisplayListRasterSource::CreateFilled(layer_bounds);
4786 4733
4787 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); 4734 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region());
4788 4735
4789 ActivateTree(); 4736 ActivateTree();
4790 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); 4737 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles());
4791 4738
4792 host_impl_.SetExternalDrawConstraints( 4739 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 5000, 100, 100),
4793 gfx::Transform(), // transform 4740 gfx::Transform());
4794 gfx::Rect(), // clip
4795 gfx::Rect(), // viewport
4796 gfx::Rect(0, 5000, 100, 100), // viewport_rect_for_tile_priority
4797 gfx::Transform(), // transform_for_tile_priority
4798 false);
4799 4741
4800 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, 4742 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size,
4801 gfx::Rect()); 4743 gfx::Rect());
4802 4744
4803 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); 4745 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles());
4804 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); 4746 EXPECT_TRUE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty());
4805 ActivateTree(); 4747 ActivateTree();
4806 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles()); 4748 EXPECT_FALSE(active_layer_->HighResTiling()->has_tiles());
4807 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); 4749 EXPECT_TRUE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty());
4808 4750
4809 host_impl_.SetExternalDrawConstraints( 4751 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 110, 100, 100),
4810 gfx::Transform(), // transform 4752 gfx::Transform());
4811 gfx::Rect(), // clip
4812 gfx::Rect(), // viewport
4813 gfx::Rect(0, 110, 100, 100), // viewport_rect_for_tile_priority
4814 gfx::Transform(), // transform_for_tile_priority
4815 false);
4816 4753
4817 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, 4754 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size,
4818 gfx::Rect()); 4755 gfx::Rect());
4819 4756
4820 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles()); 4757 EXPECT_FALSE(pending_layer_->HighResTiling()->has_tiles());
4821 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); 4758 EXPECT_FALSE(pending_layer_->HighResTiling()->live_tiles_rect().IsEmpty());
4822 ActivateTree(); 4759 ActivateTree();
4823 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); 4760 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles());
4824 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty()); 4761 EXPECT_FALSE(active_layer_->HighResTiling()->live_tiles_rect().IsEmpty());
4825 } 4762 }
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
5084 // New low res tiling. 5021 // New low res tiling.
5085 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); 5022 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles());
5086 5023
5087 // This tiling will be high res now, it won't contain low res content since it 5024 // This tiling will be high res now, it won't contain low res content since it
5088 // was all destroyed. 5025 // was all destroyed.
5089 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); 5026 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles());
5090 } 5027 }
5091 5028
5092 } // namespace 5029 } // namespace
5093 } // namespace cc 5030 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698