OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "athena/home/home_card_gesture_manager.h" | 5 #include "athena/home/home_card_gesture_manager.h" |
6 | 6 |
7 #include "athena/home/home_card_constants.h" | 7 #include "athena/home/home_card_constants.h" |
8 #include "athena/home/public/home_card.h" | 8 #include "athena/home/public/home_card.h" |
9 #include "athena/test/athena_test_base.h" | 9 #include "athena/test/athena_test_base.h" |
10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
11 #include "ui/events/event.h" | 11 #include "ui/events/event.h" |
12 #include "ui/events/event_constants.h" | 12 #include "ui/events/event_constants.h" |
13 | 13 |
14 namespace athena { | 14 namespace athena { |
15 | 15 |
16 class HomeCardGestureManagerTest : public test::AthenaTestBase, | 16 class HomeCardGestureManagerTest : public test::AthenaTestBase, |
17 public HomeCardGestureManager::Delegate { | 17 public HomeCardGestureManager::Delegate { |
18 public: | 18 public: |
19 HomeCardGestureManagerTest() | 19 HomeCardGestureManagerTest() |
20 : final_state_(HomeCard::HIDDEN), | 20 : final_state_(HomeCard::HIDDEN), |
21 last_from_state_(HomeCard::HIDDEN), | 21 last_from_state_(HomeCard::HIDDEN), |
22 last_to_state_(HomeCard::HIDDEN), | 22 last_to_state_(HomeCard::HIDDEN), |
23 last_progress_(0.0f), | 23 last_progress_(0.0f), |
| 24 was_fling_(false), |
24 last_y_(0), | 25 last_y_(0), |
25 progress_count_(0), | 26 progress_count_(0), |
26 end_count_(0) {} | 27 end_count_(0) {} |
27 virtual ~HomeCardGestureManagerTest() {} | 28 virtual ~HomeCardGestureManagerTest() {} |
28 | 29 |
29 // testing::Test: | 30 // testing::Test: |
30 virtual void SetUp() OVERRIDE { | 31 virtual void SetUp() OVERRIDE { |
31 test::AthenaTestBase::SetUp(); | 32 test::AthenaTestBase::SetUp(); |
32 gesture_manager_.reset(new HomeCardGestureManager(this, screen_bounds())); | 33 gesture_manager_.reset(new HomeCardGestureManager(this, screen_bounds())); |
33 } | 34 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 } | 76 } |
76 | 77 |
77 int screen_height() const { | 78 int screen_height() const { |
78 return screen_bounds().height(); | 79 return screen_bounds().height(); |
79 } | 80 } |
80 | 81 |
81 HomeCard::State final_state_; | 82 HomeCard::State final_state_; |
82 HomeCard::State last_from_state_; | 83 HomeCard::State last_from_state_; |
83 HomeCard::State last_to_state_; | 84 HomeCard::State last_to_state_; |
84 float last_progress_; | 85 float last_progress_; |
| 86 bool was_fling_; |
85 | 87 |
86 private: | 88 private: |
87 gfx::Rect screen_bounds() const { | 89 gfx::Rect screen_bounds() const { |
88 return gfx::Rect(0, 0, 1280, 1024); | 90 return gfx::Rect(0, 0, 1280, 1024); |
89 } | 91 } |
90 | 92 |
91 // HomeCardGestureManager::Delegate: | 93 // HomeCardGestureManager::Delegate: |
92 virtual void OnGestureEnded(HomeCard::State final_state) OVERRIDE { | 94 virtual void OnGestureEnded(HomeCard::State final_state, |
| 95 bool is_fling) OVERRIDE { |
93 final_state_ = final_state; | 96 final_state_ = final_state; |
| 97 was_fling_ = is_fling; |
94 ++end_count_; | 98 ++end_count_; |
95 } | 99 } |
96 | 100 |
97 virtual void OnGestureProgressed(HomeCard::State from_state, | 101 virtual void OnGestureProgressed(HomeCard::State from_state, |
98 HomeCard::State to_state, | 102 HomeCard::State to_state, |
99 float progress) OVERRIDE { | 103 float progress) OVERRIDE { |
100 last_from_state_ = from_state; | 104 last_from_state_ = from_state; |
101 last_to_state_ = to_state; | 105 last_to_state_ = to_state; |
102 last_progress_ = progress; | 106 last_progress_ = progress; |
103 ++progress_count_; | 107 ++progress_count_; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 EXPECT_LT(progress_800, last_progress_); | 159 EXPECT_LT(progress_800, last_progress_); |
156 | 160 |
157 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 810); | 161 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 810); |
158 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); | 162 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
159 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); | 163 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); |
160 EXPECT_GT(progress_800, last_progress_); | 164 EXPECT_GT(progress_800, last_progress_); |
161 | 165 |
162 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 810)); | 166 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 810)); |
163 EXPECT_EQ(1, GetEndCountAndReset()); | 167 EXPECT_EQ(1, GetEndCountAndReset()); |
164 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 168 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
| 169 EXPECT_FALSE(was_fling_); |
165 } | 170 } |
166 | 171 |
167 // Test gesture progress when the gesture is initiated when the home card is in | 172 // Test gesture progress when the gesture is initiated when the home card is in |
168 // the centered state. | 173 // the centered state. |
169 TEST_F(HomeCardGestureManagerTest, StartCentered) { | 174 TEST_F(HomeCardGestureManagerTest, StartCentered) { |
170 HomeCard::Get()->SetState(HomeCard::VISIBLE_CENTERED); | 175 HomeCard::Get()->SetState(HomeCard::VISIBLE_CENTERED); |
171 | 176 |
172 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 20)); | 177 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 20)); |
173 | 178 |
174 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 10); | 179 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 10); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1000); | 218 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1000); |
214 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 1000)); | 219 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 1000)); |
215 EXPECT_EQ(1, GetEndCountAndReset()); | 220 EXPECT_EQ(1, GetEndCountAndReset()); |
216 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, final_state_); | 221 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, final_state_); |
217 | 222 |
218 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 950)); | 223 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 950)); |
219 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 300); | 224 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 300); |
220 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 300)); | 225 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 300)); |
221 EXPECT_EQ(1, GetEndCountAndReset()); | 226 EXPECT_EQ(1, GetEndCountAndReset()); |
222 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, final_state_); | 227 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, final_state_); |
| 228 EXPECT_FALSE(was_fling_); |
223 } | 229 } |
224 | 230 |
225 TEST_F(HomeCardGestureManagerTest, FlingUpAtEnd) { | 231 TEST_F(HomeCardGestureManagerTest, FlingUpAtEnd) { |
226 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); | 232 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
227 | 233 |
228 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 234 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
229 EXPECT_EQ(0, GetEndCountAndReset()); | 235 EXPECT_EQ(0, GetEndCountAndReset()); |
230 EXPECT_EQ(0, GetProgressCountAndReset()); | 236 EXPECT_EQ(0, GetProgressCountAndReset()); |
231 | 237 |
232 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 238 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
233 ProcessFlingGesture(-150.0f); | 239 ProcessFlingGesture(-150.0f); |
234 EXPECT_EQ(1, GetEndCountAndReset()); | 240 EXPECT_EQ(1, GetEndCountAndReset()); |
235 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 241 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
| 242 EXPECT_TRUE(was_fling_); |
236 } | 243 } |
237 | 244 |
238 TEST_F(HomeCardGestureManagerTest, FlingDownAtEnd) { | 245 TEST_F(HomeCardGestureManagerTest, FlingDownAtEnd) { |
239 HomeCard::Get()->SetState(HomeCard::VISIBLE_CENTERED); | 246 HomeCard::Get()->SetState(HomeCard::VISIBLE_CENTERED); |
240 | 247 |
241 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 20)); | 248 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 20)); |
242 EXPECT_EQ(0, GetEndCountAndReset()); | 249 EXPECT_EQ(0, GetEndCountAndReset()); |
243 EXPECT_EQ(0, GetProgressCountAndReset()); | 250 EXPECT_EQ(0, GetProgressCountAndReset()); |
244 | 251 |
245 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 30); | 252 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 30); |
246 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 100); | 253 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 100); |
247 ProcessFlingGesture(150.0f); | 254 ProcessFlingGesture(150.0f); |
248 EXPECT_EQ(1, GetEndCountAndReset()); | 255 EXPECT_EQ(1, GetEndCountAndReset()); |
249 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 256 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
| 257 EXPECT_TRUE(was_fling_); |
250 } | 258 } |
251 | 259 |
252 TEST_F(HomeCardGestureManagerTest, WeakFling) { | 260 TEST_F(HomeCardGestureManagerTest, WeakFling) { |
253 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); | 261 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
254 | 262 |
255 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 263 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
256 EXPECT_EQ(0, GetEndCountAndReset()); | 264 EXPECT_EQ(0, GetEndCountAndReset()); |
257 EXPECT_EQ(0, GetProgressCountAndReset()); | 265 EXPECT_EQ(0, GetProgressCountAndReset()); |
258 | 266 |
259 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 267 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
260 ProcessFlingGesture(-30.0f); | 268 ProcessFlingGesture(-30.0f); |
261 EXPECT_EQ(1, GetEndCountAndReset()); | 269 EXPECT_EQ(1, GetEndCountAndReset()); |
262 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, final_state_); | 270 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, final_state_); |
| 271 EXPECT_FALSE(was_fling_); |
263 } | 272 } |
264 | 273 |
265 // Test the situation where the user intends a single fling but the finger | 274 // Test the situation where the user intends a single fling but the finger |
266 // touches the screen long enough, so that the home card becomes bigger than the | 275 // touches the screen long enough, so that the home card becomes bigger than the |
267 // height of VISIBLE_BOTTOM state due to the scroll events. | 276 // height of VISIBLE_BOTTOM state due to the scroll events. |
268 // In this case the fling event should not change the final state from | 277 // In this case the fling event should not change the final state from |
269 // VISIBLE_BOTTOM to VISIBLE_CENTERED because the user's intention was a single | 278 // VISIBLE_BOTTOM to VISIBLE_CENTERED because the user's intention was a single |
270 // fling. See http://crbug.com/415211 | 279 // fling. See http://crbug.com/415211 |
271 TEST_F(HomeCardGestureManagerTest, FastFling) { | 280 TEST_F(HomeCardGestureManagerTest, FastFling) { |
272 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); | 281 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
273 | 282 |
274 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 283 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
275 EXPECT_EQ(0, GetEndCountAndReset()); | 284 EXPECT_EQ(0, GetEndCountAndReset()); |
276 EXPECT_EQ(0, GetProgressCountAndReset()); | 285 EXPECT_EQ(0, GetProgressCountAndReset()); |
277 | 286 |
278 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 287 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
279 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, | 288 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, |
280 screen_height() - kHomeCardHeight); | 289 screen_height() - kHomeCardHeight); |
281 ProcessFlingGesture(-150.0f); | 290 ProcessFlingGesture(-150.0f); |
282 EXPECT_EQ(1, GetEndCountAndReset()); | 291 EXPECT_EQ(1, GetEndCountAndReset()); |
283 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 292 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
| 293 EXPECT_TRUE(was_fling_); |
284 } | 294 } |
285 | 295 |
286 } // namespace athena | 296 } // namespace athena |
OLD | NEW |