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)); } |