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 <cmath> | 7 #include <cmath> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 scoped_ptr<LayerImpl> root = | 231 scoped_ptr<LayerImpl> root = |
232 LayerImpl::Create(layer_tree_impl, 1); | 232 LayerImpl::Create(layer_tree_impl, 1); |
233 root->SetBounds(content_size); | 233 root->SetBounds(content_size); |
234 root->SetContentBounds(content_size); | 234 root->SetContentBounds(content_size); |
235 root->SetPosition(gfx::PointF()); | 235 root->SetPosition(gfx::PointF()); |
236 | 236 |
237 scoped_ptr<LayerImpl> scroll = | 237 scoped_ptr<LayerImpl> scroll = |
238 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); | 238 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); |
239 LayerImpl* scroll_layer = scroll.get(); | 239 LayerImpl* scroll_layer = scroll.get(); |
240 scroll->SetIsContainerForFixedPositionLayers(true); | 240 scroll->SetIsContainerForFixedPositionLayers(true); |
241 scroll->SetScrollOffset(gfx::Vector2d()); | 241 scroll->SetScrollOffset(gfx::ScrollOffset()); |
242 | 242 |
243 scoped_ptr<LayerImpl> clip = | 243 scoped_ptr<LayerImpl> clip = |
244 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); | 244 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); |
245 clip->SetBounds( | 245 clip->SetBounds( |
246 gfx::Size(content_size.width() / 2, content_size.height() / 2)); | 246 gfx::Size(content_size.width() / 2, content_size.height() / 2)); |
247 | 247 |
248 scoped_ptr<LayerImpl> page_scale = | 248 scoped_ptr<LayerImpl> page_scale = |
249 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); | 249 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); |
250 | 250 |
251 scroll->SetScrollClipLayer(clip->id()); | 251 scroll->SetScrollClipLayer(clip->id()); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 scroll_info = host_impl_->ProcessScrollDeltas(); | 452 scroll_info = host_impl_->ProcessScrollDeltas(); |
453 ASSERT_EQ(scroll_info->scrolls.size(), 0u); | 453 ASSERT_EQ(scroll_info->scrolls.size(), 0u); |
454 ExpectClearedScrollDeltasRecursive(root); | 454 ExpectClearedScrollDeltasRecursive(root); |
455 | 455 |
456 scroll_info = host_impl_->ProcessScrollDeltas(); | 456 scroll_info = host_impl_->ProcessScrollDeltas(); |
457 ASSERT_EQ(scroll_info->scrolls.size(), 0u); | 457 ASSERT_EQ(scroll_info->scrolls.size(), 0u); |
458 ExpectClearedScrollDeltasRecursive(root); | 458 ExpectClearedScrollDeltasRecursive(root); |
459 } | 459 } |
460 | 460 |
461 TEST_F(LayerTreeHostImplTest, ScrollDeltaRepeatedScrolls) { | 461 TEST_F(LayerTreeHostImplTest, ScrollDeltaRepeatedScrolls) { |
462 gfx::Vector2d scroll_offset(20, 30); | 462 gfx::ScrollOffset scroll_offset(20, 30); |
463 gfx::Vector2d scroll_delta(11, -15); | 463 gfx::Vector2d scroll_delta(11, -15); |
464 { | 464 { |
465 scoped_ptr<LayerImpl> root_clip = | 465 scoped_ptr<LayerImpl> root_clip = |
466 LayerImpl::Create(host_impl_->active_tree(), 2); | 466 LayerImpl::Create(host_impl_->active_tree(), 2); |
467 scoped_ptr<LayerImpl> root = | 467 scoped_ptr<LayerImpl> root = |
468 LayerImpl::Create(host_impl_->active_tree(), 1); | 468 LayerImpl::Create(host_impl_->active_tree(), 1); |
469 root_clip->SetBounds(gfx::Size(10, 10)); | 469 root_clip->SetBounds(gfx::Size(10, 10)); |
470 LayerImpl* root_layer = root.get(); | 470 LayerImpl* root_layer = root.get(); |
471 root_clip->AddChild(root.Pass()); | 471 root_clip->AddChild(root.Pass()); |
472 root_layer->SetBounds(gfx::Size(110, 110)); | 472 root_layer->SetBounds(gfx::Size(110, 110)); |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 TEST_F(LayerTreeHostImplTest, DISABLED_ScrollWithUserUnscrollableLayers) { | 828 TEST_F(LayerTreeHostImplTest, DISABLED_ScrollWithUserUnscrollableLayers) { |
829 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); | 829 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(200, 200)); |
830 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 830 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
831 | 831 |
832 gfx::Size overflow_size(400, 400); | 832 gfx::Size overflow_size(400, 400); |
833 ASSERT_EQ(1u, scroll_layer->children().size()); | 833 ASSERT_EQ(1u, scroll_layer->children().size()); |
834 LayerImpl* overflow = scroll_layer->children()[0]; | 834 LayerImpl* overflow = scroll_layer->children()[0]; |
835 overflow->SetBounds(overflow_size); | 835 overflow->SetBounds(overflow_size); |
836 overflow->SetContentBounds(overflow_size); | 836 overflow->SetContentBounds(overflow_size); |
837 overflow->SetScrollClipLayer(scroll_layer->parent()->id()); | 837 overflow->SetScrollClipLayer(scroll_layer->parent()->id()); |
838 overflow->SetScrollOffset(gfx::Vector2d()); | 838 overflow->SetScrollOffset(gfx::ScrollOffset()); |
839 overflow->SetPosition(gfx::PointF()); | 839 overflow->SetPosition(gfx::PointF()); |
840 | 840 |
841 DrawFrame(); | 841 DrawFrame(); |
842 gfx::Point scroll_position(10, 10); | 842 gfx::Point scroll_position(10, 10); |
843 | 843 |
844 EXPECT_EQ(InputHandler::ScrollStarted, | 844 EXPECT_EQ(InputHandler::ScrollStarted, |
845 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); | 845 host_impl_->ScrollBegin(scroll_position, InputHandler::Wheel)); |
846 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->TotalScrollOffset()); | 846 EXPECT_VECTOR_EQ(gfx::Vector2dF(), scroll_layer->TotalScrollOffset()); |
847 EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->TotalScrollOffset()); | 847 EXPECT_VECTOR_EQ(gfx::Vector2dF(), overflow->TotalScrollOffset()); |
848 | 848 |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
928 host_impl_->ScrollEnd(); | 928 host_impl_->ScrollEnd(); |
929 EXPECT_FALSE(did_request_animate_); | 929 EXPECT_FALSE(did_request_animate_); |
930 EXPECT_TRUE(did_request_redraw_); | 930 EXPECT_TRUE(did_request_redraw_); |
931 EXPECT_TRUE(did_request_commit_); | 931 EXPECT_TRUE(did_request_commit_); |
932 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); | 932 EXPECT_EQ(gfx::Size(50, 50), container_layer->bounds()); |
933 | 933 |
934 scoped_ptr<ScrollAndScaleSet> scroll_info = | 934 scoped_ptr<ScrollAndScaleSet> scroll_info = |
935 host_impl_->ProcessScrollDeltas(); | 935 host_impl_->ProcessScrollDeltas(); |
936 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); | 936 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); |
937 | 937 |
938 EXPECT_EQ(gfx::Vector2d(75, 75).ToString(), | 938 EXPECT_EQ(gfx::ScrollOffset(75.0, 75.0).ToString(), |
939 scroll_layer->MaxScrollOffset().ToString()); | 939 scroll_layer->MaxScrollOffset().ToString()); |
940 } | 940 } |
941 | 941 |
942 // Scrolling after a pinch gesture should always be in local space. The | 942 // Scrolling after a pinch gesture should always be in local space. The |
943 // scroll deltas do not have the page scale factor applied. | 943 // scroll deltas do not have the page scale factor applied. |
944 { | 944 { |
945 host_impl_->active_tree()->SetPageScaleFactorAndLimits( | 945 host_impl_->active_tree()->SetPageScaleFactorAndLimits( |
946 page_scale_factor, min_page_scale, max_page_scale); | 946 page_scale_factor, min_page_scale, max_page_scale); |
947 host_impl_->active_tree()->SetPageScaleDelta(1.f); | 947 host_impl_->active_tree()->SetPageScaleDelta(1.f); |
948 scroll_layer->SetScrollDelta(gfx::Vector2d()); | 948 scroll_layer->SetScrollDelta(gfx::Vector2d()); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1038 host_impl_->ProcessScrollDeltas(); | 1038 host_impl_->ProcessScrollDeltas(); |
1039 EXPECT_EQ(scroll_info->page_scale_delta, max_page_scale); | 1039 EXPECT_EQ(scroll_info->page_scale_delta, max_page_scale); |
1040 } | 1040 } |
1041 | 1041 |
1042 // Zoom-out clamping | 1042 // Zoom-out clamping |
1043 { | 1043 { |
1044 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1044 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
1045 min_page_scale, | 1045 min_page_scale, |
1046 max_page_scale); | 1046 max_page_scale); |
1047 scroll_layer->SetScrollDelta(gfx::Vector2d()); | 1047 scroll_layer->SetScrollDelta(gfx::Vector2d()); |
1048 scroll_layer->SetScrollOffset(gfx::Vector2d(50, 50)); | 1048 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
1049 | 1049 |
1050 float page_scale_delta = 0.1f; | 1050 float page_scale_delta = 0.1f; |
1051 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); | 1051 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); |
1052 host_impl_->PinchGestureBegin(); | 1052 host_impl_->PinchGestureBegin(); |
1053 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); | 1053 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point()); |
1054 host_impl_->PinchGestureEnd(); | 1054 host_impl_->PinchGestureEnd(); |
1055 host_impl_->ScrollEnd(); | 1055 host_impl_->ScrollEnd(); |
1056 | 1056 |
1057 scoped_ptr<ScrollAndScaleSet> scroll_info = | 1057 scoped_ptr<ScrollAndScaleSet> scroll_info = |
1058 host_impl_->ProcessScrollDeltas(); | 1058 host_impl_->ProcessScrollDeltas(); |
1059 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale); | 1059 EXPECT_EQ(scroll_info->page_scale_delta, min_page_scale); |
1060 | 1060 |
1061 EXPECT_TRUE(scroll_info->scrolls.empty()); | 1061 EXPECT_TRUE(scroll_info->scrolls.empty()); |
1062 } | 1062 } |
1063 | 1063 |
1064 // Two-finger panning should not happen based on pinch events only | 1064 // Two-finger panning should not happen based on pinch events only |
1065 { | 1065 { |
1066 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1066 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
1067 min_page_scale, | 1067 min_page_scale, |
1068 max_page_scale); | 1068 max_page_scale); |
1069 scroll_layer->SetScrollDelta(gfx::Vector2d()); | 1069 scroll_layer->SetScrollDelta(gfx::Vector2d()); |
1070 scroll_layer->SetScrollOffset(gfx::Vector2d(20, 20)); | 1070 scroll_layer->SetScrollOffset(gfx::ScrollOffset(20, 20)); |
1071 | 1071 |
1072 float page_scale_delta = 1.f; | 1072 float page_scale_delta = 1.f; |
1073 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture); | 1073 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture); |
1074 host_impl_->PinchGestureBegin(); | 1074 host_impl_->PinchGestureBegin(); |
1075 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); | 1075 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); |
1076 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); | 1076 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); |
1077 host_impl_->PinchGestureEnd(); | 1077 host_impl_->PinchGestureEnd(); |
1078 host_impl_->ScrollEnd(); | 1078 host_impl_->ScrollEnd(); |
1079 | 1079 |
1080 scoped_ptr<ScrollAndScaleSet> scroll_info = | 1080 scoped_ptr<ScrollAndScaleSet> scroll_info = |
1081 host_impl_->ProcessScrollDeltas(); | 1081 host_impl_->ProcessScrollDeltas(); |
1082 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); | 1082 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); |
1083 EXPECT_TRUE(scroll_info->scrolls.empty()); | 1083 EXPECT_TRUE(scroll_info->scrolls.empty()); |
1084 } | 1084 } |
1085 | 1085 |
1086 // Two-finger panning should work with interleaved scroll events | 1086 // Two-finger panning should work with interleaved scroll events |
1087 { | 1087 { |
1088 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1088 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
1089 min_page_scale, | 1089 min_page_scale, |
1090 max_page_scale); | 1090 max_page_scale); |
1091 scroll_layer->SetScrollDelta(gfx::Vector2d()); | 1091 scroll_layer->SetScrollDelta(gfx::Vector2d()); |
1092 scroll_layer->SetScrollOffset(gfx::Vector2d(20, 20)); | 1092 scroll_layer->SetScrollOffset(gfx::ScrollOffset(20, 20)); |
1093 | 1093 |
1094 float page_scale_delta = 1.f; | 1094 float page_scale_delta = 1.f; |
1095 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture); | 1095 host_impl_->ScrollBegin(gfx::Point(10, 10), InputHandler::Gesture); |
1096 host_impl_->PinchGestureBegin(); | 1096 host_impl_->PinchGestureBegin(); |
1097 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); | 1097 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(10, 10)); |
1098 host_impl_->ScrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10)); | 1098 host_impl_->ScrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10)); |
1099 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); | 1099 host_impl_->PinchGestureUpdate(page_scale_delta, gfx::Point(20, 20)); |
1100 host_impl_->PinchGestureEnd(); | 1100 host_impl_->PinchGestureEnd(); |
1101 host_impl_->ScrollEnd(); | 1101 host_impl_->ScrollEnd(); |
1102 | 1102 |
1103 scoped_ptr<ScrollAndScaleSet> scroll_info = | 1103 scoped_ptr<ScrollAndScaleSet> scroll_info = |
1104 host_impl_->ProcessScrollDeltas(); | 1104 host_impl_->ProcessScrollDeltas(); |
1105 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); | 1105 EXPECT_EQ(scroll_info->page_scale_delta, page_scale_delta); |
1106 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-10, -10)); | 1106 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-10, -10)); |
1107 } | 1107 } |
1108 | 1108 |
1109 // Two-finger panning should work when starting fully zoomed out. | 1109 // Two-finger panning should work when starting fully zoomed out. |
1110 { | 1110 { |
1111 host_impl_->active_tree()->SetPageScaleFactorAndLimits(0.5f, | 1111 host_impl_->active_tree()->SetPageScaleFactorAndLimits(0.5f, |
1112 0.5f, | 1112 0.5f, |
1113 4.f); | 1113 4.f); |
1114 scroll_layer->SetScrollDelta(gfx::Vector2d()); | 1114 scroll_layer->SetScrollDelta(gfx::Vector2d()); |
1115 scroll_layer->SetScrollOffset(gfx::Vector2d(0, 0)); | 1115 scroll_layer->SetScrollOffset(gfx::ScrollOffset(0, 0)); |
1116 | 1116 |
1117 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Gesture); | 1117 host_impl_->ScrollBegin(gfx::Point(0, 0), InputHandler::Gesture); |
1118 host_impl_->PinchGestureBegin(); | 1118 host_impl_->PinchGestureBegin(); |
1119 host_impl_->PinchGestureUpdate(2.f, gfx::Point(0, 0)); | 1119 host_impl_->PinchGestureUpdate(2.f, gfx::Point(0, 0)); |
1120 host_impl_->PinchGestureUpdate(1.f, gfx::Point(0, 0)); | 1120 host_impl_->PinchGestureUpdate(1.f, gfx::Point(0, 0)); |
1121 host_impl_->ScrollBy(gfx::Point(0, 0), gfx::Vector2d(10, 10)); | 1121 host_impl_->ScrollBy(gfx::Point(0, 0), gfx::Vector2d(10, 10)); |
1122 host_impl_->PinchGestureUpdate(1.f, gfx::Point(10, 10)); | 1122 host_impl_->PinchGestureUpdate(1.f, gfx::Point(10, 10)); |
1123 host_impl_->PinchGestureEnd(); | 1123 host_impl_->PinchGestureEnd(); |
1124 host_impl_->ScrollEnd(); | 1124 host_impl_->ScrollEnd(); |
1125 | 1125 |
(...skipping 18 matching lines...) Expand all Loading... |
1144 base::TimeDelta::FromSeconds(1); | 1144 base::TimeDelta::FromSeconds(1); |
1145 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); | 1145 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); |
1146 base::TimeTicks halfway_through_animation = start_time + duration / 2; | 1146 base::TimeTicks halfway_through_animation = start_time + duration / 2; |
1147 base::TimeTicks end_time = start_time + duration; | 1147 base::TimeTicks end_time = start_time + duration; |
1148 | 1148 |
1149 // Non-anchor zoom-in | 1149 // Non-anchor zoom-in |
1150 { | 1150 { |
1151 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1151 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
1152 min_page_scale, | 1152 min_page_scale, |
1153 max_page_scale); | 1153 max_page_scale); |
1154 scroll_layer->SetScrollOffset(gfx::Vector2d(50, 50)); | 1154 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
1155 | 1155 |
1156 did_request_redraw_ = false; | 1156 did_request_redraw_ = false; |
1157 did_request_animate_ = false; | 1157 did_request_animate_ = false; |
1158 host_impl_->StartPageScaleAnimation(gfx::Vector2d(), false, 2.f, duration); | 1158 host_impl_->StartPageScaleAnimation(gfx::Vector2d(), false, 2.f, duration); |
1159 EXPECT_FALSE(did_request_redraw_); | 1159 EXPECT_FALSE(did_request_redraw_); |
1160 EXPECT_TRUE(did_request_animate_); | 1160 EXPECT_TRUE(did_request_animate_); |
1161 | 1161 |
1162 did_request_redraw_ = false; | 1162 did_request_redraw_ = false; |
1163 did_request_animate_ = false; | 1163 did_request_animate_ = false; |
1164 host_impl_->Animate(start_time); | 1164 host_impl_->Animate(start_time); |
(...skipping 17 matching lines...) Expand all Loading... |
1182 host_impl_->ProcessScrollDeltas(); | 1182 host_impl_->ProcessScrollDeltas(); |
1183 EXPECT_EQ(scroll_info->page_scale_delta, 2); | 1183 EXPECT_EQ(scroll_info->page_scale_delta, 2); |
1184 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-50, -50)); | 1184 ExpectContains(*scroll_info, scroll_layer->id(), gfx::Vector2d(-50, -50)); |
1185 } | 1185 } |
1186 | 1186 |
1187 // Anchor zoom-out | 1187 // Anchor zoom-out |
1188 { | 1188 { |
1189 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1189 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
1190 min_page_scale, | 1190 min_page_scale, |
1191 max_page_scale); | 1191 max_page_scale); |
1192 scroll_layer->SetScrollOffset(gfx::Vector2d(50, 50)); | 1192 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
1193 | 1193 |
1194 did_request_redraw_ = false; | 1194 did_request_redraw_ = false; |
1195 did_request_animate_ = false; | 1195 did_request_animate_ = false; |
1196 host_impl_->StartPageScaleAnimation( | 1196 host_impl_->StartPageScaleAnimation( |
1197 gfx::Vector2d(25, 25), true, min_page_scale, duration); | 1197 gfx::Vector2d(25, 25), true, min_page_scale, duration); |
1198 EXPECT_FALSE(did_request_redraw_); | 1198 EXPECT_FALSE(did_request_redraw_); |
1199 EXPECT_TRUE(did_request_animate_); | 1199 EXPECT_TRUE(did_request_animate_); |
1200 | 1200 |
1201 did_request_redraw_ = false; | 1201 did_request_redraw_ = false; |
1202 did_request_animate_ = false; | 1202 did_request_animate_ = false; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1234 base::TimeDelta::FromSeconds(1); | 1234 base::TimeDelta::FromSeconds(1); |
1235 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); | 1235 base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); |
1236 base::TimeTicks halfway_through_animation = start_time + duration / 2; | 1236 base::TimeTicks halfway_through_animation = start_time + duration / 2; |
1237 base::TimeTicks end_time = start_time + duration; | 1237 base::TimeTicks end_time = start_time + duration; |
1238 | 1238 |
1239 // Anchor zoom with unchanged page scale should not change scroll or scale. | 1239 // Anchor zoom with unchanged page scale should not change scroll or scale. |
1240 { | 1240 { |
1241 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, | 1241 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, |
1242 min_page_scale, | 1242 min_page_scale, |
1243 max_page_scale); | 1243 max_page_scale); |
1244 scroll_layer->SetScrollOffset(gfx::Vector2d(50, 50)); | 1244 scroll_layer->SetScrollOffset(gfx::ScrollOffset(50, 50)); |
1245 | 1245 |
1246 host_impl_->StartPageScaleAnimation(gfx::Vector2d(), true, 1.f, duration); | 1246 host_impl_->StartPageScaleAnimation(gfx::Vector2d(), true, 1.f, duration); |
1247 host_impl_->Animate(start_time); | 1247 host_impl_->Animate(start_time); |
1248 host_impl_->Animate(halfway_through_animation); | 1248 host_impl_->Animate(halfway_through_animation); |
1249 EXPECT_TRUE(did_request_redraw_); | 1249 EXPECT_TRUE(did_request_redraw_); |
1250 host_impl_->Animate(end_time); | 1250 host_impl_->Animate(end_time); |
1251 EXPECT_TRUE(did_request_commit_); | 1251 EXPECT_TRUE(did_request_commit_); |
1252 | 1252 |
1253 scoped_ptr<ScrollAndScaleSet> scroll_info = | 1253 scoped_ptr<ScrollAndScaleSet> scroll_info = |
1254 host_impl_->ProcessScrollDeltas(); | 1254 host_impl_->ProcessScrollDeltas(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1298 host_impl_->InitializeRenderer(CreateOutputSurface()); \ | 1298 host_impl_->InitializeRenderer(CreateOutputSurface()); \ |
1299 host_impl_->SetViewportSize(viewport_size); \ | 1299 host_impl_->SetViewportSize(viewport_size); \ |
1300 \ | 1300 \ |
1301 scoped_ptr<LayerImpl> root = \ | 1301 scoped_ptr<LayerImpl> root = \ |
1302 LayerImpl::Create(host_impl_->active_tree(), 1); \ | 1302 LayerImpl::Create(host_impl_->active_tree(), 1); \ |
1303 root->SetBounds(viewport_size); \ | 1303 root->SetBounds(viewport_size); \ |
1304 \ | 1304 \ |
1305 scoped_ptr<LayerImpl> scroll = \ | 1305 scoped_ptr<LayerImpl> scroll = \ |
1306 LayerImpl::Create(host_impl_->active_tree(), 2); \ | 1306 LayerImpl::Create(host_impl_->active_tree(), 2); \ |
1307 scroll->SetScrollClipLayer(root->id()); \ | 1307 scroll->SetScrollClipLayer(root->id()); \ |
1308 scroll->SetScrollOffset(gfx::Vector2d()); \ | 1308 scroll->SetScrollOffset(gfx::ScrollOffset()); \ |
1309 root->SetBounds(viewport_size); \ | 1309 root->SetBounds(viewport_size); \ |
1310 scroll->SetBounds(content_size); \ | 1310 scroll->SetBounds(content_size); \ |
1311 scroll->SetContentBounds(content_size); \ | 1311 scroll->SetContentBounds(content_size); \ |
1312 scroll->SetIsContainerForFixedPositionLayers(true); \ | 1312 scroll->SetIsContainerForFixedPositionLayers(true); \ |
1313 \ | 1313 \ |
1314 scoped_ptr<LayerImpl> contents = \ | 1314 scoped_ptr<LayerImpl> contents = \ |
1315 LayerImpl::Create(host_impl_->active_tree(), 3); \ | 1315 LayerImpl::Create(host_impl_->active_tree(), 3); \ |
1316 contents->SetDrawsContent(true); \ | 1316 contents->SetDrawsContent(true); \ |
1317 contents->SetBounds(content_size); \ | 1317 contents->SetBounds(content_size); \ |
1318 contents->SetContentBounds(content_size); \ | 1318 contents->SetContentBounds(content_size); \ |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1369 | 1369 |
1370 // After the fade begins, we should start getting redraws instead of a | 1370 // After the fade begins, we should start getting redraws instead of a |
1371 // scheduled animation. | 1371 // scheduled animation. |
1372 fake_now += base::TimeDelta::FromMilliseconds(25); | 1372 fake_now += base::TimeDelta::FromMilliseconds(25); |
1373 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); | 1373 EXPECT_EQ(base::TimeDelta(), requested_scrollbar_animation_delay_); |
1374 EXPECT_TRUE(did_request_animate_); | 1374 EXPECT_TRUE(did_request_animate_); |
1375 did_request_animate_ = false; | 1375 did_request_animate_ = false; |
1376 | 1376 |
1377 // Setting the scroll offset outside a scroll should also cause the scrollbar | 1377 // Setting the scroll offset outside a scroll should also cause the scrollbar |
1378 // to appear and to schedule a fade. | 1378 // to appear and to schedule a fade. |
1379 host_impl_->InnerViewportScrollLayer()->SetScrollOffset(gfx::Vector2d(5, 5)); | 1379 host_impl_->InnerViewportScrollLayer()->SetScrollOffset( |
| 1380 gfx::ScrollOffset(5, 5)); |
1380 EXPECT_LT(base::TimeDelta::FromMilliseconds(19), | 1381 EXPECT_LT(base::TimeDelta::FromMilliseconds(19), |
1381 requested_scrollbar_animation_delay_); | 1382 requested_scrollbar_animation_delay_); |
1382 EXPECT_FALSE(did_request_redraw_); | 1383 EXPECT_FALSE(did_request_redraw_); |
1383 EXPECT_FALSE(did_request_animate_); | 1384 EXPECT_FALSE(did_request_animate_); |
1384 requested_scrollbar_animation_delay_ = base::TimeDelta(); | 1385 requested_scrollbar_animation_delay_ = base::TimeDelta(); |
1385 | 1386 |
1386 // Unnecessarily Fade animation of solid color scrollbar is not triggered. | 1387 // Unnecessarily Fade animation of solid color scrollbar is not triggered. |
1387 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel); | 1388 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Wheel); |
1388 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0)); | 1389 host_impl_->ScrollBy(gfx::Point(), gfx::Vector2dF(5, 0)); |
1389 host_impl_->ScrollEnd(); | 1390 host_impl_->ScrollEnd(); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 host_impl_->SetDeviceScaleFactor(device_scale_factor); | 1465 host_impl_->SetDeviceScaleFactor(device_scale_factor); |
1465 host_impl_->SetViewportSize(device_viewport_size); | 1466 host_impl_->SetViewportSize(device_viewport_size); |
1466 | 1467 |
1467 scoped_ptr<LayerImpl> root = | 1468 scoped_ptr<LayerImpl> root = |
1468 LayerImpl::Create(host_impl_->active_tree(), 1); | 1469 LayerImpl::Create(host_impl_->active_tree(), 1); |
1469 root->SetBounds(viewport_size); | 1470 root->SetBounds(viewport_size); |
1470 | 1471 |
1471 scoped_ptr<LayerImpl> scroll = | 1472 scoped_ptr<LayerImpl> scroll = |
1472 LayerImpl::Create(host_impl_->active_tree(), 2); | 1473 LayerImpl::Create(host_impl_->active_tree(), 2); |
1473 scroll->SetScrollClipLayer(root->id()); | 1474 scroll->SetScrollClipLayer(root->id()); |
1474 scroll->SetScrollOffset(gfx::Vector2d()); | 1475 scroll->SetScrollOffset(gfx::ScrollOffset()); |
1475 scroll->SetBounds(content_size); | 1476 scroll->SetBounds(content_size); |
1476 scroll->SetContentBounds(content_size); | 1477 scroll->SetContentBounds(content_size); |
1477 scroll->SetIsContainerForFixedPositionLayers(true); | 1478 scroll->SetIsContainerForFixedPositionLayers(true); |
1478 | 1479 |
1479 scoped_ptr<LayerImpl> contents = | 1480 scoped_ptr<LayerImpl> contents = |
1480 LayerImpl::Create(host_impl_->active_tree(), 3); | 1481 LayerImpl::Create(host_impl_->active_tree(), 3); |
1481 contents->SetDrawsContent(true); | 1482 contents->SetDrawsContent(true); |
1482 contents->SetBounds(content_size); | 1483 contents->SetBounds(content_size); |
1483 contents->SetContentBounds(content_size); | 1484 contents->SetContentBounds(content_size); |
1484 | 1485 |
(...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2403 host_impl_->top_controls_manager()->ScrollEnd(); | 2404 host_impl_->top_controls_manager()->ScrollEnd(); |
2404 EXPECT_EQ(-2 * scroll_increment_y, | 2405 EXPECT_EQ(-2 * scroll_increment_y, |
2405 host_impl_->top_controls_manager()->ContentTopOffset()); | 2406 host_impl_->top_controls_manager()->ContentTopOffset()); |
2406 // Now that top controls have moved, expect the clip to resize. | 2407 // Now that top controls have moved, expect the clip to resize. |
2407 EXPECT_EQ(clip_size_, root_clip_ptr->bounds()); | 2408 EXPECT_EQ(clip_size_, root_clip_ptr->bounds()); |
2408 | 2409 |
2409 host_impl_->ScrollEnd(); | 2410 host_impl_->ScrollEnd(); |
2410 | 2411 |
2411 // Verify the layer is once-again non-scrollable. | 2412 // Verify the layer is once-again non-scrollable. |
2412 EXPECT_EQ( | 2413 EXPECT_EQ( |
2413 gfx::Vector2d(), | 2414 gfx::ScrollOffset(), |
2414 host_impl_->active_tree()->InnerViewportScrollLayer()->MaxScrollOffset()); | 2415 host_impl_->active_tree()->InnerViewportScrollLayer()->MaxScrollOffset()); |
2415 | 2416 |
2416 EXPECT_EQ(InputHandler::ScrollStarted, | 2417 EXPECT_EQ(InputHandler::ScrollStarted, |
2417 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2418 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
2418 } | 2419 } |
2419 | 2420 |
2420 TEST_F(LayerTreeHostImplTest, ScrollNonCompositedRoot) { | 2421 TEST_F(LayerTreeHostImplTest, ScrollNonCompositedRoot) { |
2421 // Test the configuration where a non-composited root layer is embedded in a | 2422 // Test the configuration where a non-composited root layer is embedded in a |
2422 // scrollable outer layer. | 2423 // scrollable outer layer. |
2423 gfx::Size surface_size(10, 10); | 2424 gfx::Size surface_size(10, 10); |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2566 host_impl_->active_tree()->DidBecomeActive(); | 2567 host_impl_->active_tree()->DidBecomeActive(); |
2567 host_impl_->SetViewportSize(viewport_size); | 2568 host_impl_->SetViewportSize(viewport_size); |
2568 DrawFrame(); | 2569 DrawFrame(); |
2569 | 2570 |
2570 LayerImpl* root_scroll = | 2571 LayerImpl* root_scroll = |
2571 host_impl_->active_tree()->InnerViewportScrollLayer(); | 2572 host_impl_->active_tree()->InnerViewportScrollLayer(); |
2572 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); | 2573 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); |
2573 | 2574 |
2574 gfx::Vector2d scroll_delta(0, 10); | 2575 gfx::Vector2d scroll_delta(0, 10); |
2575 gfx::Vector2d expected_scroll_delta = scroll_delta; | 2576 gfx::Vector2d expected_scroll_delta = scroll_delta; |
2576 gfx::Vector2d expected_max_scroll = root_scroll->MaxScrollOffset(); | 2577 gfx::ScrollOffset expected_max_scroll = root_scroll->MaxScrollOffset(); |
2577 EXPECT_EQ(InputHandler::ScrollStarted, | 2578 EXPECT_EQ(InputHandler::ScrollStarted, |
2578 host_impl_->ScrollBegin(gfx::Point(5, 5), | 2579 host_impl_->ScrollBegin(gfx::Point(5, 5), |
2579 InputHandler::Wheel)); | 2580 InputHandler::Wheel)); |
2580 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2581 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2581 host_impl_->ScrollEnd(); | 2582 host_impl_->ScrollEnd(); |
2582 | 2583 |
2583 // Set new page scale from main thread. | 2584 // Set new page scale from main thread. |
2584 host_impl_->active_tree()->SetPageScaleFactorAndLimits(page_scale, | 2585 host_impl_->active_tree()->SetPageScaleFactorAndLimits(page_scale, |
2585 page_scale, | 2586 page_scale, |
2586 page_scale); | 2587 page_scale); |
(...skipping 30 matching lines...) Expand all Loading... |
2617 host_impl_->SetViewportSize(viewport_size); | 2618 host_impl_->SetViewportSize(viewport_size); |
2618 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); | 2619 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 1.f, page_scale); |
2619 DrawFrame(); | 2620 DrawFrame(); |
2620 | 2621 |
2621 LayerImpl* root_scroll = | 2622 LayerImpl* root_scroll = |
2622 host_impl_->active_tree()->InnerViewportScrollLayer(); | 2623 host_impl_->active_tree()->InnerViewportScrollLayer(); |
2623 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); | 2624 EXPECT_EQ(viewport_size, root_scroll->scroll_clip_layer()->bounds()); |
2624 | 2625 |
2625 gfx::Vector2d scroll_delta(0, 10); | 2626 gfx::Vector2d scroll_delta(0, 10); |
2626 gfx::Vector2d expected_scroll_delta = scroll_delta; | 2627 gfx::Vector2d expected_scroll_delta = scroll_delta; |
2627 gfx::Vector2d expected_max_scroll = root_scroll->MaxScrollOffset(); | 2628 gfx::ScrollOffset expected_max_scroll = root_scroll->MaxScrollOffset(); |
2628 EXPECT_EQ(InputHandler::ScrollStarted, | 2629 EXPECT_EQ(InputHandler::ScrollStarted, |
2629 host_impl_->ScrollBegin(gfx::Point(5, 5), | 2630 host_impl_->ScrollBegin(gfx::Point(5, 5), |
2630 InputHandler::Wheel)); | 2631 InputHandler::Wheel)); |
2631 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2632 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2632 host_impl_->ScrollEnd(); | 2633 host_impl_->ScrollEnd(); |
2633 | 2634 |
2634 // Set new page scale on impl thread by pinching. | 2635 // Set new page scale on impl thread by pinching. |
2635 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); | 2636 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); |
2636 host_impl_->PinchGestureBegin(); | 2637 host_impl_->PinchGestureBegin(); |
2637 host_impl_->PinchGestureUpdate(page_scale, gfx::Point()); | 2638 host_impl_->PinchGestureUpdate(page_scale, gfx::Point()); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2727 LayerImpl* child = child_scrolling.get(); | 2728 LayerImpl* child = child_scrolling.get(); |
2728 root_scrolling_ptr->AddChild(child_scrolling.Pass()); | 2729 root_scrolling_ptr->AddChild(child_scrolling.Pass()); |
2729 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2730 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
2730 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 2731 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); |
2731 host_impl_->active_tree()->DidBecomeActive(); | 2732 host_impl_->active_tree()->DidBecomeActive(); |
2732 host_impl_->SetViewportSize(surface_size); | 2733 host_impl_->SetViewportSize(surface_size); |
2733 DrawFrame(); | 2734 DrawFrame(); |
2734 | 2735 |
2735 gfx::Vector2d scroll_delta(0, 10); | 2736 gfx::Vector2d scroll_delta(0, 10); |
2736 gfx::Vector2d expected_scroll_delta(scroll_delta); | 2737 gfx::Vector2d expected_scroll_delta(scroll_delta); |
2737 gfx::Vector2d expected_max_scroll(child->MaxScrollOffset()); | 2738 gfx::ScrollOffset expected_max_scroll(child->MaxScrollOffset()); |
2738 EXPECT_EQ(InputHandler::ScrollStarted, | 2739 EXPECT_EQ(InputHandler::ScrollStarted, |
2739 host_impl_->ScrollBegin(gfx::Point(5, 5), | 2740 host_impl_->ScrollBegin(gfx::Point(5, 5), |
2740 InputHandler::Wheel)); | 2741 InputHandler::Wheel)); |
2741 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2742 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2742 host_impl_->ScrollEnd(); | 2743 host_impl_->ScrollEnd(); |
2743 | 2744 |
2744 float page_scale = 2.f; | 2745 float page_scale = 2.f; |
2745 host_impl_->active_tree()->SetPageScaleFactorAndLimits(page_scale, | 2746 host_impl_->active_tree()->SetPageScaleFactorAndLimits(page_scale, |
2746 1.f, | 2747 1.f, |
2747 page_scale); | 2748 page_scale); |
(...skipping 27 matching lines...) Expand all Loading... |
2775 scoped_ptr<LayerImpl> child = | 2776 scoped_ptr<LayerImpl> child = |
2776 CreateScrollableLayer(2, content_size, root.get()); | 2777 CreateScrollableLayer(2, content_size, root.get()); |
2777 LayerImpl* grand_child_layer = grand_child.get(); | 2778 LayerImpl* grand_child_layer = grand_child.get(); |
2778 child->AddChild(grand_child.Pass()); | 2779 child->AddChild(grand_child.Pass()); |
2779 | 2780 |
2780 LayerImpl* child_layer = child.get(); | 2781 LayerImpl* child_layer = child.get(); |
2781 root->AddChild(child.Pass()); | 2782 root->AddChild(child.Pass()); |
2782 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2783 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
2783 host_impl_->active_tree()->DidBecomeActive(); | 2784 host_impl_->active_tree()->DidBecomeActive(); |
2784 host_impl_->SetViewportSize(surface_size); | 2785 host_impl_->SetViewportSize(surface_size); |
2785 grand_child_layer->SetScrollOffset(gfx::Vector2d(0, 5)); | 2786 grand_child_layer->SetScrollOffset(gfx::ScrollOffset(0, 5)); |
2786 child_layer->SetScrollOffset(gfx::Vector2d(3, 0)); | 2787 child_layer->SetScrollOffset(gfx::ScrollOffset(3, 0)); |
2787 | 2788 |
2788 DrawFrame(); | 2789 DrawFrame(); |
2789 { | 2790 { |
2790 gfx::Vector2d scroll_delta(-8, -7); | 2791 gfx::Vector2d scroll_delta(-8, -7); |
2791 EXPECT_EQ(InputHandler::ScrollStarted, | 2792 EXPECT_EQ(InputHandler::ScrollStarted, |
2792 host_impl_->ScrollBegin(gfx::Point(), | 2793 host_impl_->ScrollBegin(gfx::Point(), |
2793 InputHandler::Wheel)); | 2794 InputHandler::Wheel)); |
2794 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2795 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2795 host_impl_->ScrollEnd(); | 2796 host_impl_->ScrollEnd(); |
2796 | 2797 |
(...skipping 30 matching lines...) Expand all Loading... |
2827 | 2828 |
2828 LayerImpl* child_layer = child.get(); | 2829 LayerImpl* child_layer = child.get(); |
2829 root_scrolling->AddChild(child.Pass()); | 2830 root_scrolling->AddChild(child.Pass()); |
2830 root->AddChild(root_scrolling.Pass()); | 2831 root->AddChild(root_scrolling.Pass()); |
2831 EXPECT_EQ(viewport_size, root->bounds()); | 2832 EXPECT_EQ(viewport_size, root->bounds()); |
2832 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 2833 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
2833 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); | 2834 host_impl_->active_tree()->SetViewportLayersFromIds(1, 2, Layer::INVALID_ID); |
2834 host_impl_->active_tree()->DidBecomeActive(); | 2835 host_impl_->active_tree()->DidBecomeActive(); |
2835 host_impl_->SetViewportSize(viewport_size); | 2836 host_impl_->SetViewportSize(viewport_size); |
2836 | 2837 |
2837 grand_child_layer->SetScrollOffset(gfx::Vector2d(0, 2)); | 2838 grand_child_layer->SetScrollOffset(gfx::ScrollOffset(0, 2)); |
2838 child_layer->SetScrollOffset(gfx::Vector2d(0, 3)); | 2839 child_layer->SetScrollOffset(gfx::ScrollOffset(0, 3)); |
2839 | 2840 |
2840 DrawFrame(); | 2841 DrawFrame(); |
2841 { | 2842 { |
2842 gfx::Vector2d scroll_delta(0, -10); | 2843 gfx::Vector2d scroll_delta(0, -10); |
2843 EXPECT_EQ(InputHandler::ScrollStarted, | 2844 EXPECT_EQ(InputHandler::ScrollStarted, |
2844 host_impl_->ScrollBegin(gfx::Point(), | 2845 host_impl_->ScrollBegin(gfx::Point(), |
2845 InputHandler::NonBubblingGesture)); | 2846 InputHandler::NonBubblingGesture)); |
2846 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2847 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
2847 host_impl_->ScrollEnd(); | 2848 host_impl_->ScrollEnd(); |
2848 | 2849 |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3166 int height = 20; | 3167 int height = 20; |
3167 int scale = 3; | 3168 int scale = 3; |
3168 SetupScrollAndContentsLayers(gfx::Size(width, height)); | 3169 SetupScrollAndContentsLayers(gfx::Size(width, height)); |
3169 host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds( | 3170 host_impl_->active_tree()->InnerViewportContainerLayer()->SetBounds( |
3170 gfx::Size(width * scale - 1, height * scale)); | 3171 gfx::Size(width * scale - 1, height * scale)); |
3171 host_impl_->SetDeviceScaleFactor(scale); | 3172 host_impl_->SetDeviceScaleFactor(scale); |
3172 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); | 3173 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); |
3173 | 3174 |
3174 LayerImpl* inner_viewport_scroll_layer = | 3175 LayerImpl* inner_viewport_scroll_layer = |
3175 host_impl_->active_tree()->InnerViewportScrollLayer(); | 3176 host_impl_->active_tree()->InnerViewportScrollLayer(); |
3176 EXPECT_EQ(gfx::Vector2d(0, 0), | 3177 EXPECT_EQ(gfx::ScrollOffset(0, 0), |
3177 inner_viewport_scroll_layer->MaxScrollOffset()); | 3178 inner_viewport_scroll_layer->MaxScrollOffset()); |
3178 } | 3179 } |
3179 | 3180 |
3180 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { | 3181 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { |
3181 public: | 3182 public: |
3182 TestScrollOffsetDelegate() | 3183 TestScrollOffsetDelegate() |
3183 : page_scale_factor_(0.f), | 3184 : page_scale_factor_(0.f), |
3184 min_page_scale_factor_(-1.f), | 3185 min_page_scale_factor_(-1.f), |
3185 max_page_scale_factor_(-1.f) {} | 3186 max_page_scale_factor_(-1.f) {} |
3186 | 3187 |
3187 virtual ~TestScrollOffsetDelegate() {} | 3188 virtual ~TestScrollOffsetDelegate() {} |
3188 | 3189 |
3189 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE { | 3190 virtual gfx::ScrollOffset GetTotalScrollOffset() OVERRIDE { |
3190 return getter_return_value_; | 3191 return getter_return_value_; |
3191 } | 3192 } |
3192 | 3193 |
3193 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } | 3194 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } |
3194 | 3195 |
3195 virtual void UpdateRootLayerState(const gfx::Vector2dF& total_scroll_offset, | 3196 virtual void UpdateRootLayerState( |
3196 const gfx::Vector2dF& max_scroll_offset, | 3197 const gfx::ScrollOffset& total_scroll_offset, |
3197 const gfx::SizeF& scrollable_size, | 3198 const gfx::ScrollOffset& max_scroll_offset, |
3198 float page_scale_factor, | 3199 const gfx::SizeF& scrollable_size, |
3199 float min_page_scale_factor, | 3200 float page_scale_factor, |
3200 float max_page_scale_factor) OVERRIDE { | 3201 float min_page_scale_factor, |
| 3202 float max_page_scale_factor) OVERRIDE { |
3201 DCHECK(total_scroll_offset.x() <= max_scroll_offset.x()); | 3203 DCHECK(total_scroll_offset.x() <= max_scroll_offset.x()); |
3202 DCHECK(total_scroll_offset.y() <= max_scroll_offset.y()); | 3204 DCHECK(total_scroll_offset.y() <= max_scroll_offset.y()); |
3203 last_set_scroll_offset_ = total_scroll_offset; | 3205 last_set_scroll_offset_ = total_scroll_offset; |
3204 max_scroll_offset_ = max_scroll_offset; | 3206 max_scroll_offset_ = max_scroll_offset; |
3205 scrollable_size_ = scrollable_size; | 3207 scrollable_size_ = scrollable_size; |
3206 page_scale_factor_ = page_scale_factor; | 3208 page_scale_factor_ = page_scale_factor; |
3207 min_page_scale_factor_ = min_page_scale_factor; | 3209 min_page_scale_factor_ = min_page_scale_factor; |
3208 max_page_scale_factor_ = max_page_scale_factor; | 3210 max_page_scale_factor_ = max_page_scale_factor; |
3209 } | 3211 } |
3210 | 3212 |
3211 gfx::Vector2dF last_set_scroll_offset() { | 3213 gfx::ScrollOffset last_set_scroll_offset() { |
3212 return last_set_scroll_offset_; | 3214 return last_set_scroll_offset_; |
3213 } | 3215 } |
3214 | 3216 |
3215 void set_getter_return_value(const gfx::Vector2dF& value) { | 3217 void set_getter_return_value(const gfx::ScrollOffset& value) { |
3216 getter_return_value_ = value; | 3218 getter_return_value_ = value; |
3217 } | 3219 } |
3218 | 3220 |
3219 gfx::Vector2dF max_scroll_offset() const { | 3221 gfx::ScrollOffset max_scroll_offset() const { |
3220 return max_scroll_offset_; | 3222 return max_scroll_offset_; |
3221 } | 3223 } |
3222 | 3224 |
3223 gfx::SizeF scrollable_size() const { | 3225 gfx::SizeF scrollable_size() const { |
3224 return scrollable_size_; | 3226 return scrollable_size_; |
3225 } | 3227 } |
3226 | 3228 |
3227 float page_scale_factor() const { | 3229 float page_scale_factor() const { |
3228 return page_scale_factor_; | 3230 return page_scale_factor_; |
3229 } | 3231 } |
3230 | 3232 |
3231 float min_page_scale_factor() const { | 3233 float min_page_scale_factor() const { |
3232 return min_page_scale_factor_; | 3234 return min_page_scale_factor_; |
3233 } | 3235 } |
3234 | 3236 |
3235 float max_page_scale_factor() const { | 3237 float max_page_scale_factor() const { |
3236 return max_page_scale_factor_; | 3238 return max_page_scale_factor_; |
3237 } | 3239 } |
3238 | 3240 |
3239 private: | 3241 private: |
3240 gfx::Vector2dF last_set_scroll_offset_; | 3242 gfx::ScrollOffset last_set_scroll_offset_; |
3241 gfx::Vector2dF getter_return_value_; | 3243 gfx::ScrollOffset getter_return_value_; |
3242 gfx::Vector2dF max_scroll_offset_; | 3244 gfx::ScrollOffset max_scroll_offset_; |
3243 gfx::SizeF scrollable_size_; | 3245 gfx::SizeF scrollable_size_; |
3244 float page_scale_factor_; | 3246 float page_scale_factor_; |
3245 float min_page_scale_factor_; | 3247 float min_page_scale_factor_; |
3246 float max_page_scale_factor_; | 3248 float max_page_scale_factor_; |
3247 }; | 3249 }; |
3248 | 3250 |
3249 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { | 3251 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { |
3250 TestScrollOffsetDelegate scroll_delegate; | 3252 TestScrollOffsetDelegate scroll_delegate; |
3251 host_impl_->SetViewportSize(gfx::Size(10, 20)); | 3253 host_impl_->SetViewportSize(gfx::Size(10, 20)); |
3252 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 3254 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
3253 LayerImpl* clip_layer = scroll_layer->parent()->parent(); | 3255 LayerImpl* clip_layer = scroll_layer->parent()->parent(); |
3254 clip_layer->SetBounds(gfx::Size(10, 20)); | 3256 clip_layer->SetBounds(gfx::Size(10, 20)); |
3255 | 3257 |
3256 // Setting the delegate results in the current scroll offset being set. | 3258 // Setting the delegate results in the current scroll offset being set. |
3257 gfx::Vector2dF initial_scroll_delta(10.f, 10.f); | 3259 gfx::Vector2dF initial_scroll_delta(10.f, 10.f); |
3258 scroll_layer->SetScrollOffset(gfx::Vector2d()); | 3260 scroll_layer->SetScrollOffset(gfx::ScrollOffset()); |
3259 scroll_layer->SetScrollDelta(initial_scroll_delta); | 3261 scroll_layer->SetScrollDelta(initial_scroll_delta); |
3260 host_impl_->SetRootLayerScrollOffsetDelegate(&scroll_delegate); | 3262 host_impl_->SetRootLayerScrollOffsetDelegate(&scroll_delegate); |
3261 EXPECT_EQ(initial_scroll_delta.ToString(), | 3263 EXPECT_EQ(initial_scroll_delta.ToString(), |
3262 scroll_delegate.last_set_scroll_offset().ToString()); | 3264 scroll_delegate.last_set_scroll_offset().ToString()); |
3263 | 3265 |
3264 // Setting the delegate results in the scrollable_size, max_scroll_offset, | 3266 // Setting the delegate results in the scrollable_size, max_scroll_offset, |
3265 // page_scale_factor and {min|max}_page_scale_factor being set. | 3267 // page_scale_factor and {min|max}_page_scale_factor being set. |
3266 EXPECT_EQ(gfx::SizeF(100, 100), scroll_delegate.scrollable_size()); | 3268 EXPECT_EQ(gfx::SizeF(100, 100), scroll_delegate.scrollable_size()); |
3267 EXPECT_EQ(gfx::Vector2dF(90, 80), scroll_delegate.max_scroll_offset()); | 3269 EXPECT_EQ(gfx::ScrollOffset(90, 80), scroll_delegate.max_scroll_offset()); |
3268 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); | 3270 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); |
3269 EXPECT_EQ(0.f, scroll_delegate.min_page_scale_factor()); | 3271 EXPECT_EQ(0.f, scroll_delegate.min_page_scale_factor()); |
3270 EXPECT_EQ(0.f, scroll_delegate.max_page_scale_factor()); | 3272 EXPECT_EQ(0.f, scroll_delegate.max_page_scale_factor()); |
3271 | 3273 |
3272 // Updating page scale immediately updates the delegate. | 3274 // Updating page scale immediately updates the delegate. |
3273 host_impl_->active_tree()->SetPageScaleFactorAndLimits(2.f, 0.5f, 4.f); | 3275 host_impl_->active_tree()->SetPageScaleFactorAndLimits(2.f, 0.5f, 4.f); |
3274 EXPECT_EQ(2.f, scroll_delegate.page_scale_factor()); | 3276 EXPECT_EQ(2.f, scroll_delegate.page_scale_factor()); |
3275 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); | 3277 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); |
3276 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); | 3278 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); |
3277 host_impl_->active_tree()->SetPageScaleDelta(1.5f); | 3279 host_impl_->active_tree()->SetPageScaleDelta(1.5f); |
(...skipping 11 matching lines...) Expand all Loading... |
3289 // delegate). | 3291 // delegate). |
3290 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); | 3292 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); |
3291 host_impl_->PinchGestureBegin(); | 3293 host_impl_->PinchGestureBegin(); |
3292 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); | 3294 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); |
3293 host_impl_->PinchGestureUpdate(.5f, gfx::Point()); | 3295 host_impl_->PinchGestureUpdate(.5f, gfx::Point()); |
3294 host_impl_->PinchGestureEnd(); | 3296 host_impl_->PinchGestureEnd(); |
3295 host_impl_->ScrollEnd(); | 3297 host_impl_->ScrollEnd(); |
3296 | 3298 |
3297 // Scrolling should be relative to the offset as returned by the delegate. | 3299 // Scrolling should be relative to the offset as returned by the delegate. |
3298 gfx::Vector2dF scroll_delta(0.f, 10.f); | 3300 gfx::Vector2dF scroll_delta(0.f, 10.f); |
3299 gfx::Vector2dF current_offset(7.f, 8.f); | 3301 gfx::ScrollOffset current_offset(7.f, 8.f); |
3300 | 3302 |
3301 scroll_delegate.set_getter_return_value(current_offset); | 3303 scroll_delegate.set_getter_return_value(current_offset); |
3302 EXPECT_EQ(InputHandler::ScrollStarted, | 3304 EXPECT_EQ(InputHandler::ScrollStarted, |
3303 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 3305 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
3304 | 3306 |
3305 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3307 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
3306 EXPECT_EQ(current_offset + scroll_delta, | 3308 EXPECT_EQ(ScrollOffsetWithDelta(current_offset, scroll_delta), |
3307 scroll_delegate.last_set_scroll_offset()); | 3309 scroll_delegate.last_set_scroll_offset()); |
3308 | 3310 |
3309 current_offset = gfx::Vector2dF(42.f, 41.f); | 3311 current_offset = gfx::ScrollOffset(42.f, 41.f); |
3310 scroll_delegate.set_getter_return_value(current_offset); | 3312 scroll_delegate.set_getter_return_value(current_offset); |
3311 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3313 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
3312 EXPECT_EQ(current_offset + scroll_delta, | 3314 EXPECT_EQ(current_offset + gfx::ScrollOffset(scroll_delta), |
3313 scroll_delegate.last_set_scroll_offset()); | 3315 scroll_delegate.last_set_scroll_offset()); |
3314 host_impl_->ScrollEnd(); | 3316 host_impl_->ScrollEnd(); |
3315 scroll_delegate.set_getter_return_value(gfx::Vector2dF()); | 3317 scroll_delegate.set_getter_return_value(gfx::ScrollOffset()); |
3316 | 3318 |
3317 // Forces a full tree synchronization and ensures that the scroll delegate | 3319 // Forces a full tree synchronization and ensures that the scroll delegate |
3318 // sees the correct size of the new tree. | 3320 // sees the correct size of the new tree. |
3319 gfx::Size new_size(42, 24); | 3321 gfx::Size new_size(42, 24); |
3320 host_impl_->CreatePendingTree(); | 3322 host_impl_->CreatePendingTree(); |
3321 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); | 3323 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); |
3322 host_impl_->ActivateSyncTree(); | 3324 host_impl_->ActivateSyncTree(); |
3323 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); | 3325 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); |
3324 | 3326 |
3325 // Un-setting the delegate should propagate the delegate's current offset to | 3327 // Un-setting the delegate should propagate the delegate's current offset to |
3326 // the root scrollable layer. | 3328 // the root scrollable layer. |
3327 current_offset = gfx::Vector2dF(13.f, 12.f); | 3329 current_offset = gfx::ScrollOffset(13.f, 12.f); |
3328 scroll_delegate.set_getter_return_value(current_offset); | 3330 scroll_delegate.set_getter_return_value(current_offset); |
3329 host_impl_->SetRootLayerScrollOffsetDelegate(NULL); | 3331 host_impl_->SetRootLayerScrollOffsetDelegate(NULL); |
3330 | 3332 |
3331 EXPECT_EQ(current_offset.ToString(), | 3333 EXPECT_EQ(current_offset.ToString(), |
3332 scroll_layer->TotalScrollOffset().ToString()); | 3334 scroll_layer->TotalScrollOffset().ToString()); |
3333 } | 3335 } |
3334 | 3336 |
3335 void CheckLayerScrollDelta(LayerImpl* layer, gfx::Vector2dF scroll_delta) { | 3337 void CheckLayerScrollDelta(LayerImpl* layer, gfx::Vector2dF scroll_delta) { |
3336 const gfx::Transform target_space_transform = | 3338 const gfx::Transform target_space_transform = |
3337 layer->draw_properties().target_space_transform; | 3339 layer->draw_properties().target_space_transform; |
(...skipping 12 matching lines...) Expand all Loading... |
3350 LayerImpl* clip_layer = scroll_layer->parent()->parent(); | 3352 LayerImpl* clip_layer = scroll_layer->parent()->parent(); |
3351 clip_layer->SetBounds(gfx::Size(10, 20)); | 3353 clip_layer->SetBounds(gfx::Size(10, 20)); |
3352 host_impl_->SetRootLayerScrollOffsetDelegate(&scroll_delegate); | 3354 host_impl_->SetRootLayerScrollOffsetDelegate(&scroll_delegate); |
3353 | 3355 |
3354 // Draw first frame to clear any pending draws and check scroll. | 3356 // Draw first frame to clear any pending draws and check scroll. |
3355 DrawFrame(); | 3357 DrawFrame(); |
3356 CheckLayerScrollDelta(scroll_layer, gfx::Vector2dF(0.f, 0.f)); | 3358 CheckLayerScrollDelta(scroll_layer, gfx::Vector2dF(0.f, 0.f)); |
3357 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties()); | 3359 EXPECT_FALSE(host_impl_->active_tree()->needs_update_draw_properties()); |
3358 | 3360 |
3359 // Set external scroll delta on delegate and notify LayerTreeHost. | 3361 // Set external scroll delta on delegate and notify LayerTreeHost. |
3360 gfx::Vector2dF scroll_delta(10.f, 10.f); | 3362 gfx::ScrollOffset scroll_offset(10.f, 10.f); |
3361 scroll_delegate.set_getter_return_value(scroll_delta); | 3363 scroll_delegate.set_getter_return_value(scroll_offset); |
3362 host_impl_->OnRootLayerDelegatedScrollOffsetChanged(); | 3364 host_impl_->OnRootLayerDelegatedScrollOffsetChanged(); |
3363 | 3365 |
3364 // Check scroll delta reflected in layer. | 3366 // Check scroll delta reflected in layer. |
3365 DrawFrame(); | 3367 DrawFrame(); |
3366 CheckLayerScrollDelta(scroll_layer, scroll_delta); | 3368 CheckLayerScrollDelta(scroll_layer, ScrollOffsetToVector2dF(scroll_offset)); |
3367 | 3369 |
3368 host_impl_->SetRootLayerScrollOffsetDelegate(NULL); | 3370 host_impl_->SetRootLayerScrollOffsetDelegate(NULL); |
3369 } | 3371 } |
3370 | 3372 |
3371 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { | 3373 TEST_F(LayerTreeHostImplTest, OverscrollRoot) { |
3372 SetupScrollAndContentsLayers(gfx::Size(100, 100)); | 3374 SetupScrollAndContentsLayers(gfx::Size(100, 100)); |
3373 host_impl_->SetViewportSize(gfx::Size(50, 50)); | 3375 host_impl_->SetViewportSize(gfx::Size(50, 50)); |
3374 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); | 3376 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); |
3375 DrawFrame(); | 3377 DrawFrame(); |
3376 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); | 3378 EXPECT_EQ(gfx::Vector2dF(), host_impl_->accumulated_root_overscroll()); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3427 CreateScrollableLayer(3, surface_size, root_clip.get()); | 3429 CreateScrollableLayer(3, surface_size, root_clip.get()); |
3428 | 3430 |
3429 scoped_ptr<LayerImpl> child = | 3431 scoped_ptr<LayerImpl> child = |
3430 CreateScrollableLayer(2, surface_size, root_clip.get()); | 3432 CreateScrollableLayer(2, surface_size, root_clip.get()); |
3431 LayerImpl* grand_child_layer = grand_child.get(); | 3433 LayerImpl* grand_child_layer = grand_child.get(); |
3432 child->AddChild(grand_child.Pass()); | 3434 child->AddChild(grand_child.Pass()); |
3433 | 3435 |
3434 LayerImpl* child_layer = child.get(); | 3436 LayerImpl* child_layer = child.get(); |
3435 root->AddChild(child.Pass()); | 3437 root->AddChild(child.Pass()); |
3436 root_clip->AddChild(root.Pass()); | 3438 root_clip->AddChild(root.Pass()); |
3437 child_layer->SetScrollOffset(gfx::Vector2d(0, 3)); | 3439 child_layer->SetScrollOffset(gfx::ScrollOffset(0, 3)); |
3438 grand_child_layer->SetScrollOffset(gfx::Vector2d(0, 2)); | 3440 grand_child_layer->SetScrollOffset(gfx::ScrollOffset(0, 2)); |
3439 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); | 3441 host_impl_->active_tree()->SetRootLayer(root_clip.Pass()); |
3440 host_impl_->active_tree()->DidBecomeActive(); | 3442 host_impl_->active_tree()->DidBecomeActive(); |
3441 host_impl_->SetViewportSize(surface_size); | 3443 host_impl_->SetViewportSize(surface_size); |
3442 DrawFrame(); | 3444 DrawFrame(); |
3443 { | 3445 { |
3444 gfx::Vector2d scroll_delta(0, -10); | 3446 gfx::Vector2d scroll_delta(0, -10); |
3445 EXPECT_EQ(InputHandler::ScrollStarted, | 3447 EXPECT_EQ(InputHandler::ScrollStarted, |
3446 host_impl_->ScrollBegin(gfx::Point(), | 3448 host_impl_->ScrollBegin(gfx::Point(), |
3447 InputHandler::NonBubblingGesture)); | 3449 InputHandler::NonBubblingGesture)); |
3448 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3450 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
(...skipping 2184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5633 | 5635 |
5634 scoped_ptr<FakePictureLayerImpl> scoped_content_layer = | 5636 scoped_ptr<FakePictureLayerImpl> scoped_content_layer = |
5635 FakePictureLayerImpl::CreateWithPile(host_impl_->pending_tree(), 3, pile); | 5637 FakePictureLayerImpl::CreateWithPile(host_impl_->pending_tree(), 3, pile); |
5636 LayerImpl* content_layer = scoped_content_layer.get(); | 5638 LayerImpl* content_layer = scoped_content_layer.get(); |
5637 scrolling_layer->AddChild(scoped_content_layer.Pass()); | 5639 scrolling_layer->AddChild(scoped_content_layer.Pass()); |
5638 content_layer->SetBounds(content_layer_bounds); | 5640 content_layer->SetBounds(content_layer_bounds); |
5639 content_layer->SetDrawsContent(true); | 5641 content_layer->SetDrawsContent(true); |
5640 | 5642 |
5641 root->SetBounds(root_size); | 5643 root->SetBounds(root_size); |
5642 | 5644 |
5643 gfx::Vector2d scroll_offset(100000, 0); | 5645 gfx::ScrollOffset scroll_offset(100000, 0); |
5644 scrolling_layer->SetScrollClipLayer(root->id()); | 5646 scrolling_layer->SetScrollClipLayer(root->id()); |
5645 scrolling_layer->SetScrollOffset(scroll_offset); | 5647 scrolling_layer->SetScrollOffset(scroll_offset); |
5646 | 5648 |
5647 host_impl_->ActivateSyncTree(); | 5649 host_impl_->ActivateSyncTree(); |
5648 | 5650 |
5649 host_impl_->active_tree()->UpdateDrawProperties(); | 5651 host_impl_->active_tree()->UpdateDrawProperties(); |
5650 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); | 5652 ASSERT_EQ(1u, host_impl_->active_tree()->RenderSurfaceLayerList().size()); |
5651 | 5653 |
5652 LayerTreeHostImpl::FrameData frame; | 5654 LayerTreeHostImpl::FrameData frame; |
5653 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 5655 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6160 TEST_F(LayerTreeHostImplTest, TouchFlingShouldLockToFirstScrolledLayer) { | 6162 TEST_F(LayerTreeHostImplTest, TouchFlingShouldLockToFirstScrolledLayer) { |
6161 // Scroll a child layer beyond its maximum scroll range and make sure the | 6163 // Scroll a child layer beyond its maximum scroll range and make sure the |
6162 // the scroll doesn't bubble up to the parent layer. | 6164 // the scroll doesn't bubble up to the parent layer. |
6163 gfx::Size surface_size(10, 10); | 6165 gfx::Size surface_size(10, 10); |
6164 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); | 6166 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl_->active_tree(), 1); |
6165 scoped_ptr<LayerImpl> root_scrolling = | 6167 scoped_ptr<LayerImpl> root_scrolling = |
6166 CreateScrollableLayer(2, surface_size, root.get()); | 6168 CreateScrollableLayer(2, surface_size, root.get()); |
6167 | 6169 |
6168 scoped_ptr<LayerImpl> grand_child = | 6170 scoped_ptr<LayerImpl> grand_child = |
6169 CreateScrollableLayer(4, surface_size, root.get()); | 6171 CreateScrollableLayer(4, surface_size, root.get()); |
6170 grand_child->SetScrollOffset(gfx::Vector2d(0, 2)); | 6172 grand_child->SetScrollOffset(gfx::ScrollOffset(0, 2)); |
6171 | 6173 |
6172 scoped_ptr<LayerImpl> child = | 6174 scoped_ptr<LayerImpl> child = |
6173 CreateScrollableLayer(3, surface_size, root.get()); | 6175 CreateScrollableLayer(3, surface_size, root.get()); |
6174 child->SetScrollOffset(gfx::Vector2d(0, 4)); | 6176 child->SetScrollOffset(gfx::ScrollOffset(0, 4)); |
6175 child->AddChild(grand_child.Pass()); | 6177 child->AddChild(grand_child.Pass()); |
6176 | 6178 |
6177 root_scrolling->AddChild(child.Pass()); | 6179 root_scrolling->AddChild(child.Pass()); |
6178 root->AddChild(root_scrolling.Pass()); | 6180 root->AddChild(root_scrolling.Pass()); |
6179 host_impl_->active_tree()->SetRootLayer(root.Pass()); | 6181 host_impl_->active_tree()->SetRootLayer(root.Pass()); |
6180 host_impl_->active_tree()->DidBecomeActive(); | 6182 host_impl_->active_tree()->DidBecomeActive(); |
6181 host_impl_->SetViewportSize(surface_size); | 6183 host_impl_->SetViewportSize(surface_size); |
6182 DrawFrame(); | 6184 DrawFrame(); |
6183 { | 6185 { |
6184 scoped_ptr<ScrollAndScaleSet> scroll_info; | 6186 scoped_ptr<ScrollAndScaleSet> scroll_info; |
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6652 } | 6654 } |
6653 | 6655 |
6654 protected: | 6656 protected: |
6655 static const int top_controls_height_; | 6657 static const int top_controls_height_; |
6656 }; | 6658 }; |
6657 | 6659 |
6658 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; | 6660 const int LayerTreeHostImplWithTopControlsTest::top_controls_height_ = 50; |
6659 | 6661 |
6660 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { | 6662 TEST_F(LayerTreeHostImplWithTopControlsTest, NoIdleAnimations) { |
6661 SetupScrollAndContentsLayers(gfx::Size(100, 100)) | 6663 SetupScrollAndContentsLayers(gfx::Size(100, 100)) |
6662 ->SetScrollOffset(gfx::Vector2d(0, 10)); | 6664 ->SetScrollOffset(gfx::ScrollOffset(0, 10)); |
6663 host_impl_->Animate(base::TimeTicks()); | 6665 host_impl_->Animate(base::TimeTicks()); |
6664 EXPECT_FALSE(did_request_redraw_); | 6666 EXPECT_FALSE(did_request_redraw_); |
6665 } | 6667 } |
6666 | 6668 |
6667 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) { | 6669 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationScheduling) { |
6668 SetupScrollAndContentsLayers(gfx::Size(100, 100)) | 6670 SetupScrollAndContentsLayers(gfx::Size(100, 100)) |
6669 ->SetScrollOffset(gfx::Vector2d(0, 10)); | 6671 ->SetScrollOffset(gfx::ScrollOffset(0, 10)); |
6670 host_impl_->DidChangeTopControlsPosition(); | 6672 host_impl_->DidChangeTopControlsPosition(); |
6671 EXPECT_TRUE(did_request_animate_); | 6673 EXPECT_TRUE(did_request_animate_); |
6672 EXPECT_TRUE(did_request_redraw_); | 6674 EXPECT_TRUE(did_request_redraw_); |
6673 } | 6675 } |
6674 | 6676 |
6675 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) { | 6677 TEST_F(LayerTreeHostImplWithTopControlsTest, ScrollHandledByTopControls) { |
6676 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); | 6678 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); |
6677 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 6679 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
6678 host_impl_->top_controls_manager()->UpdateTopControlsState( | 6680 host_impl_->top_controls_manager()->UpdateTopControlsState( |
6679 BOTH, SHOWN, false); | 6681 BOTH, SHOWN, false); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6791 } | 6793 } |
6792 EXPECT_FALSE(host_impl_->top_controls_manager()->animation()); | 6794 EXPECT_FALSE(host_impl_->top_controls_manager()->animation()); |
6793 } | 6795 } |
6794 | 6796 |
6795 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) { | 6797 TEST_F(LayerTreeHostImplWithTopControlsTest, TopControlsAnimationAfterScroll) { |
6796 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); | 6798 LayerImpl* scroll_layer = SetupScrollAndContentsLayers(gfx::Size(100, 200)); |
6797 host_impl_->SetViewportSize(gfx::Size(100, 100)); | 6799 host_impl_->SetViewportSize(gfx::Size(100, 100)); |
6798 host_impl_->top_controls_manager()->UpdateTopControlsState( | 6800 host_impl_->top_controls_manager()->UpdateTopControlsState( |
6799 BOTH, SHOWN, false); | 6801 BOTH, SHOWN, false); |
6800 float initial_scroll_offset = 50; | 6802 float initial_scroll_offset = 50; |
6801 scroll_layer->SetScrollOffset(gfx::Vector2d(0, initial_scroll_offset)); | 6803 scroll_layer->SetScrollOffset(gfx::ScrollOffset(0, initial_scroll_offset)); |
6802 DrawFrame(); | 6804 DrawFrame(); |
6803 | 6805 |
6804 EXPECT_EQ(InputHandler::ScrollStarted, | 6806 EXPECT_EQ(InputHandler::ScrollStarted, |
6805 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 6807 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
6806 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); | 6808 EXPECT_EQ(0, host_impl_->top_controls_manager()->ControlsTopOffset()); |
6807 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), | 6809 EXPECT_EQ(gfx::Vector2dF(0, initial_scroll_offset).ToString(), |
6808 scroll_layer->TotalScrollOffset().ToString()); | 6810 scroll_layer->TotalScrollOffset().ToString()); |
6809 | 6811 |
6810 // Scroll the top controls partially. | 6812 // Scroll the top controls partially. |
6811 const float residue = 15; | 6813 const float residue = 15; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6858 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); | 6860 LayerTreeImpl* layer_tree_impl = host_impl_->active_tree(); |
6859 const int kOuterViewportClipLayerId = 6; | 6861 const int kOuterViewportClipLayerId = 6; |
6860 const int kOuterViewportScrollLayerId = 7; | 6862 const int kOuterViewportScrollLayerId = 7; |
6861 const int kInnerViewportScrollLayerId = 2; | 6863 const int kInnerViewportScrollLayerId = 2; |
6862 const int kInnerViewportClipLayerId = 4; | 6864 const int kInnerViewportClipLayerId = 4; |
6863 const int kPageScaleLayerId = 5; | 6865 const int kPageScaleLayerId = 5; |
6864 | 6866 |
6865 scoped_ptr<LayerImpl> inner_scroll = | 6867 scoped_ptr<LayerImpl> inner_scroll = |
6866 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); | 6868 LayerImpl::Create(layer_tree_impl, kInnerViewportScrollLayerId); |
6867 inner_scroll->SetIsContainerForFixedPositionLayers(true); | 6869 inner_scroll->SetIsContainerForFixedPositionLayers(true); |
6868 inner_scroll->SetScrollOffset(gfx::Vector2d()); | 6870 inner_scroll->SetScrollOffset(gfx::ScrollOffset()); |
6869 | 6871 |
6870 scoped_ptr<LayerImpl> inner_clip = | 6872 scoped_ptr<LayerImpl> inner_clip = |
6871 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); | 6873 LayerImpl::Create(layer_tree_impl, kInnerViewportClipLayerId); |
6872 inner_clip->SetBounds(inner_viewport); | 6874 inner_clip->SetBounds(inner_viewport); |
6873 | 6875 |
6874 scoped_ptr<LayerImpl> page_scale = | 6876 scoped_ptr<LayerImpl> page_scale = |
6875 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); | 6877 LayerImpl::Create(layer_tree_impl, kPageScaleLayerId); |
6876 | 6878 |
6877 inner_scroll->SetScrollClipLayer(inner_clip->id()); | 6879 inner_scroll->SetScrollClipLayer(inner_clip->id()); |
6878 inner_scroll->SetBounds(outer_viewport); | 6880 inner_scroll->SetBounds(outer_viewport); |
6879 inner_scroll->SetContentBounds(outer_viewport); | 6881 inner_scroll->SetContentBounds(outer_viewport); |
6880 inner_scroll->SetPosition(gfx::PointF()); | 6882 inner_scroll->SetPosition(gfx::PointF()); |
6881 | 6883 |
6882 scoped_ptr<LayerImpl> outer_clip = | 6884 scoped_ptr<LayerImpl> outer_clip = |
6883 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId); | 6885 LayerImpl::Create(layer_tree_impl, kOuterViewportClipLayerId); |
6884 outer_clip->SetBounds(outer_viewport); | 6886 outer_clip->SetBounds(outer_viewport); |
6885 outer_clip->SetIsContainerForFixedPositionLayers(true); | 6887 outer_clip->SetIsContainerForFixedPositionLayers(true); |
6886 | 6888 |
6887 scoped_ptr<LayerImpl> outer_scroll = | 6889 scoped_ptr<LayerImpl> outer_scroll = |
6888 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId); | 6890 LayerImpl::Create(layer_tree_impl, kOuterViewportScrollLayerId); |
6889 outer_scroll->SetScrollClipLayer(outer_clip->id()); | 6891 outer_scroll->SetScrollClipLayer(outer_clip->id()); |
6890 outer_scroll->SetScrollOffset(gfx::Vector2d()); | 6892 outer_scroll->SetScrollOffset(gfx::ScrollOffset()); |
6891 outer_scroll->SetBounds(content_size); | 6893 outer_scroll->SetBounds(content_size); |
6892 outer_scroll->SetContentBounds(content_size); | 6894 outer_scroll->SetContentBounds(content_size); |
6893 outer_scroll->SetPosition(gfx::PointF()); | 6895 outer_scroll->SetPosition(gfx::PointF()); |
6894 | 6896 |
6895 scoped_ptr<LayerImpl> contents = | 6897 scoped_ptr<LayerImpl> contents = |
6896 LayerImpl::Create(layer_tree_impl, 8); | 6898 LayerImpl::Create(layer_tree_impl, 8); |
6897 contents->SetDrawsContent(true); | 6899 contents->SetDrawsContent(true); |
6898 contents->SetBounds(content_size); | 6900 contents->SetBounds(content_size); |
6899 contents->SetContentBounds(content_size); | 6901 contents->SetContentBounds(content_size); |
6900 contents->SetPosition(gfx::PointF()); | 6902 contents->SetPosition(gfx::PointF()); |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7021 base::TimeTicks() + base::TimeDelta::FromMilliseconds(100); | 7023 base::TimeTicks() + base::TimeDelta::FromMilliseconds(100); |
7022 | 7024 |
7023 EXPECT_EQ(InputHandler::ScrollStarted, | 7025 EXPECT_EQ(InputHandler::ScrollStarted, |
7024 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50))); | 7026 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50))); |
7025 | 7027 |
7026 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer(); | 7028 LayerImpl* scrolling_layer = host_impl_->CurrentlyScrollingLayer(); |
7027 | 7029 |
7028 host_impl_->Animate(start_time); | 7030 host_impl_->Animate(start_time); |
7029 host_impl_->UpdateAnimationState(true); | 7031 host_impl_->UpdateAnimationState(true); |
7030 | 7032 |
7031 EXPECT_EQ(gfx::Vector2dF(), scrolling_layer->TotalScrollOffset()); | 7033 EXPECT_EQ(gfx::ScrollOffset(), scrolling_layer->TotalScrollOffset()); |
7032 | 7034 |
7033 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(50)); | 7035 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(50)); |
7034 host_impl_->UpdateAnimationState(true); | 7036 host_impl_->UpdateAnimationState(true); |
7035 | 7037 |
7036 float y = scrolling_layer->TotalScrollOffset().y(); | 7038 float y = scrolling_layer->TotalScrollOffset().y(); |
7037 EXPECT_TRUE(y > 1 && y < 49); | 7039 EXPECT_TRUE(y > 1 && y < 49); |
7038 | 7040 |
7039 // Update target. | 7041 // Update target. |
7040 EXPECT_EQ(InputHandler::ScrollStarted, | 7042 EXPECT_EQ(InputHandler::ScrollStarted, |
7041 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50))); | 7043 host_impl_->ScrollAnimated(gfx::Point(), gfx::Vector2d(0, 50))); |
7042 | 7044 |
7043 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(200)); | 7045 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(200)); |
7044 host_impl_->UpdateAnimationState(true); | 7046 host_impl_->UpdateAnimationState(true); |
7045 | 7047 |
7046 y = scrolling_layer->TotalScrollOffset().y(); | 7048 y = scrolling_layer->TotalScrollOffset().y(); |
7047 EXPECT_TRUE(y > 50 && y < 100); | 7049 EXPECT_TRUE(y > 50 && y < 100); |
7048 EXPECT_EQ(scrolling_layer, host_impl_->CurrentlyScrollingLayer()); | 7050 EXPECT_EQ(scrolling_layer, host_impl_->CurrentlyScrollingLayer()); |
7049 | 7051 |
7050 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(250)); | 7052 host_impl_->Animate(start_time + base::TimeDelta::FromMilliseconds(250)); |
7051 host_impl_->UpdateAnimationState(true); | 7053 host_impl_->UpdateAnimationState(true); |
7052 | 7054 |
7053 EXPECT_EQ(gfx::Vector2dF(0, 100), scrolling_layer->TotalScrollOffset()); | 7055 EXPECT_VECTOR_EQ(gfx::ScrollOffset(0, 100), |
| 7056 scrolling_layer->TotalScrollOffset()); |
7054 EXPECT_EQ(NULL, host_impl_->CurrentlyScrollingLayer()); | 7057 EXPECT_EQ(NULL, host_impl_->CurrentlyScrollingLayer()); |
7055 } | 7058 } |
7056 | 7059 |
7057 TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairs) { | 7060 TEST_F(LayerTreeHostImplTest, GetPictureLayerImplPairs) { |
7058 host_impl_->CreatePendingTree(); | 7061 host_impl_->CreatePendingTree(); |
7059 host_impl_->ActivateSyncTree(); | 7062 host_impl_->ActivateSyncTree(); |
7060 host_impl_->CreatePendingTree(); | 7063 host_impl_->CreatePendingTree(); |
7061 | 7064 |
7062 LayerTreeImpl* active_tree = host_impl_->active_tree(); | 7065 LayerTreeImpl* active_tree = host_impl_->active_tree(); |
7063 LayerTreeImpl* pending_tree = host_impl_->pending_tree(); | 7066 LayerTreeImpl* pending_tree = host_impl_->pending_tree(); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7167 // surface. | 7170 // surface. |
7168 EXPECT_EQ(0, num_lost_surfaces_); | 7171 EXPECT_EQ(0, num_lost_surfaces_); |
7169 host_impl_->DidLoseOutputSurface(); | 7172 host_impl_->DidLoseOutputSurface(); |
7170 EXPECT_EQ(1, num_lost_surfaces_); | 7173 EXPECT_EQ(1, num_lost_surfaces_); |
7171 host_impl_->DidLoseOutputSurface(); | 7174 host_impl_->DidLoseOutputSurface(); |
7172 EXPECT_LE(1, num_lost_surfaces_); | 7175 EXPECT_LE(1, num_lost_surfaces_); |
7173 } | 7176 } |
7174 | 7177 |
7175 } // namespace | 7178 } // namespace |
7176 } // namespace cc | 7179 } // namespace cc |
OLD | NEW |