Index: cc/trees/layer_tree_host_impl_unittest.cc |
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc |
index 715168928038e2a8c44ff8aeb0e309c3415009a3..4e070e2a856cc2be481a7711ae1fedf0b4c01843 100644 |
--- a/cc/trees/layer_tree_host_impl_unittest.cc |
+++ b/cc/trees/layer_tree_host_impl_unittest.cc |
@@ -945,7 +945,7 @@ TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { |
} |
// Scrolling after a pinch gesture should always be in local space. The |
- // scroll deltas do not have the page scale factor applied. |
+ // scroll deltas have the page scale factor applied. |
{ |
host_impl_->active_tree()->SetPageScaleFactorAndLimits( |
page_scale_factor, min_page_scale, max_page_scale); |
@@ -968,9 +968,8 @@ TEST_F(LayerTreeHostImplTest, ImplPinchZoom) { |
scoped_ptr<ScrollAndScaleSet> scroll_info = |
host_impl_->ProcessScrollDeltas(); |
- ExpectContains(*scroll_info.get(), |
- scroll_layer->id(), |
- scroll_delta); |
+ ExpectContains(*scroll_info.get(), scroll_layer->id(), |
+ gfx::Vector2d(0, scroll_delta.y() / page_scale_delta)); |
} |
} |
@@ -1395,7 +1394,8 @@ class LayerTreeHostImplOverridePhysicalTime : public LayerTreeHostImpl { |
0) {} |
BeginFrameArgs CurrentBeginFrameArgs() const override { |
- return CreateBeginFrameArgsForTesting(fake_current_physical_time_); |
+ return CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, |
+ fake_current_physical_time_); |
} |
void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { |
@@ -3596,7 +3596,7 @@ TEST_F(LayerTreeHostImplTest, ScrollScaledLayer) { |
host_impl_->ScrollBy(gfx::Point(), wheel_scroll_delta); |
host_impl_->ScrollEnd(); |
- // The scale should not have been applied to the scroll delta. |
+ // It should apply the scale factor to the scroll delta for the wheel event. |
scroll_info = host_impl_->ProcessScrollDeltas(); |
ExpectContains(*scroll_info.get(), |
scroll_layer->id(), |
@@ -7800,6 +7800,41 @@ TEST_F(LayerTreeHostImplTest, DidBecomeActive) { |
EXPECT_EQ(1u, raw_replica_mask_layer->did_become_active_call_count()); |
} |
+TEST_F(LayerTreeHostImplTest, WheelScrollWithPageScaleFactorOnInnerLayer) { |
+ LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
+ host_impl_->SetViewportSize(gfx::Size(50, 50)); |
+ DrawFrame(); |
+ |
+ EXPECT_EQ(scroll_layer, host_impl_->InnerViewportScrollLayer()); |
+ |
+ float min_page_scale = 1.f, max_page_scale = 4.f; |
+ float page_scale_factor = 1.f; |
+ |
+ // The scroll deltas should have the page scale factor applied. |
+ { |
+ host_impl_->active_tree()->SetPageScaleFactorAndLimits( |
+ page_scale_factor, min_page_scale, max_page_scale); |
+ host_impl_->active_tree()->SetPageScaleDelta(1.f); |
+ scroll_layer->SetScrollDelta(gfx::Vector2d()); |
+ |
+ float page_scale_delta = 2.f; |
+ host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); |
+ host_impl_->PinchGestureBegin(); |
+ host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); |
+ host_impl_->PinchGestureEnd(); |
+ host_impl_->ScrollEnd(); |
+ |
+ gfx::Vector2dF scroll_delta(0, 5); |
+ EXPECT_EQ(InputHandler::ScrollStarted, |
+ host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel)); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->TotalScrollOffset()); |
+ |
+ host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
+ host_impl_->ScrollEnd(); |
+ EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 2.5), scroll_layer->TotalScrollOffset()); |
+ } |
+} |
+ |
class LayerTreeHostImplCountingLostSurfaces : public LayerTreeHostImplTest { |
public: |
LayerTreeHostImplCountingLostSurfaces() : num_lost_surfaces_(0) {} |