| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |