| 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 2849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2860 | 2860 |
| 2861 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { | 2861 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { |
| 2862 public: | 2862 public: |
| 2863 TestScrollOffsetDelegate() | 2863 TestScrollOffsetDelegate() |
| 2864 : page_scale_factor_(0.f), | 2864 : page_scale_factor_(0.f), |
| 2865 min_page_scale_factor_(-1.f), | 2865 min_page_scale_factor_(-1.f), |
| 2866 max_page_scale_factor_(-1.f) {} | 2866 max_page_scale_factor_(-1.f) {} |
| 2867 | 2867 |
| 2868 virtual ~TestScrollOffsetDelegate() {} | 2868 virtual ~TestScrollOffsetDelegate() {} |
| 2869 | 2869 |
| 2870 virtual void SetMaxScrollOffset( | |
| 2871 const gfx::Vector2dF& max_scroll_offset) OVERRIDE { | |
| 2872 max_scroll_offset_ = max_scroll_offset; | |
| 2873 } | |
| 2874 | |
| 2875 virtual void SetTotalScrollOffset(const gfx::Vector2dF& new_value) OVERRIDE { | 2870 virtual void SetTotalScrollOffset(const gfx::Vector2dF& new_value) OVERRIDE { |
| 2876 last_set_scroll_offset_ = new_value; | 2871 last_set_scroll_offset_ = new_value; |
| 2872 CheckScrollOffsetWithinBounds(); |
| 2877 } | 2873 } |
| 2878 | 2874 |
| 2879 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE { | 2875 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE { |
| 2880 return getter_return_value_; | 2876 return getter_return_value_; |
| 2881 } | 2877 } |
| 2882 | 2878 |
| 2883 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } | 2879 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } |
| 2884 | 2880 |
| 2885 virtual void SetTotalPageScaleFactorAndLimits( | 2881 virtual void UpdateRootLayerState(const gfx::Vector2dF& total_scroll_offset, |
| 2886 float page_scale_factor, | 2882 const gfx::Vector2dF& max_scroll_offset, |
| 2887 float min_page_scale_factor, | 2883 const gfx::SizeF& scrollable_size, |
| 2888 float max_page_scale_factor) OVERRIDE { | 2884 float page_scale_factor, |
| 2885 float min_page_scale_factor, |
| 2886 float max_page_scale_factor) OVERRIDE { |
| 2887 last_set_scroll_offset_ = total_scroll_offset; |
| 2888 max_scroll_offset_ = max_scroll_offset; |
| 2889 scrollable_size_ = scrollable_size; |
| 2889 page_scale_factor_ = page_scale_factor; | 2890 page_scale_factor_ = page_scale_factor; |
| 2890 min_page_scale_factor_ = min_page_scale_factor; | 2891 min_page_scale_factor_ = min_page_scale_factor; |
| 2891 max_page_scale_factor_ = max_page_scale_factor; | 2892 max_page_scale_factor_ = max_page_scale_factor; |
| 2892 } | 2893 CheckScrollOffsetWithinBounds(); |
| 2893 | |
| 2894 virtual void SetScrollableSize(const gfx::SizeF& scrollable_size) OVERRIDE { | |
| 2895 scrollable_size_ = scrollable_size; | |
| 2896 } | 2894 } |
| 2897 | 2895 |
| 2898 gfx::Vector2dF last_set_scroll_offset() { | 2896 gfx::Vector2dF last_set_scroll_offset() { |
| 2899 return last_set_scroll_offset_; | 2897 return last_set_scroll_offset_; |
| 2900 } | 2898 } |
| 2901 | 2899 |
| 2902 void set_getter_return_value(const gfx::Vector2dF& value) { | 2900 void set_getter_return_value(const gfx::Vector2dF& value) { |
| 2903 getter_return_value_ = value; | 2901 getter_return_value_ = value; |
| 2904 } | 2902 } |
| 2905 | 2903 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2917 | 2915 |
| 2918 float min_page_scale_factor() const { | 2916 float min_page_scale_factor() const { |
| 2919 return min_page_scale_factor_; | 2917 return min_page_scale_factor_; |
| 2920 } | 2918 } |
| 2921 | 2919 |
| 2922 float max_page_scale_factor() const { | 2920 float max_page_scale_factor() const { |
| 2923 return max_page_scale_factor_; | 2921 return max_page_scale_factor_; |
| 2924 } | 2922 } |
| 2925 | 2923 |
| 2926 private: | 2924 private: |
| 2925 void CheckScrollOffsetWithinBounds() { |
| 2926 DCHECK(last_set_scroll_offset_.x() <= max_scroll_offset_.x()); |
| 2927 DCHECK(last_set_scroll_offset_.y() <= max_scroll_offset_.y()); |
| 2928 } |
| 2929 |
| 2927 gfx::Vector2dF last_set_scroll_offset_; | 2930 gfx::Vector2dF last_set_scroll_offset_; |
| 2928 gfx::Vector2dF getter_return_value_; | 2931 gfx::Vector2dF getter_return_value_; |
| 2929 gfx::Vector2dF max_scroll_offset_; | 2932 gfx::Vector2dF max_scroll_offset_; |
| 2930 gfx::SizeF scrollable_size_; | 2933 gfx::SizeF scrollable_size_; |
| 2931 float page_scale_factor_; | 2934 float page_scale_factor_; |
| 2932 float min_page_scale_factor_; | 2935 float min_page_scale_factor_; |
| 2933 float max_page_scale_factor_; | 2936 float max_page_scale_factor_; |
| 2934 }; | 2937 }; |
| 2935 | 2938 |
| 2936 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { | 2939 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2964 host_impl_->active_tree()->SetPageScaleDelta(1.5f); | 2967 host_impl_->active_tree()->SetPageScaleDelta(1.5f); |
| 2965 EXPECT_EQ(3.f, scroll_delegate.page_scale_factor()); | 2968 EXPECT_EQ(3.f, scroll_delegate.page_scale_factor()); |
| 2966 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); | 2969 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); |
| 2967 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); | 2970 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); |
| 2968 host_impl_->active_tree()->SetPageScaleDelta(1.f); | 2971 host_impl_->active_tree()->SetPageScaleDelta(1.f); |
| 2969 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); | 2972 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); |
| 2970 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); | 2973 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); |
| 2971 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); | 2974 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); |
| 2972 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); | 2975 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); |
| 2973 | 2976 |
| 2977 // The pinch gesture doesn't put the delegate into a state where the scroll |
| 2978 // offset is outside of the scroll range. (this is verified by DCHECKs in the |
| 2979 // delegate). |
| 2980 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture); |
| 2981 host_impl_->PinchGestureBegin(); |
| 2982 host_impl_->PinchGestureUpdate(2.f, gfx::Point()); |
| 2983 host_impl_->PinchGestureUpdate(.5f, gfx::Point()); |
| 2984 host_impl_->PinchGestureEnd(); |
| 2985 host_impl_->ScrollEnd(); |
| 2986 |
| 2974 // Scrolling should be relative to the offset as returned by the delegate. | 2987 // Scrolling should be relative to the offset as returned by the delegate. |
| 2975 gfx::Vector2dF scroll_delta(0.f, 10.f); | 2988 gfx::Vector2dF scroll_delta(0.f, 10.f); |
| 2976 gfx::Vector2dF current_offset(7.f, 8.f); | 2989 gfx::Vector2dF current_offset(7.f, 8.f); |
| 2977 | 2990 |
| 2978 scroll_delegate.set_getter_return_value(current_offset); | 2991 scroll_delegate.set_getter_return_value(current_offset); |
| 2979 EXPECT_EQ(InputHandler::ScrollStarted, | 2992 EXPECT_EQ(InputHandler::ScrollStarted, |
| 2980 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); | 2993 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); |
| 2981 | 2994 |
| 2982 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 2995 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 2983 EXPECT_EQ(current_offset + scroll_delta, | 2996 EXPECT_EQ(current_offset + scroll_delta, |
| 2984 scroll_delegate.last_set_scroll_offset()); | 2997 scroll_delegate.last_set_scroll_offset()); |
| 2985 | 2998 |
| 2986 current_offset = gfx::Vector2dF(42.f, 41.f); | 2999 current_offset = gfx::Vector2dF(42.f, 41.f); |
| 2987 scroll_delegate.set_getter_return_value(current_offset); | 3000 scroll_delegate.set_getter_return_value(current_offset); |
| 2988 host_impl_->ScrollBy(gfx::Point(), scroll_delta); | 3001 host_impl_->ScrollBy(gfx::Point(), scroll_delta); |
| 2989 EXPECT_EQ(current_offset + scroll_delta, | 3002 EXPECT_EQ(current_offset + scroll_delta, |
| 2990 scroll_delegate.last_set_scroll_offset()); | 3003 scroll_delegate.last_set_scroll_offset()); |
| 2991 host_impl_->ScrollEnd(); | 3004 host_impl_->ScrollEnd(); |
| 3005 scroll_delegate.set_getter_return_value(gfx::Vector2dF()); |
| 2992 | 3006 |
| 2993 // Forces a full tree synchronization and ensures that the scroll delegate | 3007 // Forces a full tree synchronization and ensures that the scroll delegate |
| 2994 // sees the correct size of the new tree. | 3008 // sees the correct size of the new tree. |
| 2995 gfx::Size new_size(42, 24); | 3009 gfx::Size new_size(42, 24); |
| 2996 host_impl_->CreatePendingTree(); | 3010 host_impl_->CreatePendingTree(); |
| 2997 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); | 3011 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); |
| 2998 host_impl_->ActivatePendingTree(); | 3012 host_impl_->ActivatePendingTree(); |
| 2999 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); | 3013 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); |
| 3000 | 3014 |
| 3001 // Un-setting the delegate should propagate the delegate's current offset to | 3015 // Un-setting the delegate should propagate the delegate's current offset to |
| (...skipping 3384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6386 EXPECT_EQ(host_impl_->global_tile_state().hard_memory_limit_in_bytes, | 6400 EXPECT_EQ(host_impl_->global_tile_state().hard_memory_limit_in_bytes, |
| 6387 300u * 1024u * 1024u); | 6401 300u * 1024u * 1024u); |
| 6388 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, | 6402 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, |
| 6389 150u * 1024u * 1024u); | 6403 150u * 1024u * 1024u); |
| 6390 EXPECT_EQ(host_impl_->global_tile_state().unused_memory_limit_in_bytes, | 6404 EXPECT_EQ(host_impl_->global_tile_state().unused_memory_limit_in_bytes, |
| 6391 75u * 1024u * 1024u); | 6405 75u * 1024u * 1024u); |
| 6392 } | 6406 } |
| 6393 | 6407 |
| 6394 } // namespace | 6408 } // namespace |
| 6395 } // namespace cc | 6409 } // namespace cc |
| OLD | NEW |