| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "cc/layer.h" | 7 #include "cc/layer.h" |
| 8 | 8 |
| 9 #include "cc/keyframed_animation_curve.h" | 9 #include "cc/keyframed_animation_curve.h" |
| 10 #include "cc/layer_impl.h" | 10 #include "cc/layer_impl.h" |
| 11 #include "cc/layer_painter.h" | 11 #include "cc/layer_painter.h" |
| 12 #include "cc/layer_tree_host.h" | 12 #include "cc/layer_tree_host.h" |
| 13 #include "cc/settings.h" | 13 #include "cc/settings.h" |
| 14 #include "cc/single_thread_proxy.h" | 14 #include "cc/single_thread_proxy.h" |
| 15 #include "cc/test/fake_layer_tree_host_client.h" | 15 #include "cc/test/fake_layer_tree_host_client.h" |
| 16 #include "cc/test/geometry_test_utils.h" | 16 #include "cc/test/geometry_test_utils.h" |
| 17 #include "cc/test/test_common.h" | 17 #include "cc/test/test_common.h" |
| 18 #include "cc/test/web_compositor_initializer.h" | |
| 19 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
| 20 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
| 21 #include <public/WebTransformationMatrix.h> | 20 #include <public/WebTransformationMatrix.h> |
| 22 | 21 |
| 23 using namespace cc; | 22 using namespace cc; |
| 24 using namespace WebKitTests; | 23 using namespace WebKitTests; |
| 25 using WebKit::WebTransformationMatrix; | 24 using WebKit::WebTransformationMatrix; |
| 26 using ::testing::Mock; | 25 using ::testing::Mock; |
| 27 using ::testing::_; | 26 using ::testing::_; |
| 28 using ::testing::AtLeast; | 27 using ::testing::AtLeast; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 52 | 51 |
| 53 class MockLayerPainter : public LayerPainter { | 52 class MockLayerPainter : public LayerPainter { |
| 54 public: | 53 public: |
| 55 virtual void paint(SkCanvas*, const IntRect&, FloatRect&) OVERRIDE { } | 54 virtual void paint(SkCanvas*, const IntRect&, FloatRect&) OVERRIDE { } |
| 56 }; | 55 }; |
| 57 | 56 |
| 58 | 57 |
| 59 class LayerTest : public testing::Test { | 58 class LayerTest : public testing::Test { |
| 60 public: | 59 public: |
| 61 LayerTest() | 60 LayerTest() |
| 62 : m_compositorInitializer(0) | |
| 63 { | 61 { |
| 64 } | 62 } |
| 65 | 63 |
| 66 protected: | 64 protected: |
| 67 virtual void SetUp() | 65 virtual void SetUp() |
| 68 { | 66 { |
| 69 m_layerTreeHost = scoped_ptr<MockLayerImplTreeHost>(new MockLayerImplTre
eHost); | 67 m_layerTreeHost = scoped_ptr<MockLayerImplTreeHost>(new MockLayerImplTre
eHost); |
| 70 } | 68 } |
| 71 | 69 |
| 72 virtual void TearDown() | 70 virtual void TearDown() |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 m_child1->addChild(m_grandChild2); | 126 m_child1->addChild(m_grandChild2); |
| 129 m_child2->addChild(m_grandChild3); | 127 m_child2->addChild(m_grandChild3); |
| 130 | 128 |
| 131 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); | 129 Mock::VerifyAndClearExpectations(m_layerTreeHost.get()); |
| 132 | 130 |
| 133 verifyTestTreeInitialState(); | 131 verifyTestTreeInitialState(); |
| 134 } | 132 } |
| 135 | 133 |
| 136 scoped_ptr<MockLayerImplTreeHost> m_layerTreeHost; | 134 scoped_ptr<MockLayerImplTreeHost> m_layerTreeHost; |
| 137 scoped_refptr<Layer> m_parent, m_child1, m_child2, m_child3, m_grandChild1,
m_grandChild2, m_grandChild3; | 135 scoped_refptr<Layer> m_parent, m_child1, m_child2, m_child3, m_grandChild1,
m_grandChild2, m_grandChild3; |
| 138 WebCompositorInitializer m_compositorInitializer; | |
| 139 }; | 136 }; |
| 140 | 137 |
| 141 TEST_F(LayerTest, basicCreateAndDestroy) | 138 TEST_F(LayerTest, basicCreateAndDestroy) |
| 142 { | 139 { |
| 143 scoped_refptr<Layer> testLayer = Layer::create(); | 140 scoped_refptr<Layer> testLayer = Layer::create(); |
| 144 ASSERT_TRUE(testLayer); | 141 ASSERT_TRUE(testLayer); |
| 145 | 142 |
| 146 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(0); | 143 EXPECT_CALL(*m_layerTreeHost, setNeedsCommit()).Times(0); |
| 147 testLayer->setLayerTreeHost(m_layerTreeHost.get()); | 144 testLayer->setLayerTreeHost(m_layerTreeHost.get()); |
| 148 } | 145 } |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 if (layer->maskLayer()) | 628 if (layer->maskLayer()) |
| 632 assertLayerTreeHostMatchesForSubtree(layer->maskLayer(), host); | 629 assertLayerTreeHostMatchesForSubtree(layer->maskLayer(), host); |
| 633 | 630 |
| 634 if (layer->replicaLayer()) | 631 if (layer->replicaLayer()) |
| 635 assertLayerTreeHostMatchesForSubtree(layer->replicaLayer(), host); | 632 assertLayerTreeHostMatchesForSubtree(layer->replicaLayer(), host); |
| 636 } | 633 } |
| 637 | 634 |
| 638 | 635 |
| 639 TEST(LayerLayerTreeHostTest, enteringTree) | 636 TEST(LayerLayerTreeHostTest, enteringTree) |
| 640 { | 637 { |
| 641 WebCompositorInitializer compositorInitializer(0); | |
| 642 scoped_refptr<Layer> parent = Layer::create(); | 638 scoped_refptr<Layer> parent = Layer::create(); |
| 643 scoped_refptr<Layer> child = Layer::create(); | 639 scoped_refptr<Layer> child = Layer::create(); |
| 644 scoped_refptr<Layer> mask = Layer::create(); | 640 scoped_refptr<Layer> mask = Layer::create(); |
| 645 scoped_refptr<Layer> replica = Layer::create(); | 641 scoped_refptr<Layer> replica = Layer::create(); |
| 646 scoped_refptr<Layer> replicaMask = Layer::create(); | 642 scoped_refptr<Layer> replicaMask = Layer::create(); |
| 647 | 643 |
| 648 // Set up a detached tree of layers. The host pointer should be nil for thes
e layers. | 644 // Set up a detached tree of layers. The host pointer should be nil for thes
e layers. |
| 649 parent->addChild(child); | 645 parent->addChild(child); |
| 650 child->setMaskLayer(mask.get()); | 646 child->setMaskLayer(mask.get()); |
| 651 child->setReplicaLayer(replica.get()); | 647 child->setReplicaLayer(replica.get()); |
| 652 replica->setMaskLayer(mask.get()); | 648 replica->setMaskLayer(mask.get()); |
| 653 | 649 |
| 654 assertLayerTreeHostMatchesForSubtree(parent.get(), 0); | 650 assertLayerTreeHostMatchesForSubtree(parent.get(), 0); |
| 655 | 651 |
| 656 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); | 652 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); |
| 657 // Setting the root layer should set the host pointer for all layers in the
tree. | 653 // Setting the root layer should set the host pointer for all layers in the
tree. |
| 658 layerTreeHost->setRootLayer(parent.get()); | 654 layerTreeHost->setRootLayer(parent.get()); |
| 659 | 655 |
| 660 assertLayerTreeHostMatchesForSubtree(parent.get(), layerTreeHost.get()); | 656 assertLayerTreeHostMatchesForSubtree(parent.get(), layerTreeHost.get()); |
| 661 | 657 |
| 662 // Clearing the root layer should also clear out the host pointers for all l
ayers in the tree. | 658 // Clearing the root layer should also clear out the host pointers for all l
ayers in the tree. |
| 663 layerTreeHost->setRootLayer(0); | 659 layerTreeHost->setRootLayer(0); |
| 664 | 660 |
| 665 assertLayerTreeHostMatchesForSubtree(parent.get(), 0); | 661 assertLayerTreeHostMatchesForSubtree(parent.get(), 0); |
| 666 } | 662 } |
| 667 | 663 |
| 668 TEST(LayerLayerTreeHostTest, addingLayerSubtree) | 664 TEST(LayerLayerTreeHostTest, addingLayerSubtree) |
| 669 { | 665 { |
| 670 WebCompositorInitializer compositorInitializer(0); | |
| 671 scoped_refptr<Layer> parent = Layer::create(); | 666 scoped_refptr<Layer> parent = Layer::create(); |
| 672 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); | 667 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); |
| 673 | 668 |
| 674 layerTreeHost->setRootLayer(parent.get()); | 669 layerTreeHost->setRootLayer(parent.get()); |
| 675 | 670 |
| 676 EXPECT_EQ(parent->layerTreeHost(), layerTreeHost.get()); | 671 EXPECT_EQ(parent->layerTreeHost(), layerTreeHost.get()); |
| 677 | 672 |
| 678 // Adding a subtree to a layer already associated with a host should set the
host pointer on all layers in that subtree. | 673 // Adding a subtree to a layer already associated with a host should set the
host pointer on all layers in that subtree. |
| 679 scoped_refptr<Layer> child = Layer::create(); | 674 scoped_refptr<Layer> child = Layer::create(); |
| 680 scoped_refptr<Layer> grandChild = Layer::create(); | 675 scoped_refptr<Layer> grandChild = Layer::create(); |
| 681 child->addChild(grandChild); | 676 child->addChild(grandChild); |
| 682 | 677 |
| 683 // Masks, replicas, and replica masks should pick up the new host too. | 678 // Masks, replicas, and replica masks should pick up the new host too. |
| 684 scoped_refptr<Layer> childMask = Layer::create(); | 679 scoped_refptr<Layer> childMask = Layer::create(); |
| 685 child->setMaskLayer(childMask.get()); | 680 child->setMaskLayer(childMask.get()); |
| 686 scoped_refptr<Layer> childReplica = Layer::create(); | 681 scoped_refptr<Layer> childReplica = Layer::create(); |
| 687 child->setReplicaLayer(childReplica.get()); | 682 child->setReplicaLayer(childReplica.get()); |
| 688 scoped_refptr<Layer> childReplicaMask = Layer::create(); | 683 scoped_refptr<Layer> childReplicaMask = Layer::create(); |
| 689 childReplica->setMaskLayer(childReplicaMask.get()); | 684 childReplica->setMaskLayer(childReplicaMask.get()); |
| 690 | 685 |
| 691 parent->addChild(child); | 686 parent->addChild(child); |
| 692 assertLayerTreeHostMatchesForSubtree(parent.get(), layerTreeHost.get()); | 687 assertLayerTreeHostMatchesForSubtree(parent.get(), layerTreeHost.get()); |
| 693 | 688 |
| 694 layerTreeHost->setRootLayer(0); | 689 layerTreeHost->setRootLayer(0); |
| 695 } | 690 } |
| 696 | 691 |
| 697 TEST(LayerLayerTreeHostTest, changeHost) | 692 TEST(LayerLayerTreeHostTest, changeHost) |
| 698 { | 693 { |
| 699 WebCompositorInitializer compositorInitializer(0); | |
| 700 scoped_refptr<Layer> parent = Layer::create(); | 694 scoped_refptr<Layer> parent = Layer::create(); |
| 701 scoped_refptr<Layer> child = Layer::create(); | 695 scoped_refptr<Layer> child = Layer::create(); |
| 702 scoped_refptr<Layer> mask = Layer::create(); | 696 scoped_refptr<Layer> mask = Layer::create(); |
| 703 scoped_refptr<Layer> replica = Layer::create(); | 697 scoped_refptr<Layer> replica = Layer::create(); |
| 704 scoped_refptr<Layer> replicaMask = Layer::create(); | 698 scoped_refptr<Layer> replicaMask = Layer::create(); |
| 705 | 699 |
| 706 // Same setup as the previous test. | 700 // Same setup as the previous test. |
| 707 parent->addChild(child); | 701 parent->addChild(child); |
| 708 child->setMaskLayer(mask.get()); | 702 child->setMaskLayer(mask.get()); |
| 709 child->setReplicaLayer(replica.get()); | 703 child->setReplicaLayer(replica.get()); |
| 710 replica->setMaskLayer(mask.get()); | 704 replica->setMaskLayer(mask.get()); |
| 711 | 705 |
| 712 scoped_ptr<FakeLayerImplTreeHost> firstLayerTreeHost(FakeLayerImplTreeHost::
create()); | 706 scoped_ptr<FakeLayerImplTreeHost> firstLayerTreeHost(FakeLayerImplTreeHost::
create()); |
| 713 firstLayerTreeHost->setRootLayer(parent.get()); | 707 firstLayerTreeHost->setRootLayer(parent.get()); |
| 714 | 708 |
| 715 assertLayerTreeHostMatchesForSubtree(parent.get(), firstLayerTreeHost.get())
; | 709 assertLayerTreeHostMatchesForSubtree(parent.get(), firstLayerTreeHost.get())
; |
| 716 | 710 |
| 717 // Now re-root the tree to a new host (simulating what we do on a context lo
st event). | 711 // Now re-root the tree to a new host (simulating what we do on a context lo
st event). |
| 718 // This should update the host pointers for all layers in the tree. | 712 // This should update the host pointers for all layers in the tree. |
| 719 scoped_ptr<FakeLayerImplTreeHost> secondLayerTreeHost(FakeLayerImplTreeHost:
:create()); | 713 scoped_ptr<FakeLayerImplTreeHost> secondLayerTreeHost(FakeLayerImplTreeHost:
:create()); |
| 720 secondLayerTreeHost->setRootLayer(parent.get()); | 714 secondLayerTreeHost->setRootLayer(parent.get()); |
| 721 | 715 |
| 722 assertLayerTreeHostMatchesForSubtree(parent.get(), secondLayerTreeHost.get()
); | 716 assertLayerTreeHostMatchesForSubtree(parent.get(), secondLayerTreeHost.get()
); |
| 723 | 717 |
| 724 secondLayerTreeHost->setRootLayer(0); | 718 secondLayerTreeHost->setRootLayer(0); |
| 725 } | 719 } |
| 726 | 720 |
| 727 TEST(LayerLayerTreeHostTest, changeHostInSubtree) | 721 TEST(LayerLayerTreeHostTest, changeHostInSubtree) |
| 728 { | 722 { |
| 729 WebCompositorInitializer compositorInitializer(0); | |
| 730 scoped_refptr<Layer> firstParent = Layer::create(); | 723 scoped_refptr<Layer> firstParent = Layer::create(); |
| 731 scoped_refptr<Layer> firstChild = Layer::create(); | 724 scoped_refptr<Layer> firstChild = Layer::create(); |
| 732 scoped_refptr<Layer> secondParent = Layer::create(); | 725 scoped_refptr<Layer> secondParent = Layer::create(); |
| 733 scoped_refptr<Layer> secondChild = Layer::create(); | 726 scoped_refptr<Layer> secondChild = Layer::create(); |
| 734 scoped_refptr<Layer> secondGrandChild = Layer::create(); | 727 scoped_refptr<Layer> secondGrandChild = Layer::create(); |
| 735 | 728 |
| 736 // First put all children under the first parent and set the first host. | 729 // First put all children under the first parent and set the first host. |
| 737 firstParent->addChild(firstChild); | 730 firstParent->addChild(firstChild); |
| 738 secondChild->addChild(secondGrandChild); | 731 secondChild->addChild(secondGrandChild); |
| 739 firstParent->addChild(secondChild); | 732 firstParent->addChild(secondChild); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 753 EXPECT_EQ(secondLayerTreeHost.get(), secondChild->layerTreeHost()); | 746 EXPECT_EQ(secondLayerTreeHost.get(), secondChild->layerTreeHost()); |
| 754 EXPECT_EQ(secondLayerTreeHost.get(), secondGrandChild->layerTreeHost()); | 747 EXPECT_EQ(secondLayerTreeHost.get(), secondGrandChild->layerTreeHost()); |
| 755 | 748 |
| 756 // Test over, cleanup time. | 749 // Test over, cleanup time. |
| 757 firstLayerTreeHost->setRootLayer(0); | 750 firstLayerTreeHost->setRootLayer(0); |
| 758 secondLayerTreeHost->setRootLayer(0); | 751 secondLayerTreeHost->setRootLayer(0); |
| 759 } | 752 } |
| 760 | 753 |
| 761 TEST(LayerLayerTreeHostTest, replaceMaskAndReplicaLayer) | 754 TEST(LayerLayerTreeHostTest, replaceMaskAndReplicaLayer) |
| 762 { | 755 { |
| 763 WebCompositorInitializer compositorInitializer(0); | |
| 764 scoped_refptr<Layer> parent = Layer::create(); | 756 scoped_refptr<Layer> parent = Layer::create(); |
| 765 scoped_refptr<Layer> mask = Layer::create(); | 757 scoped_refptr<Layer> mask = Layer::create(); |
| 766 scoped_refptr<Layer> replica = Layer::create(); | 758 scoped_refptr<Layer> replica = Layer::create(); |
| 767 scoped_refptr<Layer> maskChild = Layer::create(); | 759 scoped_refptr<Layer> maskChild = Layer::create(); |
| 768 scoped_refptr<Layer> replicaChild = Layer::create(); | 760 scoped_refptr<Layer> replicaChild = Layer::create(); |
| 769 scoped_refptr<Layer> maskReplacement = Layer::create(); | 761 scoped_refptr<Layer> maskReplacement = Layer::create(); |
| 770 scoped_refptr<Layer> replicaReplacement = Layer::create(); | 762 scoped_refptr<Layer> replicaReplacement = Layer::create(); |
| 771 | 763 |
| 772 parent->setMaskLayer(mask.get()); | 764 parent->setMaskLayer(mask.get()); |
| 773 parent->setReplicaLayer(replica.get()); | 765 parent->setReplicaLayer(replica.get()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 788 parent->setReplicaLayer(replicaReplacement.get()); | 780 parent->setReplicaLayer(replicaReplacement.get()); |
| 789 EXPECT_EQ(0, replica->layerTreeHost()); | 781 EXPECT_EQ(0, replica->layerTreeHost()); |
| 790 EXPECT_EQ(0, replicaChild->layerTreeHost()); | 782 EXPECT_EQ(0, replicaChild->layerTreeHost()); |
| 791 | 783 |
| 792 // Test over, cleanup time. | 784 // Test over, cleanup time. |
| 793 layerTreeHost->setRootLayer(0); | 785 layerTreeHost->setRootLayer(0); |
| 794 } | 786 } |
| 795 | 787 |
| 796 TEST(LayerLayerTreeHostTest, destroyHostWithNonNullRootLayer) | 788 TEST(LayerLayerTreeHostTest, destroyHostWithNonNullRootLayer) |
| 797 { | 789 { |
| 798 WebCompositorInitializer compositorInitializer(0); | |
| 799 scoped_refptr<Layer> root = Layer::create(); | 790 scoped_refptr<Layer> root = Layer::create(); |
| 800 scoped_refptr<Layer> child = Layer::create(); | 791 scoped_refptr<Layer> child = Layer::create(); |
| 801 root->addChild(child); | 792 root->addChild(child); |
| 802 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); | 793 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); |
| 803 layerTreeHost->setRootLayer(root); | 794 layerTreeHost->setRootLayer(root); |
| 804 } | 795 } |
| 805 | 796 |
| 806 static bool addTestAnimation(Layer* layer) | 797 static bool addTestAnimation(Layer* layer) |
| 807 { | 798 { |
| 808 scoped_ptr<KeyframedFloatAnimationCurve> curve(KeyframedFloatAnimationCurve:
:create()); | 799 scoped_ptr<KeyframedFloatAnimationCurve> curve(KeyframedFloatAnimationCurve:
:create()); |
| 809 curve->addKeyframe(FloatKeyframe::create(0, 0.3f, scoped_ptr<TimingFunction>
())); | 800 curve->addKeyframe(FloatKeyframe::create(0, 0.3f, scoped_ptr<TimingFunction>
())); |
| 810 curve->addKeyframe(FloatKeyframe::create(1, 0.7f, scoped_ptr<TimingFunction>
())); | 801 curve->addKeyframe(FloatKeyframe::create(1, 0.7f, scoped_ptr<TimingFunction>
())); |
| 811 scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<A
nimationCurve>(), 0, 0, ActiveAnimation::Opacity)); | 802 scoped_ptr<ActiveAnimation> animation(ActiveAnimation::create(curve.PassAs<A
nimationCurve>(), 0, 0, ActiveAnimation::Opacity)); |
| 812 | 803 |
| 813 return layer->addAnimation(animation.Pass()); | 804 return layer->addAnimation(animation.Pass()); |
| 814 } | 805 } |
| 815 | 806 |
| 816 TEST(LayerLayerTreeHostTest, shouldNotAddAnimationWithoutLayerTreeHost) | 807 TEST(LayerLayerTreeHostTest, shouldNotAddAnimationWithoutLayerTreeHost) |
| 817 { | 808 { |
| 818 // Currently, WebCore assumes that animations will be started immediately /
very soon | 809 // Currently, WebCore assumes that animations will be started immediately /
very soon |
| 819 // if a composited layer's addAnimation() returns true. However, without a l
ayerTreeHost, | 810 // if a composited layer's addAnimation() returns true. However, without a l
ayerTreeHost, |
| 820 // layers cannot actually animate yet. So, to prevent violating this WebCore
assumption, | 811 // layers cannot actually animate yet. So, to prevent violating this WebCore
assumption, |
| 821 // the animation should not be accepted if the layer doesn't already have a
layerTreeHost. | 812 // the animation should not be accepted if the layer doesn't already have a
layerTreeHost. |
| 822 | 813 |
| 823 ScopedSettings scopedSettings; | 814 ScopedSettings scopedSettings; |
| 824 Settings::setAcceleratedAnimationEnabled(true); | 815 Settings::setAcceleratedAnimationEnabled(true); |
| 825 | 816 |
| 826 WebCompositorInitializer compositorInitializer(0); | |
| 827 scoped_refptr<Layer> layer = Layer::create(); | 817 scoped_refptr<Layer> layer = Layer::create(); |
| 828 | 818 |
| 829 // Case 1: without a layerTreeHost, the animation should not be accepted. | 819 // Case 1: without a layerTreeHost, the animation should not be accepted. |
| 830 EXPECT_FALSE(addTestAnimation(layer.get())); | 820 EXPECT_FALSE(addTestAnimation(layer.get())); |
| 831 | 821 |
| 832 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); | 822 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); |
| 833 layerTreeHost->setRootLayer(layer.get()); | 823 layerTreeHost->setRootLayer(layer.get()); |
| 834 layer->setLayerTreeHost(layerTreeHost.get()); | 824 layer->setLayerTreeHost(layerTreeHost.get()); |
| 835 assertLayerTreeHostMatchesForSubtree(layer.get(), layerTreeHost.get()); | 825 assertLayerTreeHostMatchesForSubtree(layer.get(), layerTreeHost.get()); |
| 836 | 826 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 853 scoped_refptr<MockLayer> layer(new MockLayer); | 843 scoped_refptr<MockLayer> layer(new MockLayer); |
| 854 EXPECT_FALSE(layer->needsDisplay()); | 844 EXPECT_FALSE(layer->needsDisplay()); |
| 855 layer->setBounds(IntSize(0, 10)); | 845 layer->setBounds(IntSize(0, 10)); |
| 856 EXPECT_FALSE(layer->needsDisplay()); | 846 EXPECT_FALSE(layer->needsDisplay()); |
| 857 layer->setBounds(IntSize(10, 10)); | 847 layer->setBounds(IntSize(10, 10)); |
| 858 EXPECT_TRUE(layer->needsDisplay()); | 848 EXPECT_TRUE(layer->needsDisplay()); |
| 859 } | 849 } |
| 860 | 850 |
| 861 | 851 |
| 862 } // namespace | 852 } // namespace |
| OLD | NEW |