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..5309ba010993c81499845f76baa270df84c21c1f 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); |
|
danakj
2013/01/07 19:40:24
might as well style nit this now since we'll just
|
| + 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); |
| + 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(4, 0.5f, 4); |
| + { |
| + CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetadata(); |
| + EXPECT_EQ(gfx::Vector2dF(0, 10), metadata.root_scroll_offset); |
| + EXPECT_EQ(4, metadata.page_scale_factor); |
| + EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), 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)); } |