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 3000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3011 | 3011 |
3012 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { | 3012 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { |
3013 public: | 3013 public: |
3014 TestScrollOffsetDelegate() | 3014 TestScrollOffsetDelegate() |
3015 : page_scale_factor_(0.f), | 3015 : page_scale_factor_(0.f), |
3016 min_page_scale_factor_(-1.f), | 3016 min_page_scale_factor_(-1.f), |
3017 max_page_scale_factor_(-1.f) {} | 3017 max_page_scale_factor_(-1.f) {} |
3018 | 3018 |
3019 virtual ~TestScrollOffsetDelegate() {} | 3019 virtual ~TestScrollOffsetDelegate() {} |
3020 | 3020 |
3021 virtual void SetMaxScrollOffset( | |
3022 const gfx::Vector2dF& max_scroll_offset) OVERRIDE { | |
3023 max_scroll_offset_ = max_scroll_offset; | |
3024 } | |
3025 | |
3026 virtual void SetTotalScrollOffset(const gfx::Vector2dF& new_value) OVERRIDE { | |
3027 last_set_scroll_offset_ = new_value; | |
3028 } | |
3029 | |
3030 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE { | 3021 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE { |
3031 return getter_return_value_; | 3022 return getter_return_value_; |
3032 } | 3023 } |
3033 | 3024 |
3034 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } | 3025 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } |
3035 | 3026 |
3036 virtual void SetTotalPageScaleFactorAndLimits( | 3027 virtual void UpdateRootLayerState(const gfx::Vector2dF& total_scroll_offset, |
3037 float page_scale_factor, | 3028 const gfx::Vector2dF& max_scroll_offset, |
3038 float min_page_scale_factor, | 3029 const gfx::SizeF& scrollable_size, |
3039 float max_page_scale_factor) OVERRIDE { | 3030 float page_scale_factor, |
| 3031 float min_page_scale_factor, |
| 3032 float max_page_scale_factor) OVERRIDE { |
| 3033 DCHECK(total_scroll_offset.x() <= max_scroll_offset.x()); |
| 3034 DCHECK(total_scroll_offset.y() <= max_scroll_offset.y()); |
| 3035 last_set_scroll_offset_ = total_scroll_offset; |
| 3036 max_scroll_offset_ = max_scroll_offset; |
| 3037 scrollable_size_ = scrollable_size; |
3040 page_scale_factor_ = page_scale_factor; | 3038 page_scale_factor_ = page_scale_factor; |
3041 min_page_scale_factor_ = min_page_scale_factor; | 3039 min_page_scale_factor_ = min_page_scale_factor; |
3042 max_page_scale_factor_ = max_page_scale_factor; | 3040 max_page_scale_factor_ = max_page_scale_factor; |
3043 } | 3041 } |
3044 | 3042 |
3045 virtual void SetScrollableSize(const gfx::SizeF& scrollable_size) OVERRIDE { | |
3046 scrollable_size_ = scrollable_size; | |
3047 } | |
3048 | |
3049 gfx::Vector2dF last_set_scroll_offset() { | 3043 gfx::Vector2dF last_set_scroll_offset() { |
3050 return last_set_scroll_offset_; | 3044 return last_set_scroll_offset_; |
3051 } | 3045 } |
3052 | 3046 |
3053 void set_getter_return_value(const gfx::Vector2dF& value) { | 3047 void set_getter_return_value(const gfx::Vector2dF& value) { |
3054 getter_return_value_ = value; | 3048 getter_return_value_ = value; |
3055 } | 3049 } |
3056 | 3050 |
3057 gfx::Vector2dF max_scroll_offset() const { | 3051 gfx::Vector2dF max_scroll_offset() const { |
3058 return max_scroll_offset_; | 3052 return max_scroll_offset_; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3115 host_impl_->active_tree()->SetPageScaleDelta(1.5f); | 3109 host_impl_->active_tree()->SetPageScaleDelta(1.5f); |
3116 EXPECT_EQ(3.f, scroll_delegate.page_scale_factor()); | 3110 EXPECT_EQ(3.f, scroll_delegate.page_scale_factor()); |
3117 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); | 3111 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); |
3118 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); | 3112 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); |
3119 host_impl_->active_tree()->SetPageScaleDelta(1.f); | 3113 host_impl_->active_tree()->SetPageScaleDelta(1.f); |
3120 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); | 3114 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); |
3121 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); | 3115 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); |
3122 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); | 3116 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); |
3123 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); | 3117 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); |
3124 | 3118 |
| 3119 // The pinch gesture doesn't put the delegate into a state where the scroll |
| 3120 // offset is outside of the scroll range. (this is verified by DCHECKs in the |
| 3121 // delegate). |
| 3122 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); |
| 3123 host_impl_->PinchGestureBegin(); |
| 3124 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); |
| 3125 host_impl_->PinchGestureUpdate(.5f, gfx::Point()); |
| 3126 host_impl_->PinchGestureEnd(); |
| 3127 host_impl_->ScrollEnd(); |
| 3128 |
3125 // Scrolling should be relative to the offset as returned by the delegate. | 3129 // Scrolling should be relative to the offset as returned by the delegate. |
3126 gfx::Vector2dF scroll_delta(0.f, 10.f); | 3130 gfx::Vector2dF scroll_delta(0.f, 10.f); |
3127 gfx::Vector2dF current_offset(7.f, 8.f); | 3131 gfx::Vector2dF current_offset(7.f, 8.f); |
3128 | 3132 |
3129 scroll_delegate.set_getter_return_value(current_offset); | 3133 scroll_delegate.set_getter_return_value(current_offset); |
3130 EXPECT_EQ(InputHandler::ScrollStarted, | 3134 EXPECT_EQ(InputHandler::ScrollStarted, |
3131 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 3135 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
3132 | 3136 |
3133 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3137 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
3134 EXPECT_EQ(current_offset + scroll_delta, | 3138 EXPECT_EQ(current_offset + scroll_delta, |
3135 scroll_delegate.last_set_scroll_offset()); | 3139 scroll_delegate.last_set_scroll_offset()); |
3136 | 3140 |
3137 current_offset = gfx::Vector2dF(42.f, 41.f); | 3141 current_offset = gfx::Vector2dF(42.f, 41.f); |
3138 scroll_delegate.set_getter_return_value(current_offset); | 3142 scroll_delegate.set_getter_return_value(current_offset); |
3139 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3143 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
3140 EXPECT_EQ(current_offset + scroll_delta, | 3144 EXPECT_EQ(current_offset + scroll_delta, |
3141 scroll_delegate.last_set_scroll_offset()); | 3145 scroll_delegate.last_set_scroll_offset()); |
3142 host_impl_->ScrollEnd(); | 3146 host_impl_->ScrollEnd(); |
| 3147 scroll_delegate.set_getter_return_value(gfx::Vector2dF()); |
3143 | 3148 |
3144 // Forces a full tree synchronization and ensures that the scroll delegate | 3149 // Forces a full tree synchronization and ensures that the scroll delegate |
3145 // sees the correct size of the new tree. | 3150 // sees the correct size of the new tree. |
3146 gfx::Size new_size(42, 24); | 3151 gfx::Size new_size(42, 24); |
3147 host_impl_->CreatePendingTree(); | 3152 host_impl_->CreatePendingTree(); |
3148 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); | 3153 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); |
3149 host_impl_->ActivatePendingTree(); | 3154 host_impl_->ActivatePendingTree(); |
3150 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); | 3155 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); |
3151 | 3156 |
3152 // Un-setting the delegate should propagate the delegate's current offset to | 3157 // Un-setting the delegate should propagate the delegate's current offset to |
(...skipping 3433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6586 FakePictureLayerImpl* active_mask_content = | 6591 FakePictureLayerImpl* active_mask_content = |
6587 static_cast<FakePictureLayerImpl*>( | 6592 static_cast<FakePictureLayerImpl*>( |
6588 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); | 6593 host_impl_->active_tree()->root_layer()->children()[0]->mask_layer()); |
6589 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); | 6594 gfx::Rect r2 = active_mask_content->visible_rect_for_tile_priority(); |
6590 | 6595 |
6591 ASSERT_TRUE(!r2.IsEmpty()); | 6596 ASSERT_TRUE(!r2.IsEmpty()); |
6592 } | 6597 } |
6593 | 6598 |
6594 } // namespace | 6599 } // namespace |
6595 } // namespace cc | 6600 } // namespace cc |
OLD | NEW |