| 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 "cc/layer.h" | 5 #include "cc/layer.h" |
| 6 | 6 |
| 7 #include "cc/keyframed_animation_curve.h" | 7 #include "cc/keyframed_animation_curve.h" |
| 8 #include "cc/layer_impl.h" | 8 #include "cc/layer_impl.h" |
| 9 #include "cc/layer_painter.h" | 9 #include "cc/layer_painter.h" |
| 10 #include "cc/layer_tree_host.h" | 10 #include "cc/layer_tree_host.h" |
| 11 #include "cc/settings.h" | |
| 12 #include "cc/single_thread_proxy.h" | 11 #include "cc/single_thread_proxy.h" |
| 13 #include "cc/thread.h" | 12 #include "cc/thread.h" |
| 14 #include "cc/test/fake_layer_tree_host_client.h" | 13 #include "cc/test/fake_layer_tree_host_client.h" |
| 15 #include "cc/test/geometry_test_utils.h" | 14 #include "cc/test/geometry_test_utils.h" |
| 16 #include "cc/test/test_common.h" | |
| 17 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 19 #include <public/WebTransformationMatrix.h> | 17 #include <public/WebTransformationMatrix.h> |
| 20 | 18 |
| 21 using namespace WebKitTests; | 19 using namespace WebKitTests; |
| 22 using WebKit::WebTransformationMatrix; | 20 using WebKit::WebTransformationMatrix; |
| 23 using ::testing::Mock; | 21 using ::testing::Mock; |
| 24 using ::testing::_; | 22 using ::testing::_; |
| 25 using ::testing::AtLeast; | 23 using ::testing::AtLeast; |
| 26 using ::testing::AnyNumber; | 24 using ::testing::AnyNumber; |
| (...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 implLayer->resetAllChangeTrackingForSubtree(); | 559 implLayer->resetAllChangeTrackingForSubtree(); |
| 562 testLayer->setNeedsDisplayRect(gfx::RectF(gfx::PointF(10, 10), gfx::SizeF(5,
5))); | 560 testLayer->setNeedsDisplayRect(gfx::RectF(gfx::PointF(10, 10), gfx::SizeF(5,
5))); |
| 563 testLayer->pushPropertiesTo(implLayer.get()); | 561 testLayer->pushPropertiesTo(implLayer.get()); |
| 564 EXPECT_FLOAT_RECT_EQ(gfx::RectF(gfx::PointF(10, 10), gfx::SizeF(5, 5)), impl
Layer->updateRect()); | 562 EXPECT_FLOAT_RECT_EQ(gfx::RectF(gfx::PointF(10, 10), gfx::SizeF(5, 5)), impl
Layer->updateRect()); |
| 565 } | 563 } |
| 566 | 564 |
| 567 class FakeLayerImplTreeHost : public LayerTreeHost { | 565 class FakeLayerImplTreeHost : public LayerTreeHost { |
| 568 public: | 566 public: |
| 569 static scoped_ptr<FakeLayerImplTreeHost> create() | 567 static scoped_ptr<FakeLayerImplTreeHost> create() |
| 570 { | 568 { |
| 571 scoped_ptr<FakeLayerImplTreeHost> host(new FakeLayerImplTreeHost); | 569 scoped_ptr<FakeLayerImplTreeHost> host(new FakeLayerImplTreeHost(LayerTr
eeSettings())); |
| 572 // The initialize call will fail, since our client doesn't provide a val
id GraphicsContext3D, but it doesn't matter in the tests that use this fake so i
gnore the return value. | 570 // The initialize call will fail, since our client doesn't provide a val
id GraphicsContext3D, but it doesn't matter in the tests that use this fake so i
gnore the return value. |
| 573 host->initialize(scoped_ptr<Thread>(NULL)); | 571 host->initialize(scoped_ptr<Thread>(NULL)); |
| 574 return host.Pass(); | 572 return host.Pass(); |
| 575 } | 573 } |
| 576 | 574 |
| 577 private: | 575 private: |
| 578 FakeLayerImplTreeHost() | 576 FakeLayerImplTreeHost(const LayerTreeSettings& settings) |
| 579 : LayerTreeHost(&m_client, LayerTreeSettings()) | 577 : LayerTreeHost(&m_client, settings) |
| 580 { | 578 { |
| 581 } | 579 } |
| 582 | 580 |
| 583 FakeLayerImplTreeHostClient m_client; | 581 FakeLayerImplTreeHostClient m_client; |
| 584 }; | 582 }; |
| 585 | 583 |
| 586 void assertLayerTreeHostMatchesForSubtree(Layer* layer, LayerTreeHost* host) | 584 void assertLayerTreeHostMatchesForSubtree(Layer* layer, LayerTreeHost* host) |
| 587 { | 585 { |
| 588 EXPECT_EQ(host, layer->layerTreeHost()); | 586 EXPECT_EQ(host, layer->layerTreeHost()); |
| 589 | 587 |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 return layer->addAnimation(animation.Pass()); | 767 return layer->addAnimation(animation.Pass()); |
| 770 } | 768 } |
| 771 | 769 |
| 772 TEST(LayerLayerTreeHostTest, shouldNotAddAnimationWithoutLayerTreeHost) | 770 TEST(LayerLayerTreeHostTest, shouldNotAddAnimationWithoutLayerTreeHost) |
| 773 { | 771 { |
| 774 // Currently, WebCore assumes that animations will be started immediately /
very soon | 772 // Currently, WebCore assumes that animations will be started immediately /
very soon |
| 775 // if a composited layer's addAnimation() returns true. However, without a l
ayerTreeHost, | 773 // if a composited layer's addAnimation() returns true. However, without a l
ayerTreeHost, |
| 776 // layers cannot actually animate yet. So, to prevent violating this WebCore
assumption, | 774 // layers cannot actually animate yet. So, to prevent violating this WebCore
assumption, |
| 777 // the animation should not be accepted if the layer doesn't already have a
layerTreeHost. | 775 // the animation should not be accepted if the layer doesn't already have a
layerTreeHost. |
| 778 | 776 |
| 779 ScopedSettings scopedSettings; | |
| 780 Settings::setAcceleratedAnimationEnabled(true); | |
| 781 | |
| 782 scoped_refptr<Layer> layer = Layer::create(); | 777 scoped_refptr<Layer> layer = Layer::create(); |
| 783 | 778 |
| 784 // Case 1: without a layerTreeHost, the animation should not be accepted. | 779 // Case 1: without a layerTreeHost, the animation should not be accepted. |
| 785 EXPECT_FALSE(addTestAnimation(layer.get())); | 780 EXPECT_FALSE(addTestAnimation(layer.get())); |
| 786 | 781 |
| 787 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); | 782 scoped_ptr<FakeLayerImplTreeHost> layerTreeHost(FakeLayerImplTreeHost::creat
e()); |
| 788 layerTreeHost->setRootLayer(layer.get()); | 783 layerTreeHost->setRootLayer(layer.get()); |
| 789 layer->setLayerTreeHost(layerTreeHost.get()); | 784 layer->setLayerTreeHost(layerTreeHost.get()); |
| 790 assertLayerTreeHostMatchesForSubtree(layer.get(), layerTreeHost.get()); | 785 assertLayerTreeHostMatchesForSubtree(layer.get(), layerTreeHost.get()); |
| 791 | 786 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 808 scoped_refptr<MockLayer> layer(new MockLayer); | 803 scoped_refptr<MockLayer> layer(new MockLayer); |
| 809 EXPECT_FALSE(layer->needsDisplay()); | 804 EXPECT_FALSE(layer->needsDisplay()); |
| 810 layer->setBounds(gfx::Size(0, 10)); | 805 layer->setBounds(gfx::Size(0, 10)); |
| 811 EXPECT_FALSE(layer->needsDisplay()); | 806 EXPECT_FALSE(layer->needsDisplay()); |
| 812 layer->setBounds(gfx::Size(10, 10)); | 807 layer->setBounds(gfx::Size(10, 10)); |
| 813 EXPECT_TRUE(layer->needsDisplay()); | 808 EXPECT_TRUE(layer->needsDisplay()); |
| 814 } | 809 } |
| 815 | 810 |
| 816 } // namespace | 811 } // namespace |
| 817 } // namespace cc | 812 } // namespace cc |
| OLD | NEW |