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

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: 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 3012 matching lines...) Expand 10 before | Expand all | Expand 10 after
3023 3023
3024 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate { 3024 class TestScrollOffsetDelegate : public LayerScrollOffsetDelegate {
3025 public: 3025 public:
3026 TestScrollOffsetDelegate() 3026 TestScrollOffsetDelegate()
3027 : page_scale_factor_(0.f), 3027 : page_scale_factor_(0.f),
3028 min_page_scale_factor_(-1.f), 3028 min_page_scale_factor_(-1.f),
3029 max_page_scale_factor_(-1.f) {} 3029 max_page_scale_factor_(-1.f) {}
3030 3030
3031 virtual ~TestScrollOffsetDelegate() {} 3031 virtual ~TestScrollOffsetDelegate() {}
3032 3032
3033 virtual void SetMaxScrollOffset(
3034 const gfx::Vector2dF& max_scroll_offset) OVERRIDE {
3035 max_scroll_offset_ = max_scroll_offset;
3036 }
3037
3038 virtual void SetTotalScrollOffset(const gfx::Vector2dF& new_value) OVERRIDE { 3033 virtual void SetTotalScrollOffset(const gfx::Vector2dF& new_value) OVERRIDE {
3039 last_set_scroll_offset_ = new_value; 3034 last_set_scroll_offset_ = new_value;
3035 CheckScrollOffsetWithinBounds();
3040 } 3036 }
3041 3037
3042 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE { 3038 virtual gfx::Vector2dF GetTotalScrollOffset() OVERRIDE {
3043 return getter_return_value_; 3039 return getter_return_value_;
3044 } 3040 }
3045 3041
3046 virtual bool IsExternalFlingActive() const OVERRIDE { return false; } 3042 virtual bool IsExternalFlingActive() const OVERRIDE { return false; }
3047 3043
3048 virtual void SetTotalPageScaleFactorAndLimits( 3044 virtual void UpdateRootLayerState(const gfx::Vector2dF& total_scroll_offset,
3049 float page_scale_factor, 3045 const gfx::Vector2dF& max_scroll_offset,
3050 float min_page_scale_factor, 3046 const gfx::SizeF& scrollable_size,
3051 float max_page_scale_factor) OVERRIDE { 3047 float page_scale_factor,
3048 float min_page_scale_factor,
3049 float max_page_scale_factor) OVERRIDE {
3050 last_set_scroll_offset_ = total_scroll_offset;
3051 max_scroll_offset_ = max_scroll_offset;
3052 scrollable_size_ = scrollable_size;
3052 page_scale_factor_ = page_scale_factor; 3053 page_scale_factor_ = page_scale_factor;
3053 min_page_scale_factor_ = min_page_scale_factor; 3054 min_page_scale_factor_ = min_page_scale_factor;
3054 max_page_scale_factor_ = max_page_scale_factor; 3055 max_page_scale_factor_ = max_page_scale_factor;
3055 } 3056 CheckScrollOffsetWithinBounds();
3056
3057 virtual void SetScrollableSize(const gfx::SizeF& scrollable_size) OVERRIDE {
3058 scrollable_size_ = scrollable_size;
3059 } 3057 }
3060 3058
3061 gfx::Vector2dF last_set_scroll_offset() { 3059 gfx::Vector2dF last_set_scroll_offset() {
3062 return last_set_scroll_offset_; 3060 return last_set_scroll_offset_;
3063 } 3061 }
3064 3062
3065 void set_getter_return_value(const gfx::Vector2dF& value) { 3063 void set_getter_return_value(const gfx::Vector2dF& value) {
3066 getter_return_value_ = value; 3064 getter_return_value_ = value;
3067 } 3065 }
3068 3066
(...skipping 11 matching lines...) Expand all
3080 3078
3081 float min_page_scale_factor() const { 3079 float min_page_scale_factor() const {
3082 return min_page_scale_factor_; 3080 return min_page_scale_factor_;
3083 } 3081 }
3084 3082
3085 float max_page_scale_factor() const { 3083 float max_page_scale_factor() const {
3086 return max_page_scale_factor_; 3084 return max_page_scale_factor_;
3087 } 3085 }
3088 3086
3089 private: 3087 private:
3088 void CheckScrollOffsetWithinBounds() {
3089 DCHECK(last_set_scroll_offset_.x() <= max_scroll_offset_.x());
3090 DCHECK(last_set_scroll_offset_.y() <= max_scroll_offset_.y());
3091 }
3092
3090 gfx::Vector2dF last_set_scroll_offset_; 3093 gfx::Vector2dF last_set_scroll_offset_;
3091 gfx::Vector2dF getter_return_value_; 3094 gfx::Vector2dF getter_return_value_;
3092 gfx::Vector2dF max_scroll_offset_; 3095 gfx::Vector2dF max_scroll_offset_;
3093 gfx::SizeF scrollable_size_; 3096 gfx::SizeF scrollable_size_;
3094 float page_scale_factor_; 3097 float page_scale_factor_;
3095 float min_page_scale_factor_; 3098 float min_page_scale_factor_;
3096 float max_page_scale_factor_; 3099 float max_page_scale_factor_;
3097 }; 3100 };
3098 3101
3099 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) { 3102 TEST_F(LayerTreeHostImplTest, RootLayerScrollOffsetDelegation) {
(...skipping 27 matching lines...) Expand all
3127 host_impl_->active_tree()->SetPageScaleDelta(1.5f); 3130 host_impl_->active_tree()->SetPageScaleDelta(1.5f);
3128 EXPECT_EQ(3.f, scroll_delegate.page_scale_factor()); 3131 EXPECT_EQ(3.f, scroll_delegate.page_scale_factor());
3129 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); 3132 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor());
3130 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); 3133 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor());
3131 host_impl_->active_tree()->SetPageScaleDelta(1.f); 3134 host_impl_->active_tree()->SetPageScaleDelta(1.f);
3132 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f); 3135 host_impl_->active_tree()->SetPageScaleFactorAndLimits(1.f, 0.5f, 4.f);
3133 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor()); 3136 EXPECT_EQ(1.f, scroll_delegate.page_scale_factor());
3134 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor()); 3137 EXPECT_EQ(0.5f, scroll_delegate.min_page_scale_factor());
3135 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor()); 3138 EXPECT_EQ(4.f, scroll_delegate.max_page_scale_factor());
3136 3139
3140 // The pinch gesture doesn't put the delegate into a state where the scroll
3141 // offset is outside of the scroll range. (this is verified by DCHECKs in the
3142 // delegate).
3143 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture);
3144 host_impl_->PinchGestureBegin();
3145 host_impl_->PinchGestureUpdate(2.f, gfx::Point());
3146 host_impl_->PinchGestureUpdate(.5f, gfx::Point());
3147 host_impl_->PinchGestureEnd();
3148 host_impl_->ScrollEnd();
3149
3137 // Scrolling should be relative to the offset as returned by the delegate. 3150 // Scrolling should be relative to the offset as returned by the delegate.
3138 gfx::Vector2dF scroll_delta(0.f, 10.f); 3151 gfx::Vector2dF scroll_delta(0.f, 10.f);
3139 gfx::Vector2dF current_offset(7.f, 8.f); 3152 gfx::Vector2dF current_offset(7.f, 8.f);
3140 3153
3141 scroll_delegate.set_getter_return_value(current_offset); 3154 scroll_delegate.set_getter_return_value(current_offset);
3142 EXPECT_EQ(InputHandler::ScrollStarted, 3155 EXPECT_EQ(InputHandler::ScrollStarted,
3143 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture)); 3156 host_impl_->ScrollBegin(gfx::Point(), InputHandler::Gesture));
3144 3157
3145 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3158 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3146 EXPECT_EQ(current_offset + scroll_delta, 3159 EXPECT_EQ(current_offset + scroll_delta,
3147 scroll_delegate.last_set_scroll_offset()); 3160 scroll_delegate.last_set_scroll_offset());
3148 3161
3149 current_offset = gfx::Vector2dF(42.f, 41.f); 3162 current_offset = gfx::Vector2dF(42.f, 41.f);
3150 scroll_delegate.set_getter_return_value(current_offset); 3163 scroll_delegate.set_getter_return_value(current_offset);
3151 host_impl_->ScrollBy(gfx::Point(), scroll_delta); 3164 host_impl_->ScrollBy(gfx::Point(), scroll_delta);
3152 EXPECT_EQ(current_offset + scroll_delta, 3165 EXPECT_EQ(current_offset + scroll_delta,
3153 scroll_delegate.last_set_scroll_offset()); 3166 scroll_delegate.last_set_scroll_offset());
3154 host_impl_->ScrollEnd(); 3167 host_impl_->ScrollEnd();
3168 scroll_delegate.set_getter_return_value(gfx::Vector2dF());
3155 3169
3156 // Forces a full tree synchronization and ensures that the scroll delegate 3170 // Forces a full tree synchronization and ensures that the scroll delegate
3157 // sees the correct size of the new tree. 3171 // sees the correct size of the new tree.
3158 gfx::Size new_size(42, 24); 3172 gfx::Size new_size(42, 24);
3159 host_impl_->CreatePendingTree(); 3173 host_impl_->CreatePendingTree();
3160 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size); 3174 CreateScrollAndContentsLayers(host_impl_->pending_tree(), new_size);
3161 host_impl_->ActivatePendingTree(); 3175 host_impl_->ActivatePendingTree();
3162 EXPECT_EQ(new_size, scroll_delegate.scrollable_size()); 3176 EXPECT_EQ(new_size, scroll_delegate.scrollable_size());
3163 3177
3164 // Un-setting the delegate should propagate the delegate's current offset to 3178 // Un-setting the delegate should propagate the delegate's current offset to
(...skipping 3322 matching lines...) Expand 10 before | Expand all | Expand 10 after
6487 // Verify implicit limits are calculated correctly with no overflows 6501 // Verify implicit limits are calculated correctly with no overflows
6488 host_impl_->SetMemoryPolicy(mem_policy); 6502 host_impl_->SetMemoryPolicy(mem_policy);
6489 EXPECT_EQ(host_impl_->global_tile_state().hard_memory_limit_in_bytes, 6503 EXPECT_EQ(host_impl_->global_tile_state().hard_memory_limit_in_bytes,
6490 300u * 1024u * 1024u); 6504 300u * 1024u * 1024u);
6491 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes, 6505 EXPECT_EQ(host_impl_->global_tile_state().soft_memory_limit_in_bytes,
6492 150u * 1024u * 1024u); 6506 150u * 1024u * 1024u);
6493 } 6507 }
6494 6508
6495 } // namespace 6509 } // namespace
6496 } // namespace cc 6510 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698