| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <cmath> | 10 #include <cmath> |
| (...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 // Now the fling should go ahead since we've started scrolling a layer | 844 // Now the fling should go ahead since we've started scrolling a layer |
| 845 status = host_impl_->FlingScrollBegin(); | 845 status = host_impl_->FlingScrollBegin(); |
| 846 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 846 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
| 847 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, | 847 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, |
| 848 status.main_thread_scrolling_reasons); | 848 status.main_thread_scrolling_reasons); |
| 849 } | 849 } |
| 850 | 850 |
| 851 TEST_F(LayerTreeHostImplTest, NoFlingWhenScrollingOnMain) { | 851 TEST_F(LayerTreeHostImplTest, NoFlingWhenScrollingOnMain) { |
| 852 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 852 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 853 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 853 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 854 DrawFrame(); | |
| 855 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 854 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 856 | 855 |
| 857 root->set_main_thread_scrolling_reasons( | 856 root->set_main_thread_scrolling_reasons( |
| 858 MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects); | 857 MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects); |
| 859 | 858 |
| 859 SetNeedsRebuildPropertyTrees(); |
| 860 DrawFrame(); |
| 861 |
| 860 // Start scrolling a layer | 862 // Start scrolling a layer |
| 861 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( | 863 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
| 862 BeginState(gfx::Point()).get(), InputHandler::GESTURE); | 864 BeginState(gfx::Point()).get(), InputHandler::GESTURE); |
| 863 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); | 865 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); |
| 864 EXPECT_EQ(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, | 866 EXPECT_EQ(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, |
| 865 status.main_thread_scrolling_reasons); | 867 status.main_thread_scrolling_reasons); |
| 866 | 868 |
| 867 // The fling should be ignored since there's no layer being scrolled impl-side | 869 // The fling should be ignored since there's no layer being scrolled impl-side |
| 868 status = host_impl_->FlingScrollBegin(); | 870 status = host_impl_->FlingScrollBegin(); |
| 869 EXPECT_EQ(InputHandler::SCROLL_IGNORED, status.thread); | 871 EXPECT_EQ(InputHandler::SCROLL_IGNORED, status.thread); |
| 870 EXPECT_EQ(MainThreadScrollingReason::kNoScrollingLayer, | 872 EXPECT_EQ(MainThreadScrollingReason::kNoScrollingLayer, |
| 871 status.main_thread_scrolling_reasons); | 873 status.main_thread_scrolling_reasons); |
| 872 } | 874 } |
| 873 | 875 |
| 874 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) { | 876 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) { |
| 875 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 877 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
| 876 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 878 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
| 877 DrawFrame(); | |
| 878 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 879 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 879 | 880 |
| 880 root->set_main_thread_scrolling_reasons( | 881 root->set_main_thread_scrolling_reasons( |
| 881 MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects); | 882 MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects); |
| 883 SetNeedsRebuildPropertyTrees(); |
| 884 DrawFrame(); |
| 882 | 885 |
| 883 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( | 886 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
| 884 BeginState(gfx::Point()).get(), InputHandler::WHEEL); | 887 BeginState(gfx::Point()).get(), InputHandler::WHEEL); |
| 885 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); | 888 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); |
| 886 EXPECT_EQ(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, | 889 EXPECT_EQ(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, |
| 887 status.main_thread_scrolling_reasons); | 890 status.main_thread_scrolling_reasons); |
| 888 | 891 |
| 889 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), | 892 status = host_impl_->ScrollBegin(BeginState(gfx::Point()).get(), |
| 890 InputHandler::GESTURE); | 893 InputHandler::GESTURE); |
| 891 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); | 894 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); |
| 892 EXPECT_EQ(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, | 895 EXPECT_EQ(MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, |
| 893 status.main_thread_scrolling_reasons); | 896 status.main_thread_scrolling_reasons); |
| 894 } | 897 } |
| 895 | 898 |
| 896 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionBasic) { | 899 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionBasic) { |
| 897 SetupScrollAndContentsLayers(gfx::Size(200, 200)); | 900 SetupScrollAndContentsLayers(gfx::Size(200, 200)); |
| 898 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 901 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 899 | 902 |
| 900 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 903 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 901 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); | 904 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); |
| 902 | 905 |
| 906 SetNeedsRebuildPropertyTrees(); |
| 903 DrawFrame(); | 907 DrawFrame(); |
| 904 | 908 |
| 905 // All scroll types inside the non-fast scrollable region should fail. | 909 // All scroll types inside the non-fast scrollable region should fail. |
| 906 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( | 910 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
| 907 BeginState(gfx::Point(25, 25)).get(), InputHandler::WHEEL); | 911 BeginState(gfx::Point(25, 25)).get(), InputHandler::WHEEL); |
| 908 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); | 912 EXPECT_EQ(InputHandler::SCROLL_ON_MAIN_THREAD, status.thread); |
| 909 EXPECT_EQ(MainThreadScrollingReason::kNonFastScrollableRegion, | 913 EXPECT_EQ(MainThreadScrollingReason::kNonFastScrollableRegion, |
| 910 status.main_thread_scrolling_reasons); | 914 status.main_thread_scrolling_reasons); |
| 911 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25), | 915 EXPECT_FALSE(host_impl_->IsCurrentlyScrollingLayerAt(gfx::Point(25, 25), |
| 912 InputHandler::WHEEL)); | 916 InputHandler::WHEEL)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 | 954 |
| 951 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionWithOffset) { | 955 TEST_F(LayerTreeHostImplTest, NonFastScrollableRegionWithOffset) { |
| 952 SetupScrollAndContentsLayers(gfx::Size(200, 200)); | 956 SetupScrollAndContentsLayers(gfx::Size(200, 200)); |
| 953 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 957 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
| 954 | 958 |
| 955 LayerImpl* root = host_impl_->active_tree()->root_layer(); | 959 LayerImpl* root = host_impl_->active_tree()->root_layer(); |
| 956 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); | 960 root->SetNonFastScrollableRegion(gfx::Rect(0, 0, 50, 50)); |
| 957 root->SetPosition(gfx::PointF(-25.f, 0.f)); | 961 root->SetPosition(gfx::PointF(-25.f, 0.f)); |
| 958 root->SetDrawsContent(true); | 962 root->SetDrawsContent(true); |
| 959 | 963 |
| 964 SetNeedsRebuildPropertyTrees(); |
| 960 DrawFrame(); | 965 DrawFrame(); |
| 961 | 966 |
| 962 // This point would fall into the non-fast scrollable region except that we've | 967 // This point would fall into the non-fast scrollable region except that we've |
| 963 // moved the layer down by 25 pixels. | 968 // moved the layer down by 25 pixels. |
| 964 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( | 969 InputHandler::ScrollStatus status = host_impl_->ScrollBegin( |
| 965 BeginState(gfx::Point(40, 10)).get(), InputHandler::WHEEL); | 970 BeginState(gfx::Point(40, 10)).get(), InputHandler::WHEEL); |
| 966 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 971 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
| 967 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, | 972 EXPECT_EQ(MainThreadScrollingReason::kNotScrollingOnMain, |
| 968 status.main_thread_scrolling_reasons); | 973 status.main_thread_scrolling_reasons); |
| 969 | 974 |
| (...skipping 9146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10116 // There should not be any jitter measured till we hit the fixed point hits | 10121 // There should not be any jitter measured till we hit the fixed point hits |
| 10117 // threshold. | 10122 // threshold. |
| 10118 float expected_jitter = | 10123 float expected_jitter = |
| 10119 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; | 10124 (i == pending_tree->kFixedPointHitsThreshold) ? 500 : 0; |
| 10120 EXPECT_EQ(jitter, expected_jitter); | 10125 EXPECT_EQ(jitter, expected_jitter); |
| 10121 } | 10126 } |
| 10122 } | 10127 } |
| 10123 | 10128 |
| 10124 } // namespace | 10129 } // namespace |
| 10125 } // namespace cc | 10130 } // namespace cc |
| OLD | NEW |