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