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

Side by Side Diff: ui/compositor/layer_unittest.cc

Issue 1101823002: CC Animations: Make LayerAnimationController creation optional (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address observers attach/detach. Created 5 years, 7 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 *run = true; 660 *run = true;
661 } 661 }
662 662
663 TEST_F(LayerWithNullDelegateTest, SwitchLayerPreservesCCLayerState) { 663 TEST_F(LayerWithNullDelegateTest, SwitchLayerPreservesCCLayerState) {
664 scoped_ptr<Layer> l1(CreateLayer(LAYER_SOLID_COLOR)); 664 scoped_ptr<Layer> l1(CreateLayer(LAYER_SOLID_COLOR));
665 l1->SetFillsBoundsOpaquely(true); 665 l1->SetFillsBoundsOpaquely(true);
666 l1->SetForceRenderSurface(true); 666 l1->SetForceRenderSurface(true);
667 l1->SetVisible(false); 667 l1->SetVisible(false);
668 l1->SetBounds(gfx::Rect(4, 5)); 668 l1->SetBounds(gfx::Rect(4, 5));
669 669
670 EXPECT_EQ(gfx::Point3F(), l1->cc_layer()->transform_origin()); 670 EXPECT_EQ(gfx::Point3F(), l1->cc_layer_for_testing()->transform_origin());
671 EXPECT_TRUE(l1->cc_layer()->DrawsContent()); 671 EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
672 EXPECT_TRUE(l1->cc_layer()->contents_opaque()); 672 EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
673 EXPECT_TRUE(l1->cc_layer()->force_render_surface()); 673 EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
674 EXPECT_TRUE(l1->cc_layer()->hide_layer_and_subtree()); 674 EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
675 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer()->bounds()); 675 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
676 676
677 cc::Layer* before_layer = l1->cc_layer(); 677 cc::Layer* before_layer = l1->cc_layer_for_testing();
678 678
679 bool callback1_run = false; 679 bool callback1_run = false;
680 cc::TextureMailbox mailbox(gpu::Mailbox::Generate(), 0, 0); 680 cc::TextureMailbox mailbox(gpu::Mailbox::Generate(), 0, 0);
681 l1->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create( 681 l1->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create(
682 base::Bind(ReturnMailbox, &callback1_run)), 682 base::Bind(ReturnMailbox, &callback1_run)),
683 gfx::Size(10, 10)); 683 gfx::Size(10, 10));
684 684
685 EXPECT_NE(before_layer, l1->cc_layer()); 685 EXPECT_NE(before_layer, l1->cc_layer_for_testing());
686 686
687 EXPECT_EQ(gfx::Point3F(), l1->cc_layer()->transform_origin()); 687 EXPECT_EQ(gfx::Point3F(), l1->cc_layer_for_testing()->transform_origin());
688 EXPECT_TRUE(l1->cc_layer()->DrawsContent()); 688 EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
689 EXPECT_TRUE(l1->cc_layer()->contents_opaque()); 689 EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
690 EXPECT_TRUE(l1->cc_layer()->force_render_surface()); 690 EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
691 EXPECT_TRUE(l1->cc_layer()->hide_layer_and_subtree()); 691 EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
692 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer()->bounds()); 692 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
693 EXPECT_FALSE(callback1_run); 693 EXPECT_FALSE(callback1_run);
694 694
695 bool callback2_run = false; 695 bool callback2_run = false;
696 mailbox = cc::TextureMailbox(gpu::Mailbox::Generate(), 0, 0); 696 mailbox = cc::TextureMailbox(gpu::Mailbox::Generate(), 0, 0);
697 l1->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create( 697 l1->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create(
698 base::Bind(ReturnMailbox, &callback2_run)), 698 base::Bind(ReturnMailbox, &callback2_run)),
699 gfx::Size(10, 10)); 699 gfx::Size(10, 10));
700 EXPECT_TRUE(callback1_run); 700 EXPECT_TRUE(callback1_run);
701 EXPECT_FALSE(callback2_run); 701 EXPECT_FALSE(callback2_run);
702 702
703 // Show solid color instead. 703 // Show solid color instead.
704 l1->SetShowSolidColorContent(); 704 l1->SetShowSolidColorContent();
705 EXPECT_EQ(gfx::Point3F(), l1->cc_layer()->transform_origin()); 705 EXPECT_EQ(gfx::Point3F(), l1->cc_layer_for_testing()->transform_origin());
706 EXPECT_TRUE(l1->cc_layer()->DrawsContent()); 706 EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
707 EXPECT_TRUE(l1->cc_layer()->contents_opaque()); 707 EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
708 EXPECT_TRUE(l1->cc_layer()->force_render_surface()); 708 EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
709 EXPECT_TRUE(l1->cc_layer()->hide_layer_and_subtree()); 709 EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
710 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer()->bounds()); 710 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
711 EXPECT_TRUE(callback2_run); 711 EXPECT_TRUE(callback2_run);
712 712
713 before_layer = l1->cc_layer(); 713 before_layer = l1->cc_layer_for_testing();
714 714
715 // Back to a texture, without changing the bounds of the layer or the texture. 715 // Back to a texture, without changing the bounds of the layer or the texture.
716 bool callback3_run = false; 716 bool callback3_run = false;
717 mailbox = cc::TextureMailbox(gpu::Mailbox::Generate(), 0, 0); 717 mailbox = cc::TextureMailbox(gpu::Mailbox::Generate(), 0, 0);
718 l1->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create( 718 l1->SetTextureMailbox(mailbox, cc::SingleReleaseCallback::Create(
719 base::Bind(ReturnMailbox, &callback3_run)), 719 base::Bind(ReturnMailbox, &callback3_run)),
720 gfx::Size(10, 10)); 720 gfx::Size(10, 10));
721 721
722 EXPECT_NE(before_layer, l1->cc_layer()); 722 EXPECT_NE(before_layer, l1->cc_layer_for_testing());
723 723
724 EXPECT_EQ(gfx::Point3F(), l1->cc_layer()->transform_origin()); 724 EXPECT_EQ(gfx::Point3F(), l1->cc_layer_for_testing()->transform_origin());
725 EXPECT_TRUE(l1->cc_layer()->DrawsContent()); 725 EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
726 EXPECT_TRUE(l1->cc_layer()->contents_opaque()); 726 EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
727 EXPECT_TRUE(l1->cc_layer()->force_render_surface()); 727 EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
728 EXPECT_TRUE(l1->cc_layer()->hide_layer_and_subtree()); 728 EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
729 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer()->bounds()); 729 EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
730 EXPECT_FALSE(callback3_run); 730 EXPECT_FALSE(callback3_run);
731 731
732 // Release the on |l1| mailbox to clean up the test. 732 // Release the on |l1| mailbox to clean up the test.
733 l1->SetShowSolidColorContent(); 733 l1->SetShowSolidColorContent();
734 } 734 }
735 735
736 // Various visibile/drawn assertions. 736 // Various visibile/drawn assertions.
737 TEST_F(LayerWithNullDelegateTest, Visibility) { 737 TEST_F(LayerWithNullDelegateTest, Visibility) {
738 scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED)); 738 scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED));
739 scoped_ptr<Layer> l2(new Layer(LAYER_TEXTURED)); 739 scoped_ptr<Layer> l2(new Layer(LAYER_TEXTURED));
740 scoped_ptr<Layer> l3(new Layer(LAYER_TEXTURED)); 740 scoped_ptr<Layer> l3(new Layer(LAYER_TEXTURED));
741 l1->Add(l2.get()); 741 l1->Add(l2.get());
742 l2->Add(l3.get()); 742 l2->Add(l3.get());
743 743
744 NullLayerDelegate delegate; 744 NullLayerDelegate delegate;
745 l1->set_delegate(&delegate); 745 l1->set_delegate(&delegate);
746 l2->set_delegate(&delegate); 746 l2->set_delegate(&delegate);
747 l3->set_delegate(&delegate); 747 l3->set_delegate(&delegate);
748 748
749 // Layers should initially be drawn. 749 // Layers should initially be drawn.
750 EXPECT_TRUE(l1->IsDrawn()); 750 EXPECT_TRUE(l1->IsDrawn());
751 EXPECT_TRUE(l2->IsDrawn()); 751 EXPECT_TRUE(l2->IsDrawn());
752 EXPECT_TRUE(l3->IsDrawn()); 752 EXPECT_TRUE(l3->IsDrawn());
753 EXPECT_FALSE(l1->cc_layer()->hide_layer_and_subtree()); 753 EXPECT_FALSE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
754 EXPECT_FALSE(l2->cc_layer()->hide_layer_and_subtree()); 754 EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
755 EXPECT_FALSE(l3->cc_layer()->hide_layer_and_subtree()); 755 EXPECT_FALSE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
756 756
757 compositor()->SetRootLayer(l1.get()); 757 compositor()->SetRootLayer(l1.get());
758 758
759 Draw(); 759 Draw();
760 760
761 l1->SetVisible(false); 761 l1->SetVisible(false);
762 EXPECT_FALSE(l1->IsDrawn()); 762 EXPECT_FALSE(l1->IsDrawn());
763 EXPECT_FALSE(l2->IsDrawn()); 763 EXPECT_FALSE(l2->IsDrawn());
764 EXPECT_FALSE(l3->IsDrawn()); 764 EXPECT_FALSE(l3->IsDrawn());
765 EXPECT_TRUE(l1->cc_layer()->hide_layer_and_subtree()); 765 EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
766 EXPECT_FALSE(l2->cc_layer()->hide_layer_and_subtree()); 766 EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
767 EXPECT_FALSE(l3->cc_layer()->hide_layer_and_subtree()); 767 EXPECT_FALSE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
768 768
769 l3->SetVisible(false); 769 l3->SetVisible(false);
770 EXPECT_FALSE(l1->IsDrawn()); 770 EXPECT_FALSE(l1->IsDrawn());
771 EXPECT_FALSE(l2->IsDrawn()); 771 EXPECT_FALSE(l2->IsDrawn());
772 EXPECT_FALSE(l3->IsDrawn()); 772 EXPECT_FALSE(l3->IsDrawn());
773 EXPECT_TRUE(l1->cc_layer()->hide_layer_and_subtree()); 773 EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
774 EXPECT_FALSE(l2->cc_layer()->hide_layer_and_subtree()); 774 EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
775 EXPECT_TRUE(l3->cc_layer()->hide_layer_and_subtree()); 775 EXPECT_TRUE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
776 776
777 l1->SetVisible(true); 777 l1->SetVisible(true);
778 EXPECT_TRUE(l1->IsDrawn()); 778 EXPECT_TRUE(l1->IsDrawn());
779 EXPECT_TRUE(l2->IsDrawn()); 779 EXPECT_TRUE(l2->IsDrawn());
780 EXPECT_FALSE(l3->IsDrawn()); 780 EXPECT_FALSE(l3->IsDrawn());
781 EXPECT_FALSE(l1->cc_layer()->hide_layer_and_subtree()); 781 EXPECT_FALSE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
782 EXPECT_FALSE(l2->cc_layer()->hide_layer_and_subtree()); 782 EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
783 EXPECT_TRUE(l3->cc_layer()->hide_layer_and_subtree()); 783 EXPECT_TRUE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
784 } 784 }
785 785
786 // Checks that stacking-related methods behave as advertised. 786 // Checks that stacking-related methods behave as advertised.
787 TEST_F(LayerWithNullDelegateTest, Stacking) { 787 TEST_F(LayerWithNullDelegateTest, Stacking) {
788 scoped_ptr<Layer> root(new Layer(LAYER_NOT_DRAWN)); 788 scoped_ptr<Layer> root(new Layer(LAYER_NOT_DRAWN));
789 scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED)); 789 scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED));
790 scoped_ptr<Layer> l2(new Layer(LAYER_TEXTURED)); 790 scoped_ptr<Layer> l2(new Layer(LAYER_TEXTURED));
791 scoped_ptr<Layer> l3(new Layer(LAYER_TEXTURED)); 791 scoped_ptr<Layer> l3(new Layer(LAYER_TEXTURED));
792 l1->set_name("1"); 792 l1->set_name("1");
793 l2->set_name("2"); 793 l2->set_name("2");
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
1285 l1_delegate.AddColor(SK_ColorWHITE); 1285 l1_delegate.AddColor(SK_ColorWHITE);
1286 l1->set_delegate(&l1_delegate); 1286 l1->set_delegate(&l1_delegate);
1287 1287
1288 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); 1288 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500));
1289 GetCompositor()->SetRootLayer(root.get()); 1289 GetCompositor()->SetRootLayer(root.get());
1290 root->Add(l1.get()); 1290 root->Add(l1.get());
1291 WaitForDraw(); 1291 WaitForDraw();
1292 1292
1293 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1293 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1294 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1294 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1295 gfx::Size cc_bounds_size = root->cc_layer()->bounds(); 1295 gfx::Size cc_bounds_size = root->cc_layer_for_testing()->bounds();
1296 EXPECT_EQ("200x220", cc_bounds_size.ToString()); 1296 EXPECT_EQ("200x220", cc_bounds_size.ToString());
1297 cc_bounds_size = l1->cc_layer()->bounds(); 1297 cc_bounds_size = l1->cc_layer_for_testing()->bounds();
1298 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1298 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1299 // No scale change, so no scale notification. 1299 // No scale change, so no scale notification.
1300 EXPECT_EQ(0.0f, root_delegate.device_scale_factor()); 1300 EXPECT_EQ(0.0f, root_delegate.device_scale_factor());
1301 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); 1301 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor());
1302 1302
1303 // Scale up to 2.0. Changing scale doesn't change the bounds in DIP. 1303 // Scale up to 2.0. Changing scale doesn't change the bounds in DIP.
1304 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); 1304 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500));
1305 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1305 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1306 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1306 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1307 // CC layer should still match the UI layer bounds. 1307 // CC layer should still match the UI layer bounds.
1308 cc_bounds_size = root->cc_layer()->bounds(); 1308 cc_bounds_size = root->cc_layer_for_testing()->bounds();
1309 EXPECT_EQ("200x220", cc_bounds_size.ToString()); 1309 EXPECT_EQ("200x220", cc_bounds_size.ToString());
1310 cc_bounds_size = l1->cc_layer()->bounds(); 1310 cc_bounds_size = l1->cc_layer_for_testing()->bounds();
1311 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1311 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1312 // New scale factor must have been notified. Make sure painting happens at 1312 // New scale factor must have been notified. Make sure painting happens at
1313 // right scale. 1313 // right scale.
1314 EXPECT_EQ(2.0f, root_delegate.device_scale_factor()); 1314 EXPECT_EQ(2.0f, root_delegate.device_scale_factor());
1315 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); 1315 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor());
1316 1316
1317 // Scale down back to 1.0f. 1317 // Scale down back to 1.0f.
1318 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); 1318 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500));
1319 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1319 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1320 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1320 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1321 // CC layer should still match the UI layer bounds. 1321 // CC layer should still match the UI layer bounds.
1322 cc_bounds_size = root->cc_layer()->bounds(); 1322 cc_bounds_size = root->cc_layer_for_testing()->bounds();
1323 EXPECT_EQ("200x220", cc_bounds_size.ToString()); 1323 EXPECT_EQ("200x220", cc_bounds_size.ToString());
1324 cc_bounds_size = l1->cc_layer()->bounds(); 1324 cc_bounds_size = l1->cc_layer_for_testing()->bounds();
1325 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1325 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1326 // New scale factor must have been notified. Make sure painting happens at 1326 // New scale factor must have been notified. Make sure painting happens at
1327 // right scale. 1327 // right scale.
1328 EXPECT_EQ(1.0f, root_delegate.device_scale_factor()); 1328 EXPECT_EQ(1.0f, root_delegate.device_scale_factor());
1329 EXPECT_EQ(1.0f, l1_delegate.device_scale_factor()); 1329 EXPECT_EQ(1.0f, l1_delegate.device_scale_factor());
1330 1330
1331 root_delegate.reset(); 1331 root_delegate.reset();
1332 l1_delegate.reset(); 1332 l1_delegate.reset();
1333 // Just changing the size shouldn't notify the scale change nor 1333 // Just changing the size shouldn't notify the scale change nor
1334 // trigger repaint. 1334 // trigger repaint.
(...skipping 10 matching lines...) Expand all
1345 gfx::Rect(10, 20, 140, 180))); 1345 gfx::Rect(10, 20, 140, 180)));
1346 TestLayerDelegate l1_delegate; 1346 TestLayerDelegate l1_delegate;
1347 l1_delegate.AddColor(SK_ColorWHITE); 1347 l1_delegate.AddColor(SK_ColorWHITE);
1348 l1->set_delegate(&l1_delegate); 1348 l1->set_delegate(&l1_delegate);
1349 1349
1350 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500)); 1350 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(500, 500));
1351 GetCompositor()->SetRootLayer(root.get()); 1351 GetCompositor()->SetRootLayer(root.get());
1352 1352
1353 root->Add(l1.get()); 1353 root->Add(l1.get());
1354 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1354 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1355 gfx::Size cc_bounds_size = l1->cc_layer()->bounds(); 1355 gfx::Size cc_bounds_size = l1->cc_layer_for_testing()->bounds();
1356 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1356 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1357 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor()); 1357 EXPECT_EQ(0.0f, l1_delegate.device_scale_factor());
1358 1358
1359 // Remove l1 from root and change the scale. 1359 // Remove l1 from root and change the scale.
1360 root->Remove(l1.get()); 1360 root->Remove(l1.get());
1361 EXPECT_EQ(NULL, l1->parent()); 1361 EXPECT_EQ(NULL, l1->parent());
1362 EXPECT_EQ(NULL, l1->GetCompositor()); 1362 EXPECT_EQ(NULL, l1->GetCompositor());
1363 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500)); 1363 GetCompositor()->SetScaleAndSize(2.0f, gfx::Size(500, 500));
1364 // Sanity check on root and l1. 1364 // Sanity check on root and l1.
1365 EXPECT_EQ("10,20 200x220", root->bounds().ToString()); 1365 EXPECT_EQ("10,20 200x220", root->bounds().ToString());
1366 cc_bounds_size = l1->cc_layer()->bounds(); 1366 cc_bounds_size = l1->cc_layer_for_testing()->bounds();
1367 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1367 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1368 1368
1369 root->Add(l1.get()); 1369 root->Add(l1.get());
1370 EXPECT_EQ("10,20 140x180", l1->bounds().ToString()); 1370 EXPECT_EQ("10,20 140x180", l1->bounds().ToString());
1371 cc_bounds_size = l1->cc_layer()->bounds(); 1371 cc_bounds_size = l1->cc_layer_for_testing()->bounds();
1372 EXPECT_EQ("140x180", cc_bounds_size.ToString()); 1372 EXPECT_EQ("140x180", cc_bounds_size.ToString());
1373 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor()); 1373 EXPECT_EQ(2.0f, l1_delegate.device_scale_factor());
1374 } 1374 }
1375 1375
1376 // Verifies that when changing bounds on a layer that is invisible, and then 1376 // Verifies that when changing bounds on a layer that is invisible, and then
1377 // made visible, the right thing happens: 1377 // made visible, the right thing happens:
1378 // - if just a move, then no painting should happen. 1378 // - if just a move, then no painting should happen.
1379 // - if a resize, the layer should be repainted. 1379 // - if a resize, the layer should be repainted.
1380 TEST_F(LayerWithDelegateTest, SetBoundsWhenInvisible) { 1380 TEST_F(LayerWithDelegateTest, SetBoundsWhenInvisible) {
1381 scoped_ptr<Layer> root(CreateNoTextureLayer(gfx::Rect(0, 0, 1000, 1000))); 1381 scoped_ptr<Layer> root(CreateNoTextureLayer(gfx::Rect(0, 0, 1000, 1000)));
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1433 DrawTree(root.get()); 1433 DrawTree(root.get());
1434 1434
1435 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection = 1435 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection =
1436 new cc::DelegatedFrameResourceCollection; 1436 new cc::DelegatedFrameResourceCollection;
1437 scoped_refptr<cc::DelegatedFrameProvider> frame_provider; 1437 scoped_refptr<cc::DelegatedFrameProvider> frame_provider;
1438 1438
1439 // Content matches layer size. 1439 // Content matches layer size.
1440 frame_provider = new cc::DelegatedFrameProvider( 1440 frame_provider = new cc::DelegatedFrameProvider(
1441 resource_collection.get(), MakeFrameData(gfx::Size(10, 10))); 1441 resource_collection.get(), MakeFrameData(gfx::Size(10, 10)));
1442 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1442 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1443 EXPECT_EQ(child->cc_layer()->bounds().ToString(), 1443 EXPECT_EQ(child->cc_layer_for_testing()->bounds().ToString(),
1444 gfx::Size(10, 10).ToString()); 1444 gfx::Size(10, 10).ToString());
1445 1445
1446 // Content larger than layer. 1446 // Content larger than layer.
1447 child->SetBounds(gfx::Rect(0, 0, 5, 5)); 1447 child->SetBounds(gfx::Rect(0, 0, 5, 5));
1448 EXPECT_EQ(child->cc_layer()->bounds().ToString(), 1448 EXPECT_EQ(child->cc_layer_for_testing()->bounds().ToString(),
1449 gfx::Size(5, 5).ToString()); 1449 gfx::Size(5, 5).ToString());
1450 1450
1451 // Content smaller than layer. 1451 // Content smaller than layer.
1452 child->SetBounds(gfx::Rect(0, 0, 10, 10)); 1452 child->SetBounds(gfx::Rect(0, 0, 10, 10));
1453 frame_provider = new cc::DelegatedFrameProvider( 1453 frame_provider = new cc::DelegatedFrameProvider(
1454 resource_collection.get(), MakeFrameData(gfx::Size(5, 5))); 1454 resource_collection.get(), MakeFrameData(gfx::Size(5, 5)));
1455 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(5, 5)); 1455 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(5, 5));
1456 EXPECT_EQ(child->cc_layer()->bounds().ToString(), gfx::Size(5, 5).ToString()); 1456 EXPECT_EQ(child->cc_layer_for_testing()->bounds().ToString(),
1457 gfx::Size(5, 5).ToString());
1457 1458
1458 // Hi-DPI content on low-DPI layer. 1459 // Hi-DPI content on low-DPI layer.
1459 frame_provider = new cc::DelegatedFrameProvider( 1460 frame_provider = new cc::DelegatedFrameProvider(
1460 resource_collection.get(), MakeFrameData(gfx::Size(20, 20))); 1461 resource_collection.get(), MakeFrameData(gfx::Size(20, 20)));
1461 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1462 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1462 EXPECT_EQ(child->cc_layer()->bounds().ToString(), 1463 EXPECT_EQ(child->cc_layer_for_testing()->bounds().ToString(),
1463 gfx::Size(10, 10).ToString()); 1464 gfx::Size(10, 10).ToString());
1464 1465
1465 // Hi-DPI content on hi-DPI layer. 1466 // Hi-DPI content on hi-DPI layer.
1466 compositor()->SetScaleAndSize(2.f, gfx::Size(1000, 1000)); 1467 compositor()->SetScaleAndSize(2.f, gfx::Size(1000, 1000));
1467 EXPECT_EQ(child->cc_layer()->bounds().ToString(), 1468 EXPECT_EQ(child->cc_layer_for_testing()->bounds().ToString(),
1468 gfx::Size(10, 10).ToString()); 1469 gfx::Size(10, 10).ToString());
1469 1470
1470 // Low-DPI content on hi-DPI layer. 1471 // Low-DPI content on hi-DPI layer.
1471 frame_provider = new cc::DelegatedFrameProvider( 1472 frame_provider = new cc::DelegatedFrameProvider(
1472 resource_collection.get(), MakeFrameData(gfx::Size(10, 10))); 1473 resource_collection.get(), MakeFrameData(gfx::Size(10, 10)));
1473 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1474 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1474 EXPECT_EQ(child->cc_layer()->bounds().ToString(), 1475 EXPECT_EQ(child->cc_layer_for_testing()->bounds().ToString(),
1475 gfx::Size(10, 10).ToString()); 1476 gfx::Size(10, 10).ToString());
1476 } 1477 }
1477 1478
1478 TEST_F(LayerWithDelegateTest, ExternalContent) { 1479 TEST_F(LayerWithDelegateTest, ExternalContent) {
1479 scoped_ptr<Layer> root(CreateNoTextureLayer(gfx::Rect(0, 0, 1000, 1000))); 1480 scoped_ptr<Layer> root(CreateNoTextureLayer(gfx::Rect(0, 0, 1000, 1000)));
1480 scoped_ptr<Layer> child(CreateLayer(LAYER_SOLID_COLOR)); 1481 scoped_ptr<Layer> child(CreateLayer(LAYER_SOLID_COLOR));
1481 1482
1482 child->SetBounds(gfx::Rect(0, 0, 10, 10)); 1483 child->SetBounds(gfx::Rect(0, 0, 10, 10));
1483 child->SetVisible(true); 1484 child->SetVisible(true);
1484 root->Add(child.get()); 1485 root->Add(child.get());
1485 1486
1486 // The layer is already showing solid color content, so the cc layer won't 1487 // The layer is already showing solid color content, so the cc layer won't
1487 // change. 1488 // change.
1488 scoped_refptr<cc::Layer> before = child->cc_layer(); 1489 scoped_refptr<cc::Layer> before = child->cc_layer_for_testing();
1489 child->SetShowSolidColorContent(); 1490 child->SetShowSolidColorContent();
1490 EXPECT_TRUE(child->cc_layer()); 1491 EXPECT_TRUE(child->cc_layer_for_testing());
1491 EXPECT_EQ(before.get(), child->cc_layer()); 1492 EXPECT_EQ(before.get(), child->cc_layer_for_testing());
1492 1493
1493 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection = 1494 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection =
1494 new cc::DelegatedFrameResourceCollection; 1495 new cc::DelegatedFrameResourceCollection;
1495 scoped_refptr<cc::DelegatedFrameProvider> frame_provider = 1496 scoped_refptr<cc::DelegatedFrameProvider> frame_provider =
1496 new cc::DelegatedFrameProvider(resource_collection.get(), 1497 new cc::DelegatedFrameProvider(resource_collection.get(),
1497 MakeFrameData(gfx::Size(10, 10))); 1498 MakeFrameData(gfx::Size(10, 10)));
1498 1499
1499 // Showing delegated content changes the underlying cc layer. 1500 // Showing delegated content changes the underlying cc layer.
1500 before = child->cc_layer(); 1501 before = child->cc_layer_for_testing();
1501 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1502 child->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1502 EXPECT_TRUE(child->cc_layer()); 1503 EXPECT_TRUE(child->cc_layer_for_testing());
1503 EXPECT_NE(before.get(), child->cc_layer()); 1504 EXPECT_NE(before.get(), child->cc_layer_for_testing());
1504 1505
1505 // Changing to painted content should change the underlying cc layer. 1506 // Changing to painted content should change the underlying cc layer.
1506 before = child->cc_layer(); 1507 before = child->cc_layer_for_testing();
1507 child->SetShowSolidColorContent(); 1508 child->SetShowSolidColorContent();
1508 EXPECT_TRUE(child->cc_layer()); 1509 EXPECT_TRUE(child->cc_layer_for_testing());
1509 EXPECT_NE(before.get(), child->cc_layer()); 1510 EXPECT_NE(before.get(), child->cc_layer_for_testing());
1510 } 1511 }
1511 1512
1512 // Verifies that layer filters still attached after changing implementation 1513 // Verifies that layer filters still attached after changing implementation
1513 // layer. 1514 // layer.
1514 TEST_F(LayerWithDelegateTest, LayerFiltersSurvival) { 1515 TEST_F(LayerWithDelegateTest, LayerFiltersSurvival) {
1515 scoped_ptr<Layer> layer(CreateLayer(LAYER_TEXTURED)); 1516 scoped_ptr<Layer> layer(CreateLayer(LAYER_TEXTURED));
1516 layer->SetBounds(gfx::Rect(0, 0, 10, 10)); 1517 layer->SetBounds(gfx::Rect(0, 0, 10, 10));
1517 EXPECT_TRUE(layer->cc_layer()); 1518 EXPECT_TRUE(layer->cc_layer_for_testing());
1518 EXPECT_EQ(0u, layer->cc_layer()->filters().size()); 1519 EXPECT_EQ(0u, layer->cc_layer_for_testing()->filters().size());
1519 1520
1520 layer->SetLayerGrayscale(0.5f); 1521 layer->SetLayerGrayscale(0.5f);
1521 EXPECT_EQ(layer->layer_grayscale(), 0.5f); 1522 EXPECT_EQ(layer->layer_grayscale(), 0.5f);
1522 EXPECT_EQ(1u, layer->cc_layer()->filters().size()); 1523 EXPECT_EQ(1u, layer->cc_layer_for_testing()->filters().size());
1523 1524
1524 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection = 1525 scoped_refptr<cc::DelegatedFrameResourceCollection> resource_collection =
1525 new cc::DelegatedFrameResourceCollection; 1526 new cc::DelegatedFrameResourceCollection;
1526 scoped_refptr<cc::DelegatedFrameProvider> frame_provider = 1527 scoped_refptr<cc::DelegatedFrameProvider> frame_provider =
1527 new cc::DelegatedFrameProvider(resource_collection.get(), 1528 new cc::DelegatedFrameProvider(resource_collection.get(),
1528 MakeFrameData(gfx::Size(10, 10))); 1529 MakeFrameData(gfx::Size(10, 10)));
1529 1530
1530 // Showing delegated content changes the underlying cc layer. 1531 // Showing delegated content changes the underlying cc layer.
1531 scoped_refptr<cc::Layer> before = layer->cc_layer(); 1532 scoped_refptr<cc::Layer> before = layer->cc_layer_for_testing();
1532 layer->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1533 layer->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1533 EXPECT_EQ(layer->layer_grayscale(), 0.5f); 1534 EXPECT_EQ(layer->layer_grayscale(), 0.5f);
1534 EXPECT_TRUE(layer->cc_layer()); 1535 EXPECT_TRUE(layer->cc_layer_for_testing());
1535 EXPECT_NE(before.get(), layer->cc_layer()); 1536 EXPECT_NE(before.get(), layer->cc_layer_for_testing());
1536 EXPECT_EQ(1u, layer->cc_layer()->filters().size()); 1537 EXPECT_EQ(1u, layer->cc_layer_for_testing()->filters().size());
1537 } 1538 }
1538 1539
1539 // Tests Layer::AddThreadedAnimation and Layer::RemoveThreadedAnimation. 1540 // Tests Layer::AddThreadedAnimation and Layer::RemoveThreadedAnimation.
1540 TEST_F(LayerWithRealCompositorTest, AddRemoveThreadedAnimations) { 1541 TEST_F(LayerWithRealCompositorTest, AddRemoveThreadedAnimations) {
1541 scoped_ptr<Layer> root(CreateLayer(LAYER_TEXTURED)); 1542 scoped_ptr<Layer> root(CreateLayer(LAYER_TEXTURED));
1542 scoped_ptr<Layer> l1(CreateLayer(LAYER_TEXTURED)); 1543 scoped_ptr<Layer> l1(CreateLayer(LAYER_TEXTURED));
1543 scoped_ptr<Layer> l2(CreateLayer(LAYER_TEXTURED)); 1544 scoped_ptr<Layer> l2(CreateLayer(LAYER_TEXTURED));
1544 1545
1545 l1->SetAnimator(LayerAnimator::CreateImplicitAnimator()); 1546 l1->SetAnimator(LayerAnimator::CreateImplicitAnimator());
1546 l2->SetAnimator(LayerAnimator::CreateImplicitAnimator()); 1547 l2->SetAnimator(LayerAnimator::CreateImplicitAnimator());
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1730 MakeFrameData(gfx::Size(10, 10)))); 1731 MakeFrameData(gfx::Size(10, 10))));
1731 layer->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10)); 1732 layer->SetShowDelegatedContent(frame_provider.get(), gfx::Size(10, 10));
1732 1733
1733 EXPECT_FALSE(delegate.delegated_frame_damage_called()); 1734 EXPECT_FALSE(delegate.delegated_frame_damage_called());
1734 layer->OnDelegatedFrameDamage(damage_rect); 1735 layer->OnDelegatedFrameDamage(damage_rect);
1735 EXPECT_TRUE(delegate.delegated_frame_damage_called()); 1736 EXPECT_TRUE(delegate.delegated_frame_damage_called());
1736 EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect()); 1737 EXPECT_EQ(damage_rect, delegate.delegated_frame_damage_rect());
1737 } 1738 }
1738 1739
1739 } // namespace ui 1740 } // namespace ui
OLDNEW
« ui/compositor/layer.cc ('K') | « ui/compositor/layer_animation_element.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698