Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(739)

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 256303006: Make LayerScrollOffsetDelegate updates consistent. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: less jni Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698