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

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: rebase 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 3000 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698