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 08324260393eed876e30e0af2aa4515397cafb33..f26a64b36635ffd459bbdeaf3c06947599c17391 100644 |
--- a/cc/layer_tree_host_impl_unittest.cc |
+++ b/cc/layer_tree_host_impl_unittest.cc |
@@ -206,6 +206,12 @@ public: |
protected: |
virtual scoped_ptr<OutputSurface> createOutputSurface() { return createFakeOutputSurface(); } |
+ void drawOneFrame() { |
+ LayerTreeHostImpl::FrameData frameData; |
+ m_hostImpl->prepareToDraw(frameData); |
+ m_hostImpl->didDrawAllLayers(frameData); |
+ } |
+ |
FakeProxy m_proxy; |
DebugScopedSetImplThread m_alwaysImplThread; |
DebugScopedSetMainThreadBlocked m_alwaysMainThreadBlocked; |
@@ -1290,7 +1296,7 @@ TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) |
m_hostImpl->pinchGestureBegin(); |
m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
m_hostImpl->pinchGestureEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
// The scroll delta is not scaled because the main thread did not scale. |
scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); |
@@ -1328,7 +1334,7 @@ TEST_P(LayerTreeHostImplTest, pageScaleDeltaAppliedToRootScrollLayerOnly) |
m_hostImpl->pinchGestureBegin(); |
m_hostImpl->pinchGestureUpdate(newPageScale, gfx::Point()); |
m_hostImpl->pinchGestureEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
// The page scale delta should only be applied to the scrollable root layer. |
EXPECT_EQ(root->implTransform(), newPageScaleMatrix); |
@@ -1376,7 +1382,7 @@ TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread) |
float pageScale = 2; |
m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { |
// The scale should apply to the scroll delta. |
@@ -4549,7 +4555,7 @@ void LayerTreeHostImplTest::pinchZoomPanViewportForcesCommitRedraw(const float d |
m_hostImpl->pinchGestureBegin(); |
m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
m_hostImpl->pinchGestureEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
gfx::Transform expectedImplTransform; |
expectedImplTransform.Scale(pageScale, pageScale); |
@@ -4621,7 +4627,7 @@ void LayerTreeHostImplTest::pinchZoomPanViewportTest(const float deviceScaleFact |
m_hostImpl->pinchGestureBegin(); |
m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
m_hostImpl->pinchGestureEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
gfx::Transform expectedImplTransform; |
expectedImplTransform.Scale(pageScale, pageScale); |
@@ -4634,11 +4640,14 @@ void LayerTreeHostImplTest::pinchZoomPanViewportTest(const float deviceScaleFact |
return; |
gfx::Vector2d scrollDelta(5, 0); |
+ // TODO(wjmaclean): Fix the math here so that the expectedTranslation is |
+ // scaled instead of the scroll input. |
+ gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScaleFactor()); |
expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslation.y()); |
@@ -4652,10 +4661,11 @@ void LayerTreeHostImplTest::pinchZoomPanViewportTest(const float deviceScaleFact |
// Test scroll in y-direction also. |
scrollDelta = gfx::Vector2d(0, 5); |
+ scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
expectedTranslation = gfx::ScaleVector2d(scrollDelta, m_hostImpl->deviceScaleFactor()); |
expectedImplTransform.Translate(-expectedTranslation.x(), -expectedTranslation.y()); |
@@ -4701,7 +4711,7 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device |
m_hostImpl->pinchGestureBegin(); |
m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
m_hostImpl->pinchGestureEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
gfx::Transform expectedImplTransform; |
expectedImplTransform.Scale(pageScale, pageScale); |
@@ -4716,12 +4726,13 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device |
// Scroll document only: scrollDelta chosen to move document horizontally |
// to its max scroll offset. |
gfx::Vector2d scrollDelta(3, 0); |
+ gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
gfx::Vector2d expectedScrollDelta(scrollDelta); |
gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
// The scroll delta is not scaled because the main thread did not scale. |
scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); |
@@ -4733,10 +4744,11 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device |
// Further scrolling should move the pinchZoomViewport only. |
scrollDelta = gfx::Vector2d(2, 0); |
+ scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
gfx::Vector2d expectedPanDelta(scrollDelta); |
gfx::Vector2dF expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->deviceScaleFactor()); |
@@ -4752,11 +4764,12 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device |
// Perform same test sequence in y-direction also. |
// Document only scroll. |
scrollDelta = gfx::Vector2d(0, 4); |
+ scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
expectedScrollDelta += scrollDelta; |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
// The scroll delta is not scaled because the main thread did not scale. |
scrollInfo = m_hostImpl->processScrollDeltas(); |
@@ -4768,10 +4781,11 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollTest(const float device |
// pinchZoomViewport scroll only. |
scrollDelta = gfx::Vector2d(0, 1); |
+ scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
expectedPanDelta = scrollDelta; |
expectedTranslation = gfx::ScaleVector2d(expectedPanDelta, m_hostImpl->deviceScaleFactor()); |
@@ -4820,7 +4834,7 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollBoundaryTest(const floa |
m_hostImpl->pinchGestureBegin(); |
m_hostImpl->pinchGestureUpdate(pageScale, gfx::Point()); |
m_hostImpl->pinchGestureEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
gfx::Transform expectedImplTransform; |
expectedImplTransform.Scale(pageScale, pageScale); |
@@ -4834,13 +4848,14 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollBoundaryTest(const floa |
// Scroll document and pann zoomViewport in one scroll-delta. |
gfx::Vector2d scrollDelta(5, 0); |
+ gfx::Vector2d scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
gfx::Vector2d expectedScrollDelta(gfx::Vector2d(3, 0)); // This component gets handled by document scroll. |
gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
// The scroll delta is not scaled because the main thread did not scale. |
scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas(); |
@@ -4855,11 +4870,12 @@ void LayerTreeHostImplTest::pinchZoomPanViewportAndScrollBoundaryTest(const floa |
// Perform same test sequence in y-direction also. |
scrollDelta = gfx::Vector2d(0, 5); |
+ scrollDeltaInZoomedViewport = ToFlooredVector2d(gfx::ScaleVector2d(scrollDelta, m_hostImpl->totalPageScaleFactorForTesting())); |
expectedScrollDelta += gfx::Vector2d(0, 4); // This component gets handled by document scroll. |
EXPECT_EQ(InputHandlerClient::ScrollStarted, m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Gesture)); |
- m_hostImpl->scrollBy(gfx::Point(), scrollDelta); |
+ m_hostImpl->scrollBy(gfx::Point(), scrollDeltaInZoomedViewport); |
m_hostImpl->scrollEnd(); |
- m_hostImpl->updateRootScrollLayerImplTransform(); |
+ drawOneFrame(); |
// The scroll delta is not scaled because the main thread did not scale. |
scrollInfo = m_hostImpl->processScrollDeltas(); // This component gets handled by zoomViewport pan. |