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

Side by Side Diff: cc/input/top_controls_manager_unittest.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
« no previous file with comments | « cc/input/top_controls_manager_client.h ('k') | cc/layers/delegated_renderer_layer_impl.h » ('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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/input/top_controls_manager.h" 5 #include "cc/input/top_controls_manager.h"
6 6
7 #include <algorithm>
8
7 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
8 #include "base/time/time.h" 10 #include "base/time/time.h"
9 #include "cc/input/top_controls_manager_client.h" 11 #include "cc/input/top_controls_manager_client.h"
10 #include "cc/layers/layer_impl.h" 12 #include "cc/layers/layer_impl.h"
11 #include "cc/test/fake_impl_proxy.h" 13 #include "cc/test/fake_impl_proxy.h"
12 #include "cc/test/fake_layer_tree_host_impl.h" 14 #include "cc/test/fake_layer_tree_host_impl.h"
13 #include "cc/test/test_shared_bitmap_manager.h" 15 #include "cc/test/test_shared_bitmap_manager.h"
14 #include "cc/trees/layer_tree_impl.h" 16 #include "cc/trees/layer_tree_impl.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 #include "ui/gfx/frame_time.h" 18 #include "ui/gfx/frame_time.h"
17 #include "ui/gfx/geometry/vector2d_f.h" 19 #include "ui/gfx/geometry/vector2d_f.h"
18 20
19 namespace cc { 21 namespace cc {
20 namespace { 22 namespace {
21 23
22 class MockTopControlsManagerClient : public TopControlsManagerClient { 24 class MockTopControlsManagerClient : public TopControlsManagerClient {
23 public: 25 public:
24 MockTopControlsManagerClient(float top_controls_height, 26 MockTopControlsManagerClient(float top_controls_height,
25 float top_controls_show_threshold, 27 float top_controls_show_threshold,
26 float top_controls_hide_threshold) 28 float top_controls_hide_threshold)
27 : host_impl_(&proxy_, &shared_bitmap_manager_), 29 : host_impl_(&proxy_, &shared_bitmap_manager_),
28 redraw_needed_(false), 30 redraw_needed_(false),
29 update_draw_properties_needed_(false), 31 update_draw_properties_needed_(false),
30 top_controls_top_offset_(0.f), 32 top_controls_shown_ratio_(1.f),
31 top_controls_height_(top_controls_height), 33 top_controls_height_(top_controls_height),
32 top_controls_show_threshold_(top_controls_show_threshold), 34 top_controls_show_threshold_(top_controls_show_threshold),
33 top_controls_hide_threshold_(top_controls_hide_threshold) { 35 top_controls_hide_threshold_(top_controls_hide_threshold) {
34 active_tree_ = 36 active_tree_ = LayerTreeImpl::create(
35 LayerTreeImpl::create(&host_impl_, new SyncedProperty<ScaleGroup>, 37 &host_impl_, new SyncedProperty<ScaleGroup>, new SyncedTopControls,
36 new SyncedElasticOverscroll); 38 new SyncedElasticOverscroll);
37 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1); 39 root_scroll_layer_ = LayerImpl::Create(active_tree_.get(), 1);
38 } 40 }
39 41
40 ~MockTopControlsManagerClient() override {} 42 ~MockTopControlsManagerClient() override {}
41 43
42 void DidChangeTopControlsPosition() override { 44 void DidChangeTopControlsPosition() override {
43 redraw_needed_ = true; 45 redraw_needed_ = true;
44 update_draw_properties_needed_ = true; 46 update_draw_properties_needed_ = true;
45 } 47 }
46 48
47 bool HaveRootScrollLayer() const override { return true; } 49 bool HaveRootScrollLayer() const override { return true; }
48 50
49 void SetControlsTopOffset(float offset) override { 51 float TopControlsHeight() const override { return top_controls_height_; }
50 top_controls_top_offset_ = offset; 52
53 void SetCurrentTopControlsShownRatio(float ratio) override {
54 ratio = std::max(ratio, 0.f);
55 ratio = std::min(ratio, 1.f);
56 top_controls_shown_ratio_ = ratio;
51 } 57 }
52 58
53 float ControlsTopOffset() const override { return top_controls_top_offset_; } 59 float CurrentTopControlsShownRatio() const override {
60 return top_controls_shown_ratio_;
61 }
54 62
55 LayerImpl* rootScrollLayer() { 63 LayerImpl* rootScrollLayer() {
56 return root_scroll_layer_.get(); 64 return root_scroll_layer_.get();
57 } 65 }
58 66
59 TopControlsManager* manager() { 67 TopControlsManager* manager() {
60 if (!manager_) { 68 if (!manager_) {
61 manager_ = TopControlsManager::Create(this, 69 manager_ = TopControlsManager::Create(this,
62 top_controls_show_threshold_, 70 top_controls_show_threshold_,
63 top_controls_hide_threshold_); 71 top_controls_hide_threshold_);
64 manager_->SetTopControlsHeight(top_controls_height_);
65 } 72 }
66 return manager_.get(); 73 return manager_.get();
67 } 74 }
68 75
76 void SetTopControlsHeight(float height) { top_controls_height_ = height; }
77
69 private: 78 private:
70 FakeImplProxy proxy_; 79 FakeImplProxy proxy_;
71 TestSharedBitmapManager shared_bitmap_manager_; 80 TestSharedBitmapManager shared_bitmap_manager_;
72 FakeLayerTreeHostImpl host_impl_; 81 FakeLayerTreeHostImpl host_impl_;
73 scoped_ptr<LayerTreeImpl> active_tree_; 82 scoped_ptr<LayerTreeImpl> active_tree_;
74 scoped_ptr<LayerImpl> root_scroll_layer_; 83 scoped_ptr<LayerImpl> root_scroll_layer_;
75 scoped_ptr<TopControlsManager> manager_; 84 scoped_ptr<TopControlsManager> manager_;
76 bool redraw_needed_; 85 bool redraw_needed_;
77 bool update_draw_properties_needed_; 86 bool update_draw_properties_needed_;
78 87
79 float top_controls_top_offset_; 88 float top_controls_shown_ratio_;
80 float top_controls_height_; 89 float top_controls_height_;
81 float top_controls_show_threshold_; 90 float top_controls_show_threshold_;
82 float top_controls_hide_threshold_; 91 float top_controls_hide_threshold_;
83 }; 92 };
84 93
85 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) { 94 TEST(TopControlsManagerTest, EnsureScrollThresholdApplied) {
86 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 95 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
87 TopControlsManager* manager = client.manager(); 96 TopControlsManager* manager = client.manager();
88 97
89 manager->ScrollBegin(); 98 manager->ScrollBegin();
90 99
91 // Scroll down to hide the controls entirely. 100 // Scroll down to hide the controls entirely.
92 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 101 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
93 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); 102 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset());
94 103
95 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 104 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
96 EXPECT_EQ(-60.f, manager->ControlsTopOffset()); 105 EXPECT_FLOAT_EQ(-60.f, manager->ControlsTopOffset());
97 106
98 manager->ScrollBy(gfx::Vector2dF(0.f, 100.f)); 107 manager->ScrollBy(gfx::Vector2dF(0.f, 100.f));
99 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 108 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
100 109
101 // Scroll back up a bit and ensure the controls don't move until we cross 110 // Scroll back up a bit and ensure the controls don't move until we cross
102 // the threshold. 111 // the threshold.
103 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); 112 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f));
104 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 113 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
105 114
106 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); 115 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f));
107 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 116 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
108 117
109 // After hitting the threshold, further scrolling up should result in the top 118 // After hitting the threshold, further scrolling up should result in the top
110 // controls showing. 119 // controls showing.
111 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f)); 120 manager->ScrollBy(gfx::Vector2dF(0.f, -10.f));
112 EXPECT_EQ(-90.f, manager->ControlsTopOffset()); 121 EXPECT_FLOAT_EQ(-90.f, manager->ControlsTopOffset());
113 122
114 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f)); 123 manager->ScrollBy(gfx::Vector2dF(0.f, -50.f));
115 EXPECT_EQ(-40.f, manager->ControlsTopOffset()); 124 EXPECT_FLOAT_EQ(-40.f, manager->ControlsTopOffset());
116 125
117 // Reset the scroll threshold by going further up the page than the initial 126 // Reset the scroll threshold by going further up the page than the initial
118 // threshold. 127 // threshold.
119 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f)); 128 manager->ScrollBy(gfx::Vector2dF(0.f, -100.f));
120 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 129 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
121 130
122 // See that scrolling down the page now will result in the controls hiding. 131 // See that scrolling down the page now will result in the controls hiding.
123 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); 132 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
124 EXPECT_EQ(-20.f, manager->ControlsTopOffset()); 133 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset());
125 134
126 manager->ScrollEnd(); 135 manager->ScrollEnd();
127 } 136 }
128 137
129 TEST(TopControlsManagerTest, PartialShownHideAnimation) { 138 TEST(TopControlsManagerTest, PartialShownHideAnimation) {
130 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 139 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
131 TopControlsManager* manager = client.manager(); 140 TopControlsManager* manager = client.manager();
132 manager->ScrollBegin(); 141 manager->ScrollBegin();
133 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 142 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
134 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 143 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
135 EXPECT_EQ(0.f, manager->ContentTopOffset()); 144 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
136 manager->ScrollEnd(); 145 manager->ScrollEnd();
137 146
138 manager->ScrollBegin(); 147 manager->ScrollBegin();
139 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 148 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
140 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); 149 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset());
141 EXPECT_EQ(15.f, manager->ContentTopOffset()); 150 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset());
142 manager->ScrollEnd(); 151 manager->ScrollEnd();
143 152
144 EXPECT_TRUE(manager->animation()); 153 EXPECT_TRUE(manager->animation());
145 154
146 base::TimeTicks time = gfx::FrameTime::Now(); 155 base::TimeTicks time = gfx::FrameTime::Now();
147 float previous_offset = manager->ControlsTopOffset(); 156 float previous;
148 while (manager->animation()) { 157 while (manager->animation()) {
158 previous = manager->TopControlsShownRatio();
149 time = base::TimeDelta::FromMicroseconds(100) + time; 159 time = base::TimeDelta::FromMicroseconds(100) + time;
150 manager->Animate(time); 160 manager->Animate(time);
151 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 161 EXPECT_LT(manager->TopControlsShownRatio(), previous);
152 previous_offset = manager->ControlsTopOffset();
153 } 162 }
154 EXPECT_FALSE(manager->animation()); 163 EXPECT_FALSE(manager->animation());
155 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 164 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
156 EXPECT_EQ(0.f, manager->ContentTopOffset()); 165 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
157 } 166 }
158 167
159 TEST(TopControlsManagerTest, PartialShownShowAnimation) { 168 TEST(TopControlsManagerTest, PartialShownShowAnimation) {
160 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 169 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
161 TopControlsManager* manager = client.manager(); 170 TopControlsManager* manager = client.manager();
162 manager->ScrollBegin(); 171 manager->ScrollBegin();
163 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 172 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
164 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 173 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
165 EXPECT_EQ(0.f, manager->ContentTopOffset()); 174 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
166 manager->ScrollEnd(); 175 manager->ScrollEnd();
167 176
168 manager->ScrollBegin(); 177 manager->ScrollBegin();
169 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f)); 178 manager->ScrollBy(gfx::Vector2dF(0.f, -70.f));
170 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); 179 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset());
171 EXPECT_EQ(70.f, manager->ContentTopOffset()); 180 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset());
172 manager->ScrollEnd(); 181 manager->ScrollEnd();
173 182
174 EXPECT_TRUE(manager->animation()); 183 EXPECT_TRUE(manager->animation());
175 184
176 base::TimeTicks time = gfx::FrameTime::Now(); 185 base::TimeTicks time = gfx::FrameTime::Now();
177 float previous_offset = manager->ControlsTopOffset(); 186 float previous;
178 while (manager->animation()) { 187 while (manager->animation()) {
188 previous = manager->TopControlsShownRatio();
179 time = base::TimeDelta::FromMicroseconds(100) + time; 189 time = base::TimeDelta::FromMicroseconds(100) + time;
180 manager->Animate(time); 190 manager->Animate(time);
181 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 191 EXPECT_GT(manager->TopControlsShownRatio(), previous);
182 previous_offset = manager->ControlsTopOffset();
183 } 192 }
184 EXPECT_FALSE(manager->animation()); 193 EXPECT_FALSE(manager->animation());
185 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 194 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
186 EXPECT_EQ(100.f, manager->ContentTopOffset()); 195 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset());
187 } 196 }
188 197
189 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) { 198 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdShows) {
190 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); 199 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
191 TopControlsManager* manager = client.manager(); 200 TopControlsManager* manager = client.manager();
192 201
193 manager->ScrollBegin(); 202 manager->ScrollBegin();
194 203
195 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f)); 204 manager->ScrollBy(gfx::Vector2dF(0.f, 20.f));
196 EXPECT_EQ(-20.f, manager->ControlsTopOffset()); 205 EXPECT_FLOAT_EQ(-20.f, manager->ControlsTopOffset());
197 EXPECT_EQ(80.f, manager->ContentTopOffset()); 206 EXPECT_FLOAT_EQ(80.f, manager->ContentTopOffset());
198 207
199 manager->ScrollEnd(); 208 manager->ScrollEnd();
200 EXPECT_TRUE(manager->animation()); 209 EXPECT_TRUE(manager->animation());
201 210
202 base::TimeTicks time = gfx::FrameTime::Now(); 211 base::TimeTicks time = gfx::FrameTime::Now();
203 float previous_offset = manager->ControlsTopOffset(); 212 float previous;
204 while (manager->animation()) { 213 while (manager->animation()) {
214 previous = manager->TopControlsShownRatio();
205 time = base::TimeDelta::FromMicroseconds(100) + time; 215 time = base::TimeDelta::FromMicroseconds(100) + time;
206 manager->Animate(time); 216 manager->Animate(time);
207 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 217 EXPECT_GT(manager->TopControlsShownRatio(), previous);
208 previous_offset = manager->ControlsTopOffset();
209 } 218 }
210 EXPECT_FALSE(manager->animation()); 219 EXPECT_FALSE(manager->animation());
211 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 220 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
212 EXPECT_EQ(100.f, manager->ContentTopOffset()); 221 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset());
213 } 222 }
214 223
215 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) { 224 TEST(TopControlsManagerTest, PartialHiddenWithAmbiguousThresholdHides) {
216 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); 225 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
217 TopControlsManager* manager = client.manager(); 226 TopControlsManager* manager = client.manager();
218 227
219 manager->ScrollBegin(); 228 manager->ScrollBegin();
220 229
221 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f)); 230 manager->ScrollBy(gfx::Vector2dF(0.f, 30.f));
222 EXPECT_EQ(-30.f, manager->ControlsTopOffset()); 231 EXPECT_FLOAT_EQ(-30.f, manager->ControlsTopOffset());
223 EXPECT_EQ(70.f, manager->ContentTopOffset()); 232 EXPECT_FLOAT_EQ(70.f, manager->ContentTopOffset());
224 233
225 manager->ScrollEnd(); 234 manager->ScrollEnd();
226 EXPECT_TRUE(manager->animation()); 235 EXPECT_TRUE(manager->animation());
227 236
228 base::TimeTicks time = gfx::FrameTime::Now(); 237 base::TimeTicks time = gfx::FrameTime::Now();
229 float previous_offset = manager->ControlsTopOffset(); 238 float previous;
230 while (manager->animation()) { 239 while (manager->animation()) {
240 previous = manager->TopControlsShownRatio();
231 time = base::TimeDelta::FromMicroseconds(100) + time; 241 time = base::TimeDelta::FromMicroseconds(100) + time;
232 manager->Animate(time); 242 manager->Animate(time);
233 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 243 EXPECT_LT(manager->TopControlsShownRatio(), previous);
234 previous_offset = manager->ControlsTopOffset();
235 } 244 }
236 EXPECT_FALSE(manager->animation()); 245 EXPECT_FALSE(manager->animation());
237 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 246 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
238 EXPECT_EQ(0.f, manager->ContentTopOffset()); 247 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
239 } 248 }
240 249
241 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) { 250 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdHides) {
242 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); 251 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
243 TopControlsManager* manager = client.manager(); 252 TopControlsManager* manager = client.manager();
244 253
245 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); 254 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
246 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 255 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
247 EXPECT_EQ(0.f, manager->ContentTopOffset()); 256 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
248 257
249 manager->ScrollBegin(); 258 manager->ScrollBegin();
250 259
251 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f)); 260 manager->ScrollBy(gfx::Vector2dF(0.f, -20.f));
252 EXPECT_EQ(-80.f, manager->ControlsTopOffset()); 261 EXPECT_FLOAT_EQ(-80.f, manager->ControlsTopOffset());
253 EXPECT_EQ(20.f, manager->ContentTopOffset()); 262 EXPECT_FLOAT_EQ(20.f, manager->ContentTopOffset());
254 263
255 manager->ScrollEnd(); 264 manager->ScrollEnd();
256 EXPECT_TRUE(manager->animation()); 265 EXPECT_TRUE(manager->animation());
257 266
258 base::TimeTicks time = gfx::FrameTime::Now(); 267 base::TimeTicks time = gfx::FrameTime::Now();
259 float previous_offset = manager->ControlsTopOffset(); 268 float previous;
260 while (manager->animation()) { 269 while (manager->animation()) {
270 previous = manager->TopControlsShownRatio();
261 time = base::TimeDelta::FromMicroseconds(100) + time; 271 time = base::TimeDelta::FromMicroseconds(100) + time;
262 manager->Animate(time); 272 manager->Animate(time);
263 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 273 EXPECT_LT(manager->TopControlsShownRatio(), previous);
264 previous_offset = manager->ControlsTopOffset();
265 } 274 }
266 EXPECT_FALSE(manager->animation()); 275 EXPECT_FALSE(manager->animation());
267 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 276 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
268 EXPECT_EQ(0.f, manager->ContentTopOffset()); 277 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
269 } 278 }
270 279
271 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) { 280 TEST(TopControlsManagerTest, PartialShownWithAmbiguousThresholdShows) {
272 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f); 281 MockTopControlsManagerClient client(100.f, 0.25f, 0.25f);
273 TopControlsManager* manager = client.manager(); 282 TopControlsManager* manager = client.manager();
274 283
275 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f)); 284 manager->ScrollBy(gfx::Vector2dF(0.f, 200.f));
276 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 285 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
277 EXPECT_EQ(0.f, manager->ContentTopOffset()); 286 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
278 287
279 manager->ScrollBegin(); 288 manager->ScrollBegin();
280 289
281 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f)); 290 manager->ScrollBy(gfx::Vector2dF(0.f, -30.f));
282 EXPECT_EQ(-70.f, manager->ControlsTopOffset()); 291 EXPECT_FLOAT_EQ(-70.f, manager->ControlsTopOffset());
283 EXPECT_EQ(30.f, manager->ContentTopOffset()); 292 EXPECT_FLOAT_EQ(30.f, manager->ContentTopOffset());
284 293
285 manager->ScrollEnd(); 294 manager->ScrollEnd();
286 EXPECT_TRUE(manager->animation()); 295 EXPECT_TRUE(manager->animation());
287 296
288 base::TimeTicks time = gfx::FrameTime::Now(); 297 base::TimeTicks time = gfx::FrameTime::Now();
289 float previous_offset = manager->ControlsTopOffset(); 298 float previous;
290 while (manager->animation()) { 299 while (manager->animation()) {
300 previous = manager->TopControlsShownRatio();
291 time = base::TimeDelta::FromMicroseconds(100) + time; 301 time = base::TimeDelta::FromMicroseconds(100) + time;
292 manager->Animate(time); 302 manager->Animate(time);
293 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 303 EXPECT_GT(manager->TopControlsShownRatio(), previous);
294 previous_offset = manager->ControlsTopOffset();
295 } 304 }
296 EXPECT_FALSE(manager->animation()); 305 EXPECT_FALSE(manager->animation());
297 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 306 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
298 EXPECT_EQ(100.f, manager->ContentTopOffset()); 307 EXPECT_FLOAT_EQ(100.f, manager->ContentTopOffset());
299 } 308 }
300 309
301 TEST(TopControlsManagerTest, PinchIgnoresScroll) { 310 TEST(TopControlsManagerTest, PinchIgnoresScroll) {
302 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 311 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
303 TopControlsManager* manager = client.manager(); 312 TopControlsManager* manager = client.manager();
304 313
305 // Hide the controls. 314 // Hide the controls.
306 manager->ScrollBegin(); 315 manager->ScrollBegin();
307 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 316 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
308 317
309 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 318 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
310 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 319 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
311 320
312 manager->PinchBegin(); 321 manager->PinchBegin();
313 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 322 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
314 323
315 // Scrolls are ignored during pinch. 324 // Scrolls are ignored during pinch.
316 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 325 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
317 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 326 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
318 manager->PinchEnd(); 327 manager->PinchEnd();
319 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 328 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
320 329
321 // Scrolls should no long be ignored. 330 // Scrolls should no long be ignored.
322 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 331 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
323 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); 332 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset());
324 EXPECT_EQ(15.f, manager->ContentTopOffset()); 333 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset());
325 manager->ScrollEnd(); 334 manager->ScrollEnd();
326 335
327 EXPECT_TRUE(manager->animation()); 336 EXPECT_TRUE(manager->animation());
328 } 337 }
329 338
330 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) { 339 TEST(TopControlsManagerTest, PinchBeginStartsAnimationIfNecessary) {
331 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 340 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
332 TopControlsManager* manager = client.manager(); 341 TopControlsManager* manager = client.manager();
333 342
334 manager->ScrollBegin(); 343 manager->ScrollBegin();
335 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 344 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
336 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 345 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
337 346
338 manager->PinchBegin(); 347 manager->PinchBegin();
339 EXPECT_FALSE(manager->animation()); 348 EXPECT_FALSE(manager->animation());
340 349
341 manager->PinchEnd(); 350 manager->PinchEnd();
342 EXPECT_FALSE(manager->animation()); 351 EXPECT_FALSE(manager->animation());
343 352
344 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f)); 353 manager->ScrollBy(gfx::Vector2dF(0.f, -15.f));
345 EXPECT_EQ(-85.f, manager->ControlsTopOffset()); 354 EXPECT_FLOAT_EQ(-85.f, manager->ControlsTopOffset());
346 EXPECT_EQ(15.f, manager->ContentTopOffset()); 355 EXPECT_FLOAT_EQ(15.f, manager->ContentTopOffset());
347 356
348 manager->PinchBegin(); 357 manager->PinchBegin();
349 EXPECT_TRUE(manager->animation()); 358 EXPECT_TRUE(manager->animation());
350 359
351 base::TimeTicks time = base::TimeTicks::Now(); 360 base::TimeTicks time = base::TimeTicks::Now();
352 float previous_offset = manager->ControlsTopOffset(); 361 float previous;
353 while (manager->animation()) { 362 while (manager->animation()) {
363 previous = manager->TopControlsShownRatio();
354 time = base::TimeDelta::FromMicroseconds(100) + time; 364 time = base::TimeDelta::FromMicroseconds(100) + time;
355 manager->Animate(time); 365 manager->Animate(time);
356 EXPECT_LT(manager->ControlsTopOffset(), previous_offset); 366 EXPECT_LT(manager->TopControlsShownRatio(), previous);
357 previous_offset = manager->ControlsTopOffset();
358 } 367 }
359 EXPECT_FALSE(manager->animation()); 368 EXPECT_FALSE(manager->animation());
360 369
361 manager->PinchEnd(); 370 manager->PinchEnd();
362 EXPECT_FALSE(manager->animation()); 371 EXPECT_FALSE(manager->animation());
363 372
364 manager->ScrollBy(gfx::Vector2dF(0.f, -55.f)); 373 manager->ScrollBy(gfx::Vector2dF(0.f, -55.f));
365 EXPECT_EQ(-45.f, manager->ControlsTopOffset()); 374 EXPECT_FLOAT_EQ(-45.f, manager->ControlsTopOffset());
366 EXPECT_EQ(55.f, manager->ContentTopOffset()); 375 EXPECT_FLOAT_EQ(55.f, manager->ContentTopOffset());
367 EXPECT_FALSE(manager->animation()); 376 EXPECT_FALSE(manager->animation());
368 377
369 manager->ScrollEnd(); 378 manager->ScrollEnd();
370 EXPECT_TRUE(manager->animation()); 379 EXPECT_TRUE(manager->animation());
371 380
372 time = base::TimeTicks::Now(); 381 time = base::TimeTicks::Now();
373 previous_offset = manager->ControlsTopOffset();
374 while (manager->animation()) { 382 while (manager->animation()) {
383 previous = manager->TopControlsShownRatio();
375 time = base::TimeDelta::FromMicroseconds(100) + time; 384 time = base::TimeDelta::FromMicroseconds(100) + time;
376 manager->Animate(time); 385 manager->Animate(time);
377 EXPECT_GT(manager->ControlsTopOffset(), previous_offset); 386 EXPECT_GT(manager->TopControlsShownRatio(), previous);
378 previous_offset = manager->ControlsTopOffset();
379 } 387 }
380 EXPECT_FALSE(manager->animation()); 388 EXPECT_FALSE(manager->animation());
381 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 389 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
382 } 390 }
383 391
384 TEST(TopControlsManagerTest, HeightChangeMaintainsFullyVisibleControls) { 392 TEST(TopControlsManagerTest, HeightChangeMaintainsFullyVisibleControls) {
385 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f); 393 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f);
386 TopControlsManager* manager = client.manager(); 394 TopControlsManager* manager = client.manager();
387 395
388 EXPECT_EQ(0.f, manager->top_controls_height()); 396 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
397
398 client.SetTopControlsHeight(100.f);
399 EXPECT_FALSE(manager->animation());
400 EXPECT_FLOAT_EQ(100.f, manager->TopControlsHeight());
401 EXPECT_FLOAT_EQ(0, manager->ControlsTopOffset());
402
403 client.SetTopControlsHeight(50.f);
404 EXPECT_FALSE(manager->animation());
405 EXPECT_FLOAT_EQ(50.f, manager->TopControlsHeight());
406 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
407 }
408
409 TEST(TopControlsManagerTest, GrowingHeightKeepsTopControlsHidden) {
410 MockTopControlsManagerClient client(0.f, 0.5f, 0.5f);
411 TopControlsManager* manager = client.manager();
412 manager->UpdateTopControlsState(HIDDEN, HIDDEN, false);
389 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 413 EXPECT_EQ(0.f, manager->ControlsTopOffset());
414 EXPECT_EQ(0.f, manager->ContentTopOffset());
390 415
391 manager->SetTopControlsHeight(100.f); 416 client.SetTopControlsHeight(50.f);
392 EXPECT_FALSE(manager->animation()); 417 EXPECT_FALSE(manager->animation());
393 EXPECT_EQ(100.f, manager->top_controls_height()); 418 EXPECT_EQ(-50.f, manager->ControlsTopOffset());
394 EXPECT_EQ(0, manager->ControlsTopOffset()); 419 EXPECT_EQ(0.f, manager->ContentTopOffset());
395 420
396 manager->SetTopControlsHeight(50.f); 421 client.SetTopControlsHeight(100.f);
397 EXPECT_FALSE(manager->animation()); 422 EXPECT_FALSE(manager->animation());
398 EXPECT_EQ(50.f, manager->top_controls_height()); 423 EXPECT_EQ(-100.f, manager->ControlsTopOffset());
399 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 424 EXPECT_EQ(0.f, manager->ContentTopOffset());
400 } 425 }
401 426
402 TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) { 427 TEST(TopControlsManagerTest, ShrinkingHeightKeepsTopControlsHidden) {
403 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f); 428 MockTopControlsManagerClient client(100.f, 0.5f, 0.5f);
404 TopControlsManager* manager = client.manager(); 429 TopControlsManager* manager = client.manager();
405 430
406 manager->ScrollBegin(); 431 manager->ScrollBegin();
407 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f)); 432 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
408 EXPECT_EQ(-100.f, manager->ControlsTopOffset()); 433 EXPECT_FLOAT_EQ(-100.f, manager->ControlsTopOffset());
409 EXPECT_EQ(0.f, manager->ContentTopOffset()); 434 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
410 manager->ScrollEnd(); 435 manager->ScrollEnd();
411 436
412 manager->SetTopControlsHeight(50.f); 437 client.SetTopControlsHeight(50.f);
413 EXPECT_FALSE(manager->animation()); 438 EXPECT_FALSE(manager->animation());
414 EXPECT_EQ(-50.f, manager->ControlsTopOffset()); 439 EXPECT_FLOAT_EQ(-50.f, manager->ControlsTopOffset());
415 EXPECT_EQ(0.f, manager->ContentTopOffset()); 440 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
416 441
417 manager->SetTopControlsHeight(0.f); 442 client.SetTopControlsHeight(0.f);
418 EXPECT_FALSE(manager->animation()); 443 EXPECT_FALSE(manager->animation());
419 EXPECT_EQ(0.f, manager->ControlsTopOffset()); 444 EXPECT_FLOAT_EQ(0.f, manager->ControlsTopOffset());
420 EXPECT_EQ(0.f, manager->ContentTopOffset()); 445 EXPECT_FLOAT_EQ(0.f, manager->ContentTopOffset());
421 } 446 }
422 447
423 TEST(TopControlsManagerTest, HiddenTopControlsReadjustOnIncreasedHeight) {
424 MockTopControlsManagerClient client(10.f, 0.5f, 0.5f);
425 TopControlsManager* manager = client.manager();
426
427 manager->ScrollBegin();
428 manager->ScrollBy(gfx::Vector2dF(0.f, 300.f));
429 EXPECT_EQ(-10.f, manager->ControlsTopOffset());
430 EXPECT_EQ(0.f, manager->ContentTopOffset());
431 manager->ScrollEnd();
432
433 manager->SetTopControlsHeight(15.f);
434 EXPECT_TRUE(manager->animation());
435 base::TimeTicks time = base::TimeTicks::Now();
436 float previous_offset = manager->ControlsTopOffset();
437 while (manager->animation()) {
438 time = base::TimeDelta::FromMicroseconds(100) + time;
439 manager->Animate(time);
440 EXPECT_LT(manager->ControlsTopOffset(), previous_offset);
441 previous_offset = manager->ControlsTopOffset();
442 }
443 EXPECT_FALSE(manager->animation());
444 EXPECT_EQ(-15.f, manager->ControlsTopOffset());
445
446 manager->SetTopControlsHeight(35.f);
447 EXPECT_TRUE(manager->animation());
448 time = base::TimeTicks::Now();
449 previous_offset = manager->ControlsTopOffset();
450 while (manager->animation()) {
451 time = base::TimeDelta::FromMicroseconds(100) + time;
452 manager->Animate(time);
453 EXPECT_GT(manager->ControlsTopOffset(), previous_offset);
454 previous_offset = manager->ControlsTopOffset();
455 }
456 EXPECT_FALSE(manager->animation());
457 EXPECT_EQ(0.f, manager->ControlsTopOffset());
458 }
459 } // namespace 448 } // namespace
460 } // namespace cc 449 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/top_controls_manager_client.h ('k') | cc/layers/delegated_renderer_layer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698