| Index: cc/layers/layer_impl_unittest.cc
|
| diff --git a/cc/layers/layer_impl_unittest.cc b/cc/layers/layer_impl_unittest.cc
|
| index bd221ce50b460106a5b3fac7eafa770077b25fa8..11c37245209791b3625e4315394df2f8cd049dfa 100644
|
| --- a/cc/layers/layer_impl_unittest.cc
|
| +++ b/cc/layers/layer_impl_unittest.cc
|
| @@ -100,6 +100,16 @@ namespace {
|
| code_to_test; \
|
| EXPECT_FALSE(host_impl.active_tree()->needs_update_draw_properties());
|
|
|
| +static gfx::Vector2dF ScrollDelta(LayerImpl* layer_impl) {
|
| + if (layer_impl->IsActive())
|
| + return gfx::Vector2dF(layer_impl->synced_scroll_offset()->Delta().x(),
|
| + layer_impl->synced_scroll_offset()->Delta().y());
|
| + else
|
| + return gfx::Vector2dF(
|
| + layer_impl->synced_scroll_offset()->PendingDelta().get().x(),
|
| + layer_impl->synced_scroll_offset()->PendingDelta().get().y());
|
| +}
|
| +
|
| TEST(LayerImplTest, VerifyLayerChangesAreTrackedProperly) {
|
| //
|
| // This test checks that layerPropertyChanged() has the correct behavior.
|
| @@ -181,9 +191,6 @@ TEST(LayerImplTest, VerifyLayerChangesAreTrackedProperly) {
|
| EXECUTE_AND_VERIFY_SUBTREE_CHANGED(
|
| root->OnFilterAnimated(FilterOperations()));
|
| EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->ScrollBy(arbitrary_vector2d));
|
| - EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->SetScrollDelta(gfx::Vector2d()));
|
| - EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->PushScrollOffsetFromMainThread(
|
| - gfx::ScrollOffset(arbitrary_vector2d)));
|
| EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->OnOpacityAnimated(arbitrary_number));
|
| EXECUTE_AND_VERIFY_SUBTREE_CHANGED(
|
| root->OnTransformAnimated(arbitrary_transform));
|
| @@ -245,11 +252,6 @@ TEST(LayerImplTest, VerifyLayerChangesAreTrackedProperly) {
|
| root->SetTransform(arbitrary_transform));
|
| EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(
|
| root->SetDoubleSided(false)); // constructor initializes it to "true".
|
| - EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(
|
| - root->SetScrollDelta(gfx::Vector2d()));
|
| - EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(
|
| - root->PushScrollOffsetFromMainThread(
|
| - gfx::ScrollOffset(arbitrary_vector2d)));
|
| EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetContentsOpaque(true));
|
| EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->SetOpacity(arbitrary_number));
|
| EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(
|
| @@ -341,15 +343,13 @@ TEST(LayerImplTest, VerifyNeedsUpdateDrawProperties) {
|
| VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetBounds(large_size));
|
| VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(arbitrary_vector2d));
|
| VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->ScrollBy(gfx::Vector2d()));
|
| - layer->SetScrollDelta(gfx::Vector2d(0, 0));
|
| - host_impl.ForcePrepareToDraw();
|
| - VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
|
| - layer->SetScrollDelta(arbitrary_vector2d));
|
| - VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(
|
| - layer->SetScrollDelta(arbitrary_vector2d));
|
| - VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->PushScrollOffsetFromMainThread(
|
| - gfx::ScrollOffset(arbitrary_vector2d)));
|
| VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->DidUpdateScrollOffset());
|
| + layer->SetCurrentScrollOffset(layer->synced_scroll_offset()->ActiveBase() +
|
| + gfx::ScrollOffset());
|
| + VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetCurrentScrollOffset(
|
| + gfx::ScrollOffset(arbitrary_vector2d.x(), arbitrary_vector2d.y())));
|
| + VERIFY_NO_NEEDS_UPDATE_DRAW_PROPERTIES(layer->SetCurrentScrollOffset(
|
| + gfx::ScrollOffset(arbitrary_vector2d.x(), arbitrary_vector2d.y())));
|
|
|
| // Unrelated functions, always set to new values, always set needs update.
|
| VERIFY_NEEDS_UPDATE_DRAW_PROPERTIES(
|
| @@ -511,6 +511,10 @@ class LayerImplScrollTest : public testing::Test {
|
| return host_impl_.active_tree()->root_layer()->children()[0].get();
|
| }
|
|
|
| + ScrollTree* scroll_tree(LayerImpl* layer_impl) {
|
| + return &layer_impl->layer_tree_impl()->property_trees()->scroll_tree;
|
| + }
|
| +
|
| LayerTreeHostImpl& host_impl() { return host_impl_; }
|
|
|
| LayerTreeImpl* tree() { return host_impl_.active_tree(); }
|
| @@ -533,45 +537,58 @@ TEST_F(LayerImplScrollTest, ScrollByWithZeroOffset) {
|
| // offset is bounded by the range [0, max scroll offset].
|
|
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->BaseScrollOffset());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta());
|
| + EXPECT_VECTOR_EQ(
|
| + gfx::Vector2dF(),
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
| + EXPECT_VECTOR_EQ(gfx::Vector2dF(), ScrollDelta(layer()));
|
|
|
| layer()->ScrollBy(gfx::Vector2dF(-100, 100));
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->CurrentScrollOffset());
|
|
|
| - EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->BaseScrollOffset());
|
| + EXPECT_VECTOR_EQ(ScrollDelta(layer()), layer()->CurrentScrollOffset());
|
| + EXPECT_VECTOR_EQ(
|
| + gfx::Vector2dF(),
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
|
|
| layer()->ScrollBy(gfx::Vector2dF(100, -100));
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->CurrentScrollOffset());
|
|
|
| - EXPECT_VECTOR_EQ(layer()->ScrollDelta(), layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->BaseScrollOffset());
|
| + EXPECT_VECTOR_EQ(ScrollDelta(layer()), layer()->CurrentScrollOffset());
|
| + EXPECT_VECTOR_EQ(
|
| + gfx::Vector2dF(),
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
| }
|
|
|
| TEST_F(LayerImplScrollTest, ScrollByWithNonZeroOffset) {
|
| gfx::ScrollOffset scroll_offset(10, 5);
|
| - layer()->PushScrollOffsetFromMainThread(scroll_offset);
|
| + scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(),
|
| + scroll_offset);
|
|
|
| EXPECT_VECTOR_EQ(scroll_offset, layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset());
|
| - EXPECT_VECTOR_EQ(gfx::Vector2dF(), layer()->ScrollDelta());
|
| + EXPECT_VECTOR_EQ(
|
| + scroll_offset,
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
| + EXPECT_VECTOR_EQ(gfx::Vector2dF(), ScrollDelta(layer()));
|
|
|
| layer()->ScrollBy(gfx::Vector2dF(-100, 100));
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 80), layer()->CurrentScrollOffset());
|
|
|
| EXPECT_VECTOR_EQ(
|
| - gfx::ScrollOffsetWithDelta(scroll_offset, layer()->ScrollDelta()),
|
| + gfx::ScrollOffsetWithDelta(scroll_offset, ScrollDelta(layer())),
|
| layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset());
|
| + EXPECT_VECTOR_EQ(
|
| + scroll_offset,
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
|
|
| layer()->ScrollBy(gfx::Vector2dF(100, -100));
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->CurrentScrollOffset());
|
|
|
| EXPECT_VECTOR_EQ(
|
| - gfx::ScrollOffsetWithDelta(scroll_offset, layer()->ScrollDelta()),
|
| + gfx::ScrollOffsetWithDelta(scroll_offset, ScrollDelta(layer())),
|
| layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset());
|
| + EXPECT_VECTOR_EQ(
|
| + scroll_offset,
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
| }
|
|
|
| TEST_F(LayerImplScrollTest, ApplySentScrollsNoListener) {
|
| @@ -579,7 +596,8 @@ TEST_F(LayerImplScrollTest, ApplySentScrollsNoListener) {
|
| gfx::Vector2dF scroll_delta(20.5f, 8.5f);
|
| gfx::Vector2d sent_scroll_delta(12, -3);
|
|
|
| - layer()->PushScrollOffsetFromMainThread(scroll_offset);
|
| + scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(),
|
| + scroll_offset);
|
| layer()->ScrollBy(sent_scroll_delta);
|
| layer()->synced_scroll_offset()->PullDeltaForMainThread();
|
| layer()->SetCurrentScrollOffset(scroll_offset +
|
| @@ -587,16 +605,19 @@ TEST_F(LayerImplScrollTest, ApplySentScrollsNoListener) {
|
|
|
| EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta),
|
| layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta());
|
| - EXPECT_VECTOR_EQ(scroll_offset, layer()->BaseScrollOffset());
|
| + EXPECT_VECTOR_EQ(scroll_delta, ScrollDelta(layer()));
|
| + EXPECT_VECTOR_EQ(
|
| + scroll_offset,
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
|
|
| layer()->synced_scroll_offset()->AbortCommit();
|
|
|
| EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta),
|
| layer()->CurrentScrollOffset());
|
| - EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta());
|
| - EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta),
|
| - layer()->BaseScrollOffset());
|
| + EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, ScrollDelta(layer()));
|
| + EXPECT_VECTOR_EQ(
|
| + gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta),
|
| + scroll_tree(layer())->GetScrollOffsetBaseForTesting(layer()->id()));
|
| }
|
|
|
| TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) {
|
| @@ -604,7 +625,8 @@ TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) {
|
| gfx::Vector2dF scroll_delta(20.5f, 8.5f);
|
|
|
| layer()->set_user_scrollable_vertical(false);
|
| - layer()->PushScrollOffsetFromMainThread(scroll_offset);
|
| + scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(),
|
| + scroll_offset);
|
| gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta);
|
|
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled);
|
| @@ -617,7 +639,8 @@ TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsCurrentScrollOffset) {
|
|
|
| host_impl().CreatePendingTree();
|
|
|
| - layer()->PushScrollOffsetFromMainThread(scroll_offset);
|
| + scroll_tree(layer())->UpdateScrollOffsetBaseForTesting(layer()->id(),
|
| + scroll_offset);
|
| gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta);
|
|
|
| EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled);
|
| @@ -627,7 +650,9 @@ TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsCurrentScrollOffset) {
|
|
|
| scoped_ptr<LayerImpl> pending_layer =
|
| LayerImpl::Create(host_impl().sync_tree(), layer()->id());
|
| - pending_layer->PushScrollOffsetFromMainThread(layer()->CurrentScrollOffset());
|
| + scroll_tree(pending_layer.get())
|
| + ->UpdateScrollOffsetBaseForTesting(pending_layer->id(),
|
| + layer()->CurrentScrollOffset());
|
|
|
| pending_layer->PushPropertiesTo(layer());
|
|
|
|
|