Chromium Code Reviews| 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..74a63fa46c96766d769a6f81ef548a668d8b9c68 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, 0.5f, 4); |
| + initializeRendererAndDrawFrame(); |
| + |
| + { |
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata(); |
| + EXPECT_EQ(gfx::Vector2dF(0, 0), metadata.root_scroll_offset); |
| + EXPECT_EQ(1, metadata.page_scale_factor); |
| + EXPECT_EQ(gfx::SizeF(50, 50), metadata.viewport_size); |
| + EXPECT_EQ(gfx::SizeF(100, 100), metadata.root_layer_size); |
| + EXPECT_EQ(0.5f, metadata.min_page_scale_factor); |
| + EXPECT_EQ(4, 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, 10), metadata.root_scroll_offset); |
| + } |
| + m_hostImpl->scrollEnd(); |
| + |
| + { |
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata(); |
| + EXPECT_EQ(gfx::Vector2dF(0, 10), metadata.root_scroll_offset); |
| + } |
| + |
| + // Page scale should update metadata correctly (shrinking only the viewport). |
| + m_hostImpl->pinchGestureBegin(); |
| + m_hostImpl->pinchGestureUpdate(2, gfx::Point(0, 0)); |
| + m_hostImpl->pinchGestureEnd(); |
| + |
| + { |
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata(); |
| + EXPECT_EQ(gfx::Vector2dF(0, 10), metadata.root_scroll_offset); |
|
danakj
2013/01/05 03:27:07
the root scroll offset is getting scaled by the pa
aelias_OOO_until_Jul13
2013/01/07 19:09:37
In the new pinch zoom mode, the scroll offset is a
|
| + EXPECT_EQ(2, metadata.page_scale_factor); |
| + EXPECT_EQ(gfx::SizeF(25, 25), metadata.viewport_size); |
| + EXPECT_EQ(gfx::SizeF(100, 100), metadata.root_layer_size); |
| + EXPECT_EQ(0.5f, metadata.min_page_scale_factor); |
| + EXPECT_EQ(4, metadata.max_page_scale_factor); |
| + } |
| + |
| + // Likewise if set from the main thread. |
| + m_hostImpl->processScrollDeltas(); |
| + m_hostImpl->setPageScaleFactorAndLimits(2, 0.5f, 4); |
|
danakj
2013/01/05 03:27:07
can you use something other than 2 here so we know
aelias_OOO_until_Jul13
2013/01/07 19:09:37
OK, changed to 4.
|
| + { |
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata(); |
| + EXPECT_EQ(gfx::Vector2dF(0, 10), metadata.root_scroll_offset); |
| + EXPECT_EQ(2, metadata.page_scale_factor); |
| + EXPECT_EQ(gfx::SizeF(25, 25), metadata.viewport_size); |
| + EXPECT_EQ(gfx::SizeF(100, 100), metadata.root_layer_size); |
| + EXPECT_EQ(0.5f, metadata.min_page_scale_factor); |
| + EXPECT_EQ(4, 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)); } |