| Index: cc/layer_tree_host_impl_unittest.cc
|
| diff --git a/cc/layer_tree_host_impl_unittest.cc b/cc/layer_tree_host_impl_unittest.cc
|
| index 7eb981385a278f1561938345f4810cc9affb9c42..dd907d67bd8de2f52b47407f527578c9e3a751c9 100644
|
| --- a/cc/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/layer_tree_host_impl_unittest.cc
|
| @@ -572,10 +572,31 @@ TEST_P(LayerTreeHostImplTest, implPinchZoom)
|
| const float minPageScale = 1, maxPageScale = 4;
|
| const gfx::Transform identityScaleTransform;
|
|
|
| + // The impl-based pinch zoom should adjust the max scroll position.
|
| + {
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleDelta(1);
|
| + scrollLayer->setImplTransform(identityScaleTransform);
|
| + scrollLayer->setScrollDelta(gfx::Vector2d());
|
| +
|
| + float pageScaleDelta = 2;
|
| + m_hostImpl->pinchGestureBegin();
|
| + m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50));
|
| + m_hostImpl->pinchGestureEnd();
|
| + EXPECT_TRUE(m_didRequestRedraw);
|
| + EXPECT_TRUE(m_didRequestCommit);
|
| +
|
| + scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas();
|
| + EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta);
|
| +
|
| + EXPECT_EQ(gfx::Vector2d(75, 75), m_hostImpl->rootLayer()->maxScrollOffset());
|
| + }
|
| +
|
| // Scrolling after a pinch gesture should always be in local space. The scroll deltas do not
|
| // have the page scale factor applied.
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleDelta(1);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollDelta(gfx::Vector2d());
|
|
|
| @@ -596,6 +617,10 @@ TEST_P(LayerTreeHostImplTest, implPinchZoom)
|
|
|
| TEST_P(LayerTreeHostImplTest, pinchGesture)
|
| {
|
| + // This test is specific to the page-scale based pinch zoom.
|
| + if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
|
| + return;
|
| +
|
| setupScrollAndContentsLayers(gfx::Size(100, 100));
|
| m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50));
|
| initializeRendererAndDrawFrame();
|
| @@ -609,7 +634,7 @@ TEST_P(LayerTreeHostImplTest, pinchGesture)
|
|
|
| // Basic pinch zoom in gesture
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollDelta(gfx::Vector2d());
|
|
|
| @@ -626,7 +651,7 @@ TEST_P(LayerTreeHostImplTest, pinchGesture)
|
|
|
| // Zoom-in clamping
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollDelta(gfx::Vector2d());
|
| float pageScaleDelta = 10;
|
| @@ -641,7 +666,7 @@ TEST_P(LayerTreeHostImplTest, pinchGesture)
|
|
|
| // Zoom-out clamping
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollDelta(gfx::Vector2d());
|
| scrollLayer->setScrollOffset(gfx::Vector2d(50, 50));
|
| @@ -664,7 +689,7 @@ TEST_P(LayerTreeHostImplTest, pinchGesture)
|
|
|
| // Two-finger panning should not happen based on pinch events only
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollDelta(gfx::Vector2d());
|
| scrollLayer->setScrollOffset(gfx::Vector2d(20, 20));
|
| @@ -682,7 +707,7 @@ TEST_P(LayerTreeHostImplTest, pinchGesture)
|
|
|
| // Two-finger panning should work with interleaved scroll events
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollDelta(gfx::Vector2d());
|
| scrollLayer->setScrollOffset(gfx::Vector2d(20, 20));
|
| @@ -721,7 +746,7 @@ TEST_P(LayerTreeHostImplTest, pageScaleAnimation)
|
|
|
| // Non-anchor zoom-in
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollOffset(gfx::Vector2d(50, 50));
|
|
|
| @@ -738,7 +763,7 @@ TEST_P(LayerTreeHostImplTest, pageScaleAnimation)
|
|
|
| // Anchor zoom-out
|
| {
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, maxPageScale);
|
| scrollLayer->setImplTransform(identityScaleTransform);
|
| scrollLayer->setScrollOffset(gfx::Vector2d(50, 50));
|
|
|
| @@ -756,9 +781,13 @@ TEST_P(LayerTreeHostImplTest, pageScaleAnimation)
|
|
|
| TEST_P(LayerTreeHostImplTest, compositorFrameMetadata)
|
| {
|
| + // This test is specific to the page-scale based pinch zoom.
|
| + if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
|
| + return;
|
| +
|
| setupScrollAndContentsLayers(gfx::Size(100, 100));
|
| m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50));
|
| - m_hostImpl->setPageScaleFactorAndLimits(1.0f, 0.5f, 4.0f);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1.0f, 0.5f, 4.0f);
|
| initializeRendererAndDrawFrame();
|
|
|
| {
|
| @@ -802,7 +831,8 @@ TEST_P(LayerTreeHostImplTest, compositorFrameMetadata)
|
|
|
| // Likewise if set from the main thread.
|
| m_hostImpl->processScrollDeltas();
|
| - m_hostImpl->setPageScaleFactorAndLimits(4.0f, 0.5f, 4.0f);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(4.0f, 0.5f, 4.0f);
|
| + m_hostImpl->activeTree()->SetPageScaleDelta(1.0f);
|
| {
|
| CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata();
|
| EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
|
| @@ -1160,6 +1190,10 @@ TEST_P(LayerTreeHostImplTest, scrollBlockedByContentLayer)
|
|
|
| TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnMainThread)
|
| {
|
| + // This test is specific to the page-scale based pinch zoom.
|
| + if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
|
| + return;
|
| +
|
| gfx::Size surfaceSize(10, 10);
|
| float pageScale = 2;
|
| scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize);
|
| @@ -1176,7 +1210,7 @@ TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnMainThread)
|
| m_hostImpl->scrollEnd();
|
|
|
| // Set new page scale from main thread.
|
| - m_hostImpl->setPageScaleFactorAndLimits(pageScale, pageScale, pageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(pageScale, pageScale, pageScale);
|
|
|
| if (!m_hostImpl->settings().pageScalePinchZoomEnabled) {
|
| // The scale should apply to the scroll delta.
|
| @@ -1219,7 +1253,7 @@ TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread)
|
| m_hostImpl->activeTree()->SetRootLayer(root.Pass());
|
| m_hostImpl->activeTree()->DidBecomeActive();
|
| m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
|
| - m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, 1, pageScale);
|
| initializeRendererAndDrawFrame();
|
|
|
| gfx::Vector2d scrollDelta(0, 10);
|
| @@ -1295,6 +1329,10 @@ TEST_P(LayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly)
|
|
|
| TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread)
|
| {
|
| + // This test is specific to the page-scale based pinch zoom.
|
| + if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
|
| + return;
|
| +
|
| gfx::Size surfaceSize(10, 10);
|
| scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1);
|
| root->setBounds(surfaceSize);
|
| @@ -1318,7 +1356,7 @@ TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread)
|
| m_hostImpl->scrollEnd();
|
|
|
| float pageScale = 2;
|
| - m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale);
|
| + m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(pageScale, 1, pageScale);
|
|
|
| drawOneFrame();
|
|
|
|
|