| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include "base/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
| 8 #include "cc/layers/layer.h" | 8 #include "cc/layers/layer.h" |
| 9 #include "cc/layers/layer_impl.h" | 9 #include "cc/layers/layer_impl.h" |
| 10 #include "cc/layers/picture_layer.h" | 10 #include "cc/layers/picture_layer.h" |
| (...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 | 823 |
| 824 switch (impl->active_tree()->source_frame_number()) { | 824 switch (impl->active_tree()->source_frame_number()) { |
| 825 case 0: | 825 case 0: |
| 826 if (!impl->pending_tree()) { | 826 if (!impl->pending_tree()) { |
| 827 impl->BlockNotifyReadyToActivateForTesting(true); | 827 impl->BlockNotifyReadyToActivateForTesting(true); |
| 828 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 828 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 829 scroll_layer->ScrollBy(impl_thread_scroll1_); | 829 scroll_layer->ScrollBy(impl_thread_scroll1_); |
| 830 | 830 |
| 831 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 831 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
| 832 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll1_); | 832 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll1_); |
| 833 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 834 PostSetNeedsCommitToMainThread(); | 833 PostSetNeedsCommitToMainThread(); |
| 835 | 834 |
| 836 // CommitCompleteOnThread will trigger this function again | 835 // CommitCompleteOnThread will trigger this function again |
| 837 // and cause us to take the else clause. | 836 // and cause us to take the else clause. |
| 838 } else { | 837 } else { |
| 839 impl->BlockNotifyReadyToActivateForTesting(false); | 838 impl->BlockNotifyReadyToActivateForTesting(false); |
| 840 ASSERT_TRUE(pending_root); | 839 ASSERT_TRUE(pending_root); |
| 841 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); | 840 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); |
| 842 | 841 |
| 843 scroll_layer->ScrollBy(impl_thread_scroll2_); | 842 scroll_layer->ScrollBy(impl_thread_scroll2_); |
| 844 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 843 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
| 845 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), | 844 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), |
| 846 impl_thread_scroll1_ + impl_thread_scroll2_); | 845 impl_thread_scroll1_ + impl_thread_scroll2_); |
| 847 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), | |
| 848 impl_thread_scroll1_); | |
| 849 | 846 |
| 850 LayerImpl* pending_scroll_layer = pending_root->children()[0]; | 847 LayerImpl* pending_scroll_layer = pending_root->children()[0]; |
| 851 EXPECT_VECTOR_EQ( | 848 EXPECT_VECTOR_EQ( |
| 852 pending_scroll_layer->scroll_offset(), | 849 pending_scroll_layer->scroll_offset(), |
| 853 gfx::ScrollOffsetWithDelta( | 850 gfx::ScrollOffsetWithDelta( |
| 854 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); | 851 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); |
| 855 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), | 852 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), |
| 856 impl_thread_scroll2_); | 853 impl_thread_scroll2_); |
| 857 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 858 gfx::Vector2d()); | |
| 859 } | 854 } |
| 860 break; | 855 break; |
| 861 case 1: | 856 case 1: |
| 862 EXPECT_FALSE(impl->pending_tree()); | 857 EXPECT_FALSE(impl->pending_tree()); |
| 863 EXPECT_VECTOR_EQ( | 858 EXPECT_VECTOR_EQ( |
| 864 scroll_layer->scroll_offset(), | 859 scroll_layer->scroll_offset(), |
| 865 gfx::ScrollOffsetWithDelta( | 860 gfx::ScrollOffsetWithDelta( |
| 866 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); | 861 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); |
| 867 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); | 862 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); |
| 868 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 869 EndTest(); | 863 EndTest(); |
| 870 break; | 864 break; |
| 871 } | 865 } |
| 872 } | 866 } |
| 873 | 867 |
| 874 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 868 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
| 875 float scale, | 869 float scale, |
| 876 float top_controls_delta) override { | 870 float top_controls_delta) override { |
| 877 num_scrolls_++; | 871 num_scrolls_++; |
| 878 } | 872 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 LayerImpl* pending_root = impl->pending_tree()->root_layer(); | 950 LayerImpl* pending_root = impl->pending_tree()->root_layer(); |
| 957 LayerImpl* pending_scroll_layer = pending_root->children()[0]; | 951 LayerImpl* pending_scroll_layer = pending_root->children()[0]; |
| 958 | 952 |
| 959 ASSERT_TRUE(pending_root); | 953 ASSERT_TRUE(pending_root); |
| 960 ASSERT_TRUE(pending_scroll_layer); | 954 ASSERT_TRUE(pending_scroll_layer); |
| 961 switch (impl->pending_tree()->source_frame_number()) { | 955 switch (impl->pending_tree()->source_frame_number()) { |
| 962 case 0: | 956 case 0: |
| 963 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), | 957 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), |
| 964 initial_scroll_); | 958 initial_scroll_); |
| 965 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 959 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 966 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 967 gfx::Vector2d()); | |
| 968 EXPECT_FALSE(active_root); | 960 EXPECT_FALSE(active_root); |
| 969 break; | 961 break; |
| 970 case 1: | 962 case 1: |
| 971 // Even though the scroll happened during the commit, both layers | 963 // Even though the scroll happened during the commit, both layers |
| 972 // should have the appropriate scroll delta. | 964 // should have the appropriate scroll delta. |
| 973 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), | 965 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), |
| 974 initial_scroll_); | 966 initial_scroll_); |
| 975 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), | 967 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), |
| 976 impl_thread_scroll_); | 968 impl_thread_scroll_); |
| 977 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 978 gfx::Vector2d()); | |
| 979 ASSERT_TRUE(active_root); | 969 ASSERT_TRUE(active_root); |
| 980 EXPECT_VECTOR_EQ(active_scroll_layer->scroll_offset(), initial_scroll_); | 970 EXPECT_VECTOR_EQ(active_scroll_layer->scroll_offset(), initial_scroll_); |
| 981 EXPECT_VECTOR_EQ(active_scroll_layer->ScrollDelta(), | 971 EXPECT_VECTOR_EQ(active_scroll_layer->ScrollDelta(), |
| 982 impl_thread_scroll_); | 972 impl_thread_scroll_); |
| 983 EXPECT_VECTOR_EQ(active_scroll_layer->sent_scroll_delta(), | |
| 984 gfx::Vector2d()); | |
| 985 break; | 973 break; |
| 986 case 2: | 974 case 2: |
| 987 // On the next commit, this delta should have been sent and applied. | 975 // On the next commit, this delta should have been sent and applied. |
| 988 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), | 976 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), |
| 989 gfx::ScrollOffsetWithDelta(initial_scroll_, | 977 gfx::ScrollOffsetWithDelta(initial_scroll_, |
| 990 impl_thread_scroll_)); | 978 impl_thread_scroll_)); |
| 991 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 979 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 992 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 993 gfx::Vector2d()); | |
| 994 break; | 980 break; |
| 995 } | 981 } |
| 996 } | 982 } |
| 997 | 983 |
| 998 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 984 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
| 999 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); | 985 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); |
| 1000 | 986 |
| 1001 LayerImpl* root = impl->active_tree()->root_layer(); | 987 LayerImpl* root = impl->active_tree()->root_layer(); |
| 1002 LayerImpl* scroll_layer = root->children()[0]; | 988 LayerImpl* scroll_layer = root->children()[0]; |
| 1003 | 989 |
| 1004 switch (impl->active_tree()->source_frame_number()) { | 990 switch (impl->active_tree()->source_frame_number()) { |
| 1005 case 0: | 991 case 0: |
| 1006 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 992 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
| 1007 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 993 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 1008 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 1009 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 994 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
| 1010 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); | 995 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
| 1011 PostSetNeedsCommitToMainThread(); | 996 PostSetNeedsCommitToMainThread(); |
| 1012 break; | 997 break; |
| 1013 case 1: | 998 case 1: |
| 1014 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 999 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); |
| 1015 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); | 1000 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); |
| 1016 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 1017 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 1001 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
| 1018 EXPECT_EQ(impl_scale_, | 1002 EXPECT_EQ(impl_scale_, |
| 1019 impl->active_tree()->current_page_scale_factor()); | 1003 impl->active_tree()->current_page_scale_factor()); |
| 1020 PostSetNeedsCommitToMainThread(); | 1004 PostSetNeedsCommitToMainThread(); |
| 1021 break; | 1005 break; |
| 1022 case 2: | 1006 case 2: |
| 1023 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 1007 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
| 1024 EXPECT_EQ(impl_scale_, | 1008 EXPECT_EQ(impl_scale_, |
| 1025 impl->active_tree()->current_page_scale_factor()); | 1009 impl->active_tree()->current_page_scale_factor()); |
| 1026 EndTest(); | 1010 EndTest(); |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1246 RunTest(true, false, true); | 1230 RunTest(true, false, true); |
| 1247 } | 1231 } |
| 1248 | 1232 |
| 1249 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { | 1233 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { |
| 1250 scroll_destroy_whole_tree_ = true; | 1234 scroll_destroy_whole_tree_ = true; |
| 1251 RunTest(true, false, true); | 1235 RunTest(true, false, true); |
| 1252 } | 1236 } |
| 1253 | 1237 |
| 1254 } // namespace | 1238 } // namespace |
| 1255 } // namespace cc | 1239 } // namespace cc |
| OLD | NEW |