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

Side by Side Diff: cc/trees/layer_tree_host_unittest_picture.cc

Issue 2566613002: [4/5] Add translated rasterization support for PictureLayerTilingSet & below (Closed)
Patch Set: still need that rebaseline Created 3 years, 8 months 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
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include "cc/test/fake_content_layer_client.h" 7 #include "cc/test/fake_content_layer_client.h"
8 #include "cc/test/fake_picture_layer.h" 8 #include "cc/test/fake_picture_layer.h"
9 #include "cc/test/fake_picture_layer_impl.h" 9 #include "cc/test/fake_picture_layer_impl.h"
10 #include "cc/test/layer_tree_test.h" 10 #include "cc/test/layer_tree_test.h"
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 445
446 void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override { 446 void WillActivateTreeOnThread(LayerTreeHostImpl* impl) override {
447 LayerImpl* gchild = impl->sync_tree()->LayerById(picture_->id()); 447 LayerImpl* gchild = impl->sync_tree()->LayerById(picture_->id());
448 FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild); 448 FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild);
449 ready_to_draw_ = false; 449 ready_to_draw_ = false;
450 450
451 switch (frame_) { 451 switch (frame_) {
452 case 0: 452 case 0:
453 // On 1st commit the pending layer has tilings. 453 // On 1st commit the pending layer has tilings.
454 ASSERT_EQ(1u, picture->tilings()->num_tilings()); 454 ASSERT_EQ(1u, picture->tilings()->num_tilings());
455 EXPECT_EQ(1.f, picture->tilings()->tiling_at(0)->contents_scale()); 455 EXPECT_EQ(gfx::AxisTransform2d(),
456 picture->tilings()->tiling_at(0)->raster_transform());
456 break; 457 break;
457 case 1: 458 case 1:
458 // On 2nd commit, the pending layer is transparent, so has a stale 459 // On 2nd commit, the pending layer is transparent, so has a stale
459 // value. 460 // value.
460 ASSERT_EQ(1u, picture->tilings()->num_tilings()); 461 ASSERT_EQ(1u, picture->tilings()->num_tilings());
461 EXPECT_EQ(1.f, picture->tilings()->tiling_at(0)->contents_scale()); 462 EXPECT_EQ(gfx::AxisTransform2d(),
463 picture->tilings()->tiling_at(0)->raster_transform());
462 break; 464 break;
463 case 2: 465 case 2:
464 // On 3rd commit, the pending layer is visible again, so has tilings and 466 // On 3rd commit, the pending layer is visible again, so has tilings and
465 // is updated for the pinch. 467 // is updated for the pinch.
466 ASSERT_EQ(1u, picture->tilings()->num_tilings()); 468 ASSERT_EQ(1u, picture->tilings()->num_tilings());
467 EXPECT_EQ(2.f, picture->tilings()->tiling_at(0)->contents_scale()); 469 EXPECT_EQ(gfx::AxisTransform2d(2.f, gfx::Vector2dF()),
470 picture->tilings()->tiling_at(0)->raster_transform());
468 } 471 }
469 } 472 }
470 473
471 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { 474 void DrawLayersOnThread(LayerTreeHostImpl* impl) override {
472 LayerImpl* gchild = impl->active_tree()->LayerById(picture_->id()); 475 LayerImpl* gchild = impl->active_tree()->LayerById(picture_->id());
473 FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild); 476 FakePictureLayerImpl* picture = static_cast<FakePictureLayerImpl*>(gchild);
474 477
475 if (frame_ != last_frame_drawn_) 478 if (frame_ != last_frame_drawn_)
476 draws_in_frame_ = 0; 479 draws_in_frame_ = 0;
477 ++draws_in_frame_; 480 ++draws_in_frame_;
478 last_frame_drawn_ = frame_; 481 last_frame_drawn_ = frame_;
479 482
480 switch (frame_) { 483 switch (frame_) {
481 case 0: 484 case 0:
482 if (draws_in_frame_ == 1) { 485 if (draws_in_frame_ == 1) {
483 // On 1st commit the layer has tilings. 486 // On 1st commit the layer has tilings.
484 EXPECT_GT(picture->tilings()->num_tilings(), 0u); 487 EXPECT_GT(picture->tilings()->num_tilings(), 0u);
485 EXPECT_EQ(1.f, picture->HighResTiling()->contents_scale()); 488 EXPECT_EQ(gfx::AxisTransform2d(),
489 picture->HighResTiling()->raster_transform());
486 490
487 // Pinch zoom in to change the scale on the active tree. 491 // Pinch zoom in to change the scale on the active tree.
488 impl->PinchGestureBegin(); 492 impl->PinchGestureBegin();
489 impl->PinchGestureUpdate(2.f, gfx::Point(1, 1)); 493 impl->PinchGestureUpdate(2.f, gfx::Point(1, 1));
490 impl->PinchGestureEnd(); 494 impl->PinchGestureEnd();
491 } else if (picture->tilings()->num_tilings() == 1) { 495 } else if (picture->tilings()->num_tilings() == 1) {
492 // If the pinch gesture caused a commit we could get here with a 496 // If the pinch gesture caused a commit we could get here with a
493 // pending tree. 497 // pending tree.
494 EXPECT_FALSE(impl->pending_tree()); 498 EXPECT_FALSE(impl->pending_tree());
495 EXPECT_EQ(2.f, picture->HighResTiling()->contents_scale()); 499 EXPECT_EQ(gfx::AxisTransform2d(2.f, gfx::Vector2dF()),
500 picture->HighResTiling()->raster_transform());
496 501
497 // Need to wait for ready to draw here so that the pinch is 502 // Need to wait for ready to draw here so that the pinch is
498 // entirely complete, otherwise another draw might come in before 503 // entirely complete, otherwise another draw might come in before
499 // the commit occurs. 504 // the commit occurs.
500 if (ready_to_draw_) { 505 if (ready_to_draw_) {
501 ++frame_; 506 ++frame_;
502 MainThreadTaskRunner()->PostTask( 507 MainThreadTaskRunner()->PostTask(
503 FROM_HERE, 508 FROM_HERE,
504 base::Bind( 509 base::Bind(
505 &LayerTreeHostPictureTestRSLLMembershipWithScale::NextStep, 510 &LayerTreeHostPictureTestRSLLMembershipWithScale::NextStep,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 FakePictureLayerImpl* will_change_layer = 608 FakePictureLayerImpl* will_change_layer =
604 static_cast<FakePictureLayerImpl*>( 609 static_cast<FakePictureLayerImpl*>(
605 impl->active_tree()->LayerById(will_change_layer_->id())); 610 impl->active_tree()->LayerById(will_change_layer_->id()));
606 FakePictureLayerImpl* normal_layer = static_cast<FakePictureLayerImpl*>( 611 FakePictureLayerImpl* normal_layer = static_cast<FakePictureLayerImpl*>(
607 impl->active_tree()->LayerById(normal_layer_->id())); 612 impl->active_tree()->LayerById(normal_layer_->id()));
608 613
609 switch (impl->sync_tree()->source_frame_number()) { 614 switch (impl->sync_tree()->source_frame_number()) {
610 case 0: 615 case 0:
611 // On first commit, both layers are at the default scale. 616 // On first commit, both layers are at the default scale.
612 ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings()); 617 ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings());
613 EXPECT_EQ(1.f, 618 EXPECT_EQ(
614 will_change_layer->tilings()->tiling_at(0)->contents_scale()); 619 gfx::AxisTransform2d(),
620 will_change_layer->tilings()->tiling_at(0)->raster_transform());
615 ASSERT_EQ(1u, normal_layer->tilings()->num_tilings()); 621 ASSERT_EQ(1u, normal_layer->tilings()->num_tilings());
616 EXPECT_EQ(1.f, normal_layer->tilings()->tiling_at(0)->contents_scale()); 622 EXPECT_EQ(gfx::AxisTransform2d(),
623 normal_layer->tilings()->tiling_at(0)->raster_transform());
617 624
618 MainThreadTaskRunner()->PostTask( 625 MainThreadTaskRunner()->PostTask(
619 FROM_HERE, 626 FROM_HERE,
620 base::Bind( 627 base::Bind(
621 &LayerTreeHostPictureTestForceRecalculateScales::ScaleRootUp, 628 &LayerTreeHostPictureTestForceRecalculateScales::ScaleRootUp,
622 base::Unretained(this))); 629 base::Unretained(this)));
623 break; 630 break;
624 case 1: 631 case 1:
625 // On 2nd commit after scaling up to 2, the normal layer will adjust its 632 // On 2nd commit after scaling up to 2, the normal layer will adjust its
626 // scale and the will change layer should not (as it is will change. 633 // scale and the will change layer should not (as it is will change.
627 ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings()); 634 ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings());
628 EXPECT_EQ(1.f, 635 EXPECT_EQ(
629 will_change_layer->tilings()->tiling_at(0)->contents_scale()); 636 gfx::AxisTransform2d(),
637 will_change_layer->tilings()->tiling_at(0)->raster_transform());
630 ASSERT_EQ(1u, normal_layer->tilings()->num_tilings()); 638 ASSERT_EQ(1u, normal_layer->tilings()->num_tilings());
631 EXPECT_EQ(2.f, normal_layer->tilings()->tiling_at(0)->contents_scale()); 639 EXPECT_EQ(gfx::AxisTransform2d(2.f, gfx::Vector2dF()),
640 normal_layer->tilings()->tiling_at(0)->raster_transform());
632 641
633 MainThreadTaskRunner()->PostTask( 642 MainThreadTaskRunner()->PostTask(
634 FROM_HERE, 643 FROM_HERE,
635 base::Bind(&LayerTreeHostPictureTestForceRecalculateScales:: 644 base::Bind(&LayerTreeHostPictureTestForceRecalculateScales::
636 ScaleRootUpAndRecalculateScales, 645 ScaleRootUpAndRecalculateScales,
637 base::Unretained(this))); 646 base::Unretained(this)));
638 break; 647 break;
639 case 2: 648 case 2:
640 // On 3rd commit, both layers should adjust scales due to forced 649 // On 3rd commit, both layers should adjust scales due to forced
641 // recalculating. 650 // recalculating.
642 ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings()); 651 ASSERT_EQ(1u, will_change_layer->tilings()->num_tilings());
643 EXPECT_EQ(4.f, 652 EXPECT_EQ(
644 will_change_layer->tilings()->tiling_at(0)->contents_scale()); 653 gfx::AxisTransform2d(4.f, gfx::Vector2dF()),
654 will_change_layer->tilings()->tiling_at(0)->raster_transform());
645 ASSERT_EQ(1u, normal_layer->tilings()->num_tilings()); 655 ASSERT_EQ(1u, normal_layer->tilings()->num_tilings());
646 EXPECT_EQ(4.f, normal_layer->tilings()->tiling_at(0)->contents_scale()); 656 EXPECT_EQ(gfx::AxisTransform2d(4.f, gfx::Vector2dF()),
657 normal_layer->tilings()->tiling_at(0)->raster_transform());
647 EndTest(); 658 EndTest();
648 break; 659 break;
649 } 660 }
650 } 661 }
651 662
652 void ScaleRootUp() { 663 void ScaleRootUp() {
653 gfx::Transform transform; 664 gfx::Transform transform;
654 transform.Scale(2, 2); 665 transform.Scale(2, 2);
655 layer_tree_host()->root_layer()->SetTransform(transform); 666 layer_tree_host()->root_layer()->SetTransform(transform);
656 } 667 }
657 668
658 void ScaleRootUpAndRecalculateScales() { 669 void ScaleRootUpAndRecalculateScales() {
659 gfx::Transform transform; 670 gfx::Transform transform;
660 transform.Scale(4, 4); 671 transform.Scale(4, 4);
661 layer_tree_host()->root_layer()->SetTransform(transform); 672 layer_tree_host()->root_layer()->SetTransform(transform);
662 layer_tree_host()->SetNeedsRecalculateRasterScales(); 673 layer_tree_host()->SetNeedsRecalculateRasterScales();
663 } 674 }
664 675
665 void AfterTest() override {} 676 void AfterTest() override {}
666 677
667 scoped_refptr<FakePictureLayer> will_change_layer_; 678 scoped_refptr<FakePictureLayer> will_change_layer_;
668 scoped_refptr<FakePictureLayer> normal_layer_; 679 scoped_refptr<FakePictureLayer> normal_layer_;
669 }; 680 };
670 681
671 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostPictureTestForceRecalculateScales); 682 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostPictureTestForceRecalculateScales);
672 683
673 } // namespace 684 } // namespace
674 } // namespace cc 685 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest.cc ('k') | third_party/WebKit/LayoutTests/TestExpectations » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698