summaryrefslogtreecommitdiffstats
path: root/cc
diff options
context:
space:
mode:
authornduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-17 01:16:48 +0000
committernduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-17 01:16:48 +0000
commitdd228142a70d84df89806a277a8bd7f1d179b677 (patch)
treeb12807b22715ed5725ed0336a0e00bfc655aba7c /cc
parent01d579c40f511202b41f28efb62df5e2d0ac2bec (diff)
downloadchromium_src-dd228142a70d84df89806a277a8bd7f1d179b677.zip
chromium_src-dd228142a70d84df89806a277a8bd7f1d179b677.tar.gz
chromium_src-dd228142a70d84df89806a277a8bd7f1d179b677.tar.bz2
[cc] Fold more update calls into updateDrawProperties
Now that we have a clean update system, we can remove the manual calling of updateRootScrollLayerImplTransform and other similar kinds of "I'm going to do something manually in a half dozen places because I can." This removes some surface area on LTHI which helps with the LTHI->LTI push. BUG=155209 R=enne,skyostil Review URL: https://chromiumcodereview.appspot.com/11529006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@173406 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r--cc/layer_impl_unittest.cc9
-rw-r--r--cc/layer_tree_host_impl.cc45
-rw-r--r--cc/layer_tree_host_impl.h20
-rw-r--r--cc/layer_tree_host_impl_unittest.cc62
-rw-r--r--cc/layer_tree_host_unittest.cc8
-rw-r--r--cc/test/fake_layer_tree_host_impl.h6
-rw-r--r--cc/test/layer_tree_test_common.h1
7 files changed, 73 insertions, 78 deletions
diff --git a/cc/layer_impl_unittest.cc b/cc/layer_impl_unittest.cc
index 68a2fe0..8d691cf 100644
--- a/cc/layer_impl_unittest.cc
+++ b/cc/layer_impl_unittest.cc
@@ -7,6 +7,7 @@
#include "cc/single_thread_proxy.h"
#include "cc/test/fake_impl_proxy.h"
#include "cc/test/fake_layer_tree_host_impl.h"
+#include "cc/test/fake_output_surface.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/effects/SkBlurImageFilter.h"
@@ -53,13 +54,13 @@ namespace {
#define VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \
root->resetAllChangeTrackingForSubtree(); \
- hostImpl.resetNeedsUpdateDrawPropertiesForTesting(); \
+ hostImpl.forcePrepareToDraw(); \
codeToTest; \
EXPECT_TRUE(hostImpl.needsUpdateDrawProperties());
#define VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(codeToTest) \
root->resetAllChangeTrackingForSubtree(); \
- hostImpl.resetNeedsUpdateDrawPropertiesForTesting(); \
+ hostImpl.forcePrepareToDraw(); \
codeToTest; \
EXPECT_FALSE(hostImpl.needsUpdateDrawProperties());
@@ -73,6 +74,7 @@ TEST(LayerImplTest, verifyLayerChangesAreTrackedProperly)
// Create a simple LayerImpl tree:
FakeImplProxy proxy;
FakeLayerTreeHostImpl hostImpl(&proxy);
+ EXPECT_TRUE(hostImpl.initializeRenderer(createFakeOutputSurface()));
scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl.activeTree(), 1);
root->addChild(LayerImpl::create(hostImpl.activeTree(), 2));
LayerImpl* child = root->children()[0];
@@ -169,6 +171,7 @@ TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties)
{
FakeImplProxy proxy;
FakeLayerTreeHostImpl hostImpl(&proxy);
+ EXPECT_TRUE(hostImpl.initializeRenderer(createFakeOutputSurface()));
scoped_ptr<LayerImpl> root = LayerImpl::create(hostImpl.activeTree(), 1);
gfx::PointF arbitraryPointF = gfx::PointF(0.125f, 0.25f);
@@ -199,7 +202,7 @@ TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties)
VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(arbitraryVector2d));
VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->scrollBy(gfx::Vector2d()));
root->setScrollDelta(gfx::Vector2d(0, 0));
- hostImpl.resetNeedsUpdateDrawPropertiesForTesting();
+ hostImpl.forcePrepareToDraw();
VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2d));
VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollDelta(arbitraryVector2d));
VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(root->setScrollOffset(arbitraryVector2d));
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
index e7874b6..2876322 100644
--- a/cc/layer_tree_host_impl.cc
+++ b/cc/layer_tree_host_impl.cc
@@ -383,13 +383,6 @@ void LayerTreeHostImpl::trackDamageForAllSurfaces(LayerImpl* rootDrawLayer, cons
}
}
-void LayerTreeHostImpl::updateRootScrollLayerImplTransform()
-{
- if (rootScrollLayer()) {
- rootScrollLayer()->setImplTransform(implTransform());
- }
-}
-
void LayerTreeHostImpl::updateDrawProperties()
{
if (!needsUpdateDrawProperties())
@@ -401,20 +394,16 @@ void LayerTreeHostImpl::updateDrawProperties()
if (!rootLayer())
return;
- calculateRenderSurfaceLayerList(m_renderSurfaceLayerList);
-}
+ if (!m_renderer) // For maxTextureSize.
+ return;
-void LayerTreeHostImpl::calculateRenderSurfaceLayerList(LayerList& renderSurfaceLayerList)
-{
- DCHECK(renderSurfaceLayerList.empty());
- DCHECK(rootLayer());
- DCHECK(m_renderer); // For maxTextureSize.
- {
- updateRootScrollLayerImplTransform();
+ if (rootScrollLayer())
+ rootScrollLayer()->setImplTransform(implTransform());
+ {
TRACE_EVENT0("cc", "LayerTreeHostImpl::calcDrawEtc");
float pageScaleFactor = m_pinchZoomViewport.pageScaleFactor();
- LayerTreeHostCommon::calculateDrawProperties(rootLayer(), deviceViewportSize(), m_deviceScaleFactor, pageScaleFactor, rendererCapabilities().maxTextureSize, m_settings.canUseLCDText, renderSurfaceLayerList);
+ LayerTreeHostCommon::calculateDrawProperties(rootLayer(), deviceViewportSize(), m_deviceScaleFactor, pageScaleFactor, rendererCapabilities().maxTextureSize, m_settings.canUseLCDText, m_renderSurfaceLayerList);
}
}
@@ -515,6 +504,9 @@ bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
DCHECK(frame.renderPasses.empty());
updateDrawProperties();
+ if (!canDraw())
+ return false;
+
trackDamageForAllSurfaces(rootLayer(), *frame.renderSurfaceLayerList);
TRACE_EVENT1("cc", "LayerTreeHostImpl::calculateRenderPasses", "renderSurfaceLayerList.size()", static_cast<long long unsigned>(frame.renderSurfaceLayerList->size()));
@@ -777,7 +769,6 @@ void LayerTreeHostImpl::removeRenderPasses(RenderPassCuller culler, FrameData& f
bool LayerTreeHostImpl::prepareToDraw(FrameData& frame)
{
TRACE_EVENT0("cc", "LayerTreeHostImpl::prepareToDraw");
- DCHECK(canDraw());
if (m_tileManager)
m_tileManager->CheckForCompletedSetPixels();
@@ -1206,25 +1197,7 @@ void LayerTreeHostImpl::setNeedsRedraw()
bool LayerTreeHostImpl::ensureRenderSurfaceLayerList()
{
- // TODO(enne): See http://crbug.com/164949. This function should really
- // just call updateDrawProperties(), but that breaks a number of
- // impl transform tests that don't expect the tree to be updated.
- if (!rootLayer())
- return false;
- if (!m_renderer)
- return false;
-
- // We need both a non-empty render surface layer list and a root render
- // surface to be able to iterate over the visible layers.
- if (m_renderSurfaceLayerList.size() && rootLayer()->renderSurface())
- return true;
-
- // If we are called after setRootLayer() but before prepareToDraw(), we need
- // to recalculate the visible layers. This prevents being unable to scroll
- // during part of a commit.
- setNeedsUpdateDrawProperties();
updateDrawProperties();
-
return m_renderSurfaceLayerList.size();
}
diff --git a/cc/layer_tree_host_impl.h b/cc/layer_tree_host_impl.h
index 79c26c02..7e61e37 100644
--- a/cc/layer_tree_host_impl.h
+++ b/cc/layer_tree_host_impl.h
@@ -52,7 +52,7 @@ public:
// PinchZoomViewport models the bounds and offset of the viewport that is used during a pinch-zoom operation.
// It tracks the layout-space dimensions of the viewport before any applied scale, and then tracks the layout-space
// coordinates of the viewport respecting the pinch settings.
-class PinchZoomViewport {
+class CC_EXPORT PinchZoomViewport {
public:
PinchZoomViewport();
@@ -257,8 +257,6 @@ public:
void renderingStats(RenderingStats*) const;
- void updateRootScrollLayerImplTransform();
-
void sendManagedMemoryStats(
size_t memoryVisibleBytes,
size_t memoryVisibleAndNearbyBytes,
@@ -303,18 +301,11 @@ public:
template<typename RenderPassCuller>
static void removeRenderPasses(RenderPassCuller, FrameData&);
+ float totalPageScaleFactorForTesting() const { return m_pinchZoomViewport.totalPageScaleFactor(); }
+
protected:
LayerTreeHostImpl(const LayerTreeSettings&, LayerTreeHostImplClient*, Proxy*);
- void animatePageScale(base::TimeTicks monotonicTime);
- void animateScrollbars(base::TimeTicks monotonicTime);
-
- void updateDrawProperties();
-
- // Exposed for testing.
- void calculateRenderSurfaceLayerList(LayerList&);
- void resetNeedsUpdateDrawPropertiesForTesting() { m_needsUpdateDrawProperties = false; }
-
// Virtual for testing.
virtual void animateLayers(base::TimeTicks monotonicTime, base::Time wallClockTime);
@@ -325,6 +316,11 @@ protected:
Proxy* m_proxy;
private:
+ void animatePageScale(base::TimeTicks monotonicTime);
+ void animateScrollbars(base::TimeTicks monotonicTime);
+
+ void updateDrawProperties();
+
void computeDoubleTapZoomDeltas(ScrollAndScaleSet* scrollInfo);
void computePinchZoomDeltas(ScrollAndScaleSet* scrollInfo);
void makeScrollAndScaleSet(ScrollAndScaleSet* scrollInfo, gfx::Vector2d scrollOffset, float pageScale);
diff --git a/cc/layer_tree_host_impl_unittest.cc b/cc/layer_tree_host_impl_unittest.cc
index 0832426..f26a64b 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.
diff --git a/cc/layer_tree_host_unittest.cc b/cc/layer_tree_host_unittest.cc
index a5d9f4d..a4255f5 100644
--- a/cc/layer_tree_host_unittest.cc
+++ b/cc/layer_tree_host_unittest.cc
@@ -1339,8 +1339,12 @@ public:
EXPECT_EQ(gfx::Point(2, 2), child->position());
// Compute all the layer transforms for the frame.
- MockLayerTreeHostImpl::LayerList renderSurfaceLayerList;
- mockImpl->calculateRenderSurfaceLayerList(renderSurfaceLayerList);
+ LayerTreeHostImpl::FrameData frameData;
+ mockImpl->prepareToDraw(frameData);
+ mockImpl->didDrawAllLayers(frameData);
+
+ const MockLayerTreeHostImpl::LayerList& renderSurfaceLayerList =
+ *frameData.renderSurfaceLayerList;
// Both layers should be drawing into the root render surface.
ASSERT_EQ(1u, renderSurfaceLayerList.size());
diff --git a/cc/test/fake_layer_tree_host_impl.h b/cc/test/fake_layer_tree_host_impl.h
index 73ff9ed..d8f2c6b 100644
--- a/cc/test/fake_layer_tree_host_impl.h
+++ b/cc/test/fake_layer_tree_host_impl.h
@@ -16,7 +16,11 @@ class FakeLayerTreeHostImpl : public LayerTreeHostImpl {
FakeLayerTreeHostImpl(Proxy* proxy);
virtual ~FakeLayerTreeHostImpl();
- using LayerTreeHostImpl::resetNeedsUpdateDrawPropertiesForTesting;
+ void forcePrepareToDraw() {
+ LayerTreeHostImpl::FrameData frameData;
+ prepareToDraw(frameData);
+ didDrawAllLayers(frameData);
+ }
private:
FakeLayerTreeHostImplClient client_;
diff --git a/cc/test/layer_tree_test_common.h b/cc/test/layer_tree_test_common.h
index 23c6d9b..4e8dbd3 100644
--- a/cc/test/layer_tree_test_common.h
+++ b/cc/test/layer_tree_test_common.h
@@ -153,7 +153,6 @@ public:
// Make these public.
typedef std::vector<LayerImpl*> LayerList;
- using LayerTreeHostImpl::calculateRenderSurfaceLayerList;
protected:
virtual void animateLayers(base::TimeTicks monotonicTime, base::Time wallClockTime) OVERRIDE;