Chromium Code Reviews| Index: cc/scrollbar_layer_unittest.cc |
| diff --git a/cc/scrollbar_layer_unittest.cc b/cc/scrollbar_layer_unittest.cc |
| index c7edef1a92b842ef74366947f51cad9d898ba7d4..f5da90aafdc415196c7a4096976ef9465fa73a6e 100644 |
| --- a/cc/scrollbar_layer_unittest.cc |
| +++ b/cc/scrollbar_layer_unittest.cc |
| @@ -5,6 +5,7 @@ |
| #include "cc/scrollbar_layer.h" |
| #include "cc/append_quads_data.h" |
| +#include "cc/layer_tree_impl.h" |
| #include "cc/prioritized_resource_manager.h" |
| #include "cc/priority_calculator.h" |
| #include "cc/resource_update_queue.h" |
| @@ -323,5 +324,69 @@ TEST_F(ScrollbarLayerTestResourceCreation, solidColorNoResourceUpload) |
| testResourceUpload(0); |
| } |
| +TEST(ScrollbarLayerTest, pinchZoomScrollbarUpdates) |
| +{ |
| + FakeImplProxy proxy; |
| + FakeLayerTreeHostImpl hostImpl(&proxy); |
| + |
| + scoped_refptr<Layer> layerTreeRoot = Layer::create(); |
| + layerTreeRoot->setScrollable(true); |
| + |
| + scoped_refptr<Layer> contentLayer = Layer::create(); |
| + scoped_ptr<WebKit::WebScrollbar> scrollbar1(FakeWebScrollbar::create()); |
| + scoped_refptr<Layer> scrollbarLayerHorizontal = |
| + ScrollbarLayer::create(scrollbar1.Pass(), |
|
enne (OOO)
2013/03/11 21:08:24
Inconsistent formatting here.
wjmaclean
2013/03/12 16:13:07
Done.
|
| + FakeScrollbarThemePainter::Create(false).PassAs<ScrollbarThemePainter>(), |
| + FakeWebScrollbarThemeGeometry::create(true), |
| + Layer::s_invalidLayerId); |
| + scoped_ptr<WebKit::WebScrollbar> scrollbar2(FakeWebScrollbar::create()); |
| + scoped_refptr<Layer> scrollbarLayerVertical = |
| + ScrollbarLayer::create(scrollbar2.Pass(), |
| + FakeScrollbarThemePainter::Create(false).PassAs<ScrollbarThemePainter>(), |
| + FakeWebScrollbarThemeGeometry::create(true), |
| + Layer::s_invalidLayerId); |
| + |
| + layerTreeRoot->addChild(contentLayer); |
| + layerTreeRoot->addChild(scrollbarLayerHorizontal); |
| + layerTreeRoot->addChild(scrollbarLayerVertical); |
| + |
| + layerTreeRoot->setScrollOffset(gfx::Vector2d(10, 20)); |
| + layerTreeRoot->setMaxScrollOffset(gfx::Vector2d(30, 50)); |
| + layerTreeRoot->setBounds(gfx::Size(100, 200)); |
| + contentLayer->setBounds(gfx::Size(100, 200)); |
| + |
| + scoped_ptr<LayerImpl> layerImplTreeRoot = |
| + TreeSynchronizer::synchronizeTrees(layerTreeRoot.get(), |
| + scoped_ptr<LayerImpl>(), hostImpl.activeTree()); |
| + TreeSynchronizer::pushProperties(layerTreeRoot.get(), |
| + layerImplTreeRoot.get()); |
| + |
| + ScrollbarLayerImpl* pinchZoomHorizontal = static_cast<ScrollbarLayerImpl*>( |
| + layerImplTreeRoot->children()[1]); |
| + ScrollbarLayerImpl* pinchZoomVertical = static_cast<ScrollbarLayerImpl*>( |
| + layerImplTreeRoot->children()[2]); |
| + |
| + // Need a root layer in the active tree in order for DidUpdateScroll() |
| + // to work. |
| + hostImpl.activeTree()->SetRootLayer(layerImplTreeRoot.Pass()); |
| + hostImpl.activeTree()->FindRootScrollLayer(); |
| + |
| + // Manually set the pinch-zoom layers: normally this is done by |
| + // LayerTreeHost. |
| + hostImpl.activeTree()->SetPinchZoomHorizontalLayerId( |
| + pinchZoomHorizontal->id()); |
| + hostImpl.activeTree()->SetPinchZoomVerticalLayerId( |
| + pinchZoomVertical->id()); |
| + |
| + hostImpl.activeTree()->DidUpdateScroll(); |
| + |
| + EXPECT_EQ(10, pinchZoomHorizontal->currentPos()); |
| + EXPECT_EQ(100, pinchZoomHorizontal->totalSize()); |
| + EXPECT_EQ(30, pinchZoomHorizontal->maximum()); |
| + EXPECT_EQ(20, pinchZoomVertical->currentPos()); |
| + EXPECT_EQ(200, pinchZoomVertical->totalSize()); |
| + EXPECT_EQ(50, pinchZoomVertical->maximum()); |
| +} |
| + |
| } // namespace |
| } // namespace cc |