| 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 fea6e22776f155044c7a1099349a5e0e1a583c61..67311b4707741bf52941cbdf9e348ea52796c53d 100644
|
| --- a/cc/layer_tree_host_impl_unittest.cc
|
| +++ b/cc/layer_tree_host_impl_unittest.cc
|
| @@ -882,6 +882,66 @@ TEST_P(LayerTreeHostImplTest, inhibitScrollAndPageScaleUpdatesWhileAnimatingPage
|
| expectContains(*scrollInfo, scrollLayer->id(), scaledTarget);
|
| }
|
|
|
| +TEST_P(LayerTreeHostImplTest, compositorFrameMetadata)
|
| +{
|
| + 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);
|
| + initializeRendererAndDrawFrame();
|
| +
|
| + {
|
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata();
|
| + EXPECT_EQ(gfx::Vector2dF(0.0f, 0.0f), metadata.root_scroll_offset);
|
| + EXPECT_EQ(1.0f, metadata.page_scale_factor);
|
| + EXPECT_EQ(gfx::SizeF(50.0f, 50.0f), metadata.viewport_size);
|
| + EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size);
|
| + EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
|
| + EXPECT_EQ(4.0f, metadata.max_page_scale_factor);
|
| + }
|
| +
|
| + // Scrolling should update metadata immediately.
|
| + EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(0, 0), InputHandlerClient::Wheel), InputHandlerClient::ScrollStarted);
|
| + m_hostImpl->scrollBy(gfx::Point(), gfx::Vector2d(0, 10));
|
| + {
|
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata();
|
| + EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
|
| + }
|
| + m_hostImpl->scrollEnd();
|
| +
|
| + {
|
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata();
|
| + EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
|
| + }
|
| +
|
| + // Page scale should update metadata correctly (shrinking only the viewport).
|
| + m_hostImpl->pinchGestureBegin();
|
| + m_hostImpl->pinchGestureUpdate(2.0f, gfx::Point(0, 0));
|
| + m_hostImpl->pinchGestureEnd();
|
| +
|
| + {
|
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata();
|
| + EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
|
| + EXPECT_EQ(2, metadata.page_scale_factor);
|
| + EXPECT_EQ(gfx::SizeF(25.0f, 25.0f), metadata.viewport_size);
|
| + EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size);
|
| + EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
|
| + EXPECT_EQ(4.0f, metadata.max_page_scale_factor);
|
| + }
|
| +
|
| + // Likewise if set from the main thread.
|
| + m_hostImpl->processScrollDeltas();
|
| + m_hostImpl->setPageScaleFactorAndLimits(4.0f, 0.5f, 4.0f);
|
| + {
|
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata();
|
| + EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
|
| + EXPECT_EQ(4.0f, metadata.page_scale_factor);
|
| + EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size);
|
| + EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size);
|
| + EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
|
| + EXPECT_EQ(4.0f, metadata.max_page_scale_factor);
|
| + }
|
| +}
|
| +
|
| class DidDrawCheckLayer : public TiledLayerImpl {
|
| public:
|
| static scoped_ptr<LayerImpl> create(LayerTreeImpl* treeImpl, int id) { return scoped_ptr<LayerImpl>(new DidDrawCheckLayer(treeImpl, id)); }
|
|
|