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" |
(...skipping 30 matching lines...) Expand all Loading... |
41 int GetProgressCountAndReset() { | 41 int GetProgressCountAndReset() { |
42 int result = progress_count_; | 42 int result = progress_count_; |
43 progress_count_ = 0; | 43 progress_count_ = 0; |
44 return result; | 44 return result; |
45 } | 45 } |
46 | 46 |
47 // Process a gesture event for our use case. | 47 // Process a gesture event for our use case. |
48 bool ProcessGestureEvent(ui::EventType type, int y) { | 48 bool ProcessGestureEvent(ui::EventType type, int y) { |
49 ui::GestureEvent event(0, y, ui::EF_NONE, base::TimeDelta(), | 49 ui::GestureEvent event(0, y, ui::EF_NONE, base::TimeDelta(), |
50 ui::GestureEventDetails(type, 0, (y - last_y_))); | 50 ui::GestureEventDetails(type, 0, (y - last_y_))); |
51 // Assumes the initial location is based on minimized height. | |
52 if (type == ui::ET_GESTURE_SCROLL_BEGIN) { | 51 if (type == ui::ET_GESTURE_SCROLL_BEGIN) { |
| 52 // Compute the position that the home card would have wrt to the top of |
| 53 // the screen if the screen had screen_bounds(). |
| 54 HomeCard::State state = HomeCard::Get()->GetState(); |
| 55 int home_card_top = 0; |
| 56 if (state == HomeCard::VISIBLE_BOTTOM) |
| 57 home_card_top = screen_bounds().height() - kHomeCardHeight; |
| 58 else if (state == HomeCard::VISIBLE_MINIMIZED) |
| 59 home_card_top = screen_bounds().height() - kHomeCardMinimizedHeight; |
| 60 |
53 gfx::Point location = event.location(); | 61 gfx::Point location = event.location(); |
54 location.set_y( | 62 location.set_y(location.y() - home_card_top); |
55 location.y() - (screen_bounds().bottom() - kHomeCardMinimizedHeight)); | |
56 event.set_location(location); | 63 event.set_location(location); |
57 } | 64 } |
58 gesture_manager_->ProcessGestureEvent(&event); | 65 gesture_manager_->ProcessGestureEvent(&event); |
59 last_y_ = y; | 66 last_y_ = y; |
60 return event.handled(); | 67 return event.handled(); |
61 } | 68 } |
62 void ProcessFlingGesture(float velocity) { | 69 void ProcessFlingGesture(float velocity) { |
63 ui::GestureEvent event(0, last_y_, ui::EF_NONE, base::TimeDelta(), | 70 ui::GestureEvent event(0, last_y_, ui::EF_NONE, base::TimeDelta(), |
64 ui::GestureEventDetails( | 71 ui::GestureEventDetails( |
65 ui::ET_SCROLL_FLING_START, 0, velocity)); | 72 ui::ET_SCROLL_FLING_START, 0, velocity)); |
(...skipping 27 matching lines...) Expand all Loading... |
93 | 100 |
94 int last_y_; | 101 int last_y_; |
95 int progress_count_; | 102 int progress_count_; |
96 int end_count_; | 103 int end_count_; |
97 scoped_ptr<HomeCardGestureManager> gesture_manager_; | 104 scoped_ptr<HomeCardGestureManager> gesture_manager_; |
98 | 105 |
99 DISALLOW_COPY_AND_ASSIGN(HomeCardGestureManagerTest); | 106 DISALLOW_COPY_AND_ASSIGN(HomeCardGestureManagerTest); |
100 }; | 107 }; |
101 | 108 |
102 TEST_F(HomeCardGestureManagerTest, Basic) { | 109 TEST_F(HomeCardGestureManagerTest, Basic) { |
| 110 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| 111 |
103 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 112 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
104 EXPECT_EQ(0, GetEndCountAndReset()); | 113 EXPECT_EQ(0, GetEndCountAndReset()); |
105 EXPECT_EQ(0, GetProgressCountAndReset()); | 114 EXPECT_EQ(0, GetProgressCountAndReset()); |
106 | 115 |
107 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1019); | 116 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1019); |
108 EXPECT_EQ(1, GetProgressCountAndReset()); | 117 EXPECT_EQ(1, GetProgressCountAndReset()); |
109 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, last_from_state_); | 118 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, last_from_state_); |
110 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_to_state_); | 119 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_to_state_); |
111 EXPECT_GT(1.0f, last_progress_); | 120 EXPECT_GT(1.0f, last_progress_); |
112 | 121 |
| 122 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1020); |
| 123 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1022); |
| 124 EXPECT_EQ(2, GetProgressCountAndReset()); |
| 125 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
| 126 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, last_to_state_); |
| 127 EXPECT_EQ(1.0f, last_progress_); |
| 128 |
113 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 129 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
114 float progress_1010 = last_progress_; | 130 float progress_1010 = last_progress_; |
115 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1008); | 131 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1008); |
116 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1000); | 132 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1000); |
117 EXPECT_EQ(3, GetProgressCountAndReset()); | 133 EXPECT_EQ(3, GetProgressCountAndReset()); |
118 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, last_from_state_); | 134 EXPECT_EQ(HomeCard::VISIBLE_MINIMIZED, last_from_state_); |
119 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_to_state_); | 135 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_to_state_); |
120 EXPECT_LT(progress_1010, last_progress_); | 136 EXPECT_LT(progress_1010, last_progress_); |
121 | 137 |
122 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 900); | 138 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 900); |
123 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); | 139 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); |
124 EXPECT_EQ(2, GetProgressCountAndReset()); | 140 EXPECT_EQ(2, GetProgressCountAndReset()); |
125 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); | 141 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
126 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); | 142 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); |
127 float progress_800 = last_progress_; | 143 float progress_800 = last_progress_; |
128 EXPECT_GT(1.0f, last_progress_); | 144 EXPECT_GT(1.0f, last_progress_); |
129 EXPECT_LT(0.0f, last_progress_); | 145 EXPECT_LT(0.0f, last_progress_); |
130 | 146 |
131 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 790); | 147 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 790); |
132 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); | 148 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
133 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); | 149 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); |
134 EXPECT_LT(progress_800, last_progress_); | 150 EXPECT_LT(progress_800, last_progress_); |
135 | 151 |
136 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 810); | 152 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 810); |
137 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_from_state_); | 153 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
138 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_to_state_); | 154 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); |
139 EXPECT_GT(progress_800, (1.0f - last_progress_)); | 155 EXPECT_GT(progress_800, last_progress_); |
140 | 156 |
141 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 810)); | 157 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 810)); |
142 EXPECT_EQ(1, GetEndCountAndReset()); | 158 EXPECT_EQ(1, GetEndCountAndReset()); |
143 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 159 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
144 } | 160 } |
145 | 161 |
| 162 // Test gesture progress when the gesture is initiated when the home card is in |
| 163 // the centered state. |
| 164 TEST_F(HomeCardGestureManagerTest, StartCentered) { |
| 165 HomeCard::Get()->SetState(HomeCard::VISIBLE_CENTERED); |
| 166 |
| 167 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 20)); |
| 168 |
| 169 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 10); |
| 170 EXPECT_EQ(1, GetProgressCountAndReset()); |
| 171 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
| 172 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); |
| 173 EXPECT_EQ(1.0f, last_progress_); |
| 174 |
| 175 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 900); |
| 176 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 910); |
| 177 EXPECT_EQ(2, GetProgressCountAndReset()); |
| 178 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, last_from_state_); |
| 179 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, last_to_state_); |
| 180 EXPECT_GT(1.0f, last_progress_); |
| 181 EXPECT_LT(0.0f, last_progress_); |
| 182 |
| 183 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_END, 1000)); |
| 184 EXPECT_EQ(1, GetEndCountAndReset()); |
| 185 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
| 186 } |
| 187 |
146 TEST_F(HomeCardGestureManagerTest, FlingUpAtEnd) { | 188 TEST_F(HomeCardGestureManagerTest, FlingUpAtEnd) { |
| 189 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| 190 |
147 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 191 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
148 EXPECT_EQ(0, GetEndCountAndReset()); | 192 EXPECT_EQ(0, GetEndCountAndReset()); |
149 EXPECT_EQ(0, GetProgressCountAndReset()); | 193 EXPECT_EQ(0, GetProgressCountAndReset()); |
150 | 194 |
151 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 195 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
152 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); | 196 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); |
153 ProcessFlingGesture(-150.0f); | 197 ProcessFlingGesture(-150.0f); |
154 EXPECT_EQ(1, GetEndCountAndReset()); | 198 EXPECT_EQ(1, GetEndCountAndReset()); |
155 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, final_state_); | 199 EXPECT_EQ(HomeCard::VISIBLE_CENTERED, final_state_); |
156 } | 200 } |
157 | 201 |
158 TEST_F(HomeCardGestureManagerTest, FlingDownAtEnd) { | 202 TEST_F(HomeCardGestureManagerTest, FlingDownAtEnd) { |
| 203 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| 204 |
159 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 205 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
160 EXPECT_EQ(0, GetEndCountAndReset()); | 206 EXPECT_EQ(0, GetEndCountAndReset()); |
161 EXPECT_EQ(0, GetProgressCountAndReset()); | 207 EXPECT_EQ(0, GetProgressCountAndReset()); |
162 | 208 |
163 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 209 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
164 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); | 210 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); |
165 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 200); | 211 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 200); |
166 ProcessFlingGesture(150.0f); | 212 ProcessFlingGesture(150.0f); |
167 EXPECT_EQ(1, GetEndCountAndReset()); | 213 EXPECT_EQ(1, GetEndCountAndReset()); |
168 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 214 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
169 } | 215 } |
170 | 216 |
171 TEST_F(HomeCardGestureManagerTest, WeakFling) { | 217 TEST_F(HomeCardGestureManagerTest, WeakFling) { |
| 218 ASSERT_EQ(HomeCard::VISIBLE_MINIMIZED, HomeCard::Get()->GetState()); |
| 219 |
172 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); | 220 EXPECT_TRUE(ProcessGestureEvent(ui::ET_GESTURE_SCROLL_BEGIN, 1020)); |
173 EXPECT_EQ(0, GetEndCountAndReset()); | 221 EXPECT_EQ(0, GetEndCountAndReset()); |
174 EXPECT_EQ(0, GetProgressCountAndReset()); | 222 EXPECT_EQ(0, GetProgressCountAndReset()); |
175 | 223 |
176 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); | 224 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 1010); |
177 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); | 225 ProcessGestureEvent(ui::ET_GESTURE_SCROLL_UPDATE, 800); |
178 ProcessFlingGesture(-30.0f); | 226 ProcessFlingGesture(-30.0f); |
179 EXPECT_EQ(1, GetEndCountAndReset()); | 227 EXPECT_EQ(1, GetEndCountAndReset()); |
180 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); | 228 EXPECT_EQ(HomeCard::VISIBLE_BOTTOM, final_state_); |
181 } | 229 } |
182 | 230 |
183 } // namespace athena | 231 } // namespace athena |
OLD | NEW |