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

Side by Side Diff: ash/system/tray/system_tray_unittest.cc

Issue 2961313003: Touch gestures for System Tray/ IME/ Stylus/ Notifications (Closed)
Patch Set: Fixed msw's comments. Created 3 years, 5 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/system/tray/system_tray.h" 5 #include "ash/system/tray/system_tray.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "ash/accelerators/accelerator_controller.h" 10 #include "ash/accelerators/accelerator_controller.h"
11 #include "ash/accessibility_delegate.h" 11 #include "ash/accessibility_delegate.h"
12 #include "ash/public/cpp/shell_window_ids.h" 12 #include "ash/public/cpp/shell_window_ids.h"
13 #include "ash/root_window_controller.h" 13 #include "ash/root_window_controller.h"
14 #include "ash/shelf/shelf.h" 14 #include "ash/shelf/shelf.h"
15 #include "ash/shelf/shelf_widget.h" 15 #include "ash/shelf/shelf_widget.h"
16 #include "ash/shell.h" 16 #include "ash/shell.h"
17 #include "ash/system/status_area_widget.h" 17 #include "ash/system/status_area_widget.h"
18 #include "ash/system/tray/system_tray_bubble.h" 18 #include "ash/system/tray/system_tray_bubble.h"
19 #include "ash/system/tray/system_tray_item.h" 19 #include "ash/system/tray/system_tray_item.h"
20 #include "ash/system/tray/tray_constants.h" 20 #include "ash/system/tray/tray_constants.h"
21 #include "ash/system/tray_drag_controller.h"
21 #include "ash/system/web_notification/web_notification_tray.h" 22 #include "ash/system/web_notification/web_notification_tray.h"
22 #include "ash/test/ash_test_base.h" 23 #include "ash/test/ash_test_base.h"
23 #include "ash/test/status_area_widget_test_helper.h" 24 #include "ash/test/status_area_widget_test_helper.h"
24 #include "ash/test/test_system_tray_item.h" 25 #include "ash/test/test_system_tray_item.h"
25 #include "ash/wm/maximize_mode/maximize_mode_controller.h" 26 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
26 #include "ash/wm/window_util.h" 27 #include "ash/wm/window_util.h"
27 #include "base/memory/ptr_util.h" 28 #include "base/memory/ptr_util.h"
28 #include "base/run_loop.h" 29 #include "base/run_loop.h"
29 #include "base/test/histogram_tester.h" 30 #include "base/test/histogram_tester.h"
30 #include "ui/base/ui_base_types.h" 31 #include "ui/base/ui_base_types.h"
(...skipping 25 matching lines...) Expand all
56 DISALLOW_COPY_AND_ASSIGN(ModalWidgetDelegate); 57 DISALLOW_COPY_AND_ASSIGN(ModalWidgetDelegate);
57 }; 58 };
58 59
59 } // namespace 60 } // namespace
60 61
61 class SystemTrayTest : public AshTestBase { 62 class SystemTrayTest : public AshTestBase {
62 public: 63 public:
63 SystemTrayTest() {} 64 SystemTrayTest() {}
64 ~SystemTrayTest() override {} 65 ~SystemTrayTest() override {}
65 66
66 // Swiping on the system tray and ends with finger released. 67 // Swiping on the system tray and ends with finger released. Note, |start| is
68 // based on the system tray or system tray bubble's coordinate space.
67 void SendGestureEvent(gfx::Point& start, 69 void SendGestureEvent(gfx::Point& start,
68 float delta, 70 float delta,
69 bool is_fling, 71 bool is_fling,
70 float velocity_y) { 72 float velocity_y,
71 SystemTray* system_tray = GetPrimarySystemTray(); 73 float scroll_y_hint = -1.0f,
74 bool drag_on_bubble = false) {
72 base::TimeTicks timestamp = base::TimeTicks::Now(); 75 base::TimeTicks timestamp = base::TimeTicks::Now();
73 SendScrollStartAndUpdate(start, delta, timestamp); 76 SendScrollStartAndUpdate(start, delta, timestamp, scroll_y_hint,
77 drag_on_bubble);
74 78
75 ui::GestureEventDetails details = 79 ui::GestureEventDetails details =
76 is_fling 80 is_fling
77 ? ui::GestureEventDetails(ui::ET_SCROLL_FLING_START, 0, velocity_y) 81 ? ui::GestureEventDetails(ui::ET_SCROLL_FLING_START, 0, velocity_y)
78 : ui::GestureEventDetails(ui::ET_GESTURE_SCROLL_END); 82 : ui::GestureEventDetails(ui::ET_GESTURE_SCROLL_END);
79 ui::GestureEvent event = ui::GestureEvent(start.x(), start.y() + delta, 83 ui::GestureEvent event = ui::GestureEvent(start.x(), start.y() + delta,
80 ui::EF_NONE, timestamp, details); 84 ui::EF_NONE, timestamp, details);
81 system_tray->OnGestureEvent(&event); 85 DispatchGestureEvent(event, drag_on_bubble);
82 } 86 }
83 87
84 // Swiping on the system tray without releasing the finger. 88 // Swiping on the system tray without releasing the finger.
85 void SendScrollStartAndUpdate(gfx::Point& start, 89 void SendScrollStartAndUpdate(gfx::Point& start,
86 float delta, 90 float delta,
87 base::TimeTicks& timestamp) { 91 base::TimeTicks& timestamp,
88 SystemTray* system_tray = GetPrimarySystemTray(); 92 float scroll_y_hint = -1.0f,
89 ui::GestureEventDetails begin_details(ui::ET_GESTURE_SCROLL_BEGIN); 93 bool drag_on_bubble = false) {
94 ui::GestureEventDetails begin_details(ui::ET_GESTURE_SCROLL_BEGIN, 0,
95 scroll_y_hint);
90 ui::GestureEvent begin_event = ui::GestureEvent( 96 ui::GestureEvent begin_event = ui::GestureEvent(
91 start.x(), start.y(), ui::EF_NONE, timestamp, begin_details); 97 start.x(), start.y(), ui::EF_NONE, timestamp, begin_details);
92 system_tray->OnGestureEvent(&begin_event); 98 DispatchGestureEvent(begin_event, drag_on_bubble);
93 99
94 ui::GestureEventDetails update_details(ui::ET_GESTURE_SCROLL_UPDATE, 0, 100 ui::GestureEventDetails update_details(ui::ET_GESTURE_SCROLL_UPDATE, 0,
95 delta); 101 delta);
96 timestamp += base::TimeDelta::FromMilliseconds(100); 102 timestamp += base::TimeDelta::FromMilliseconds(100);
97 ui::GestureEvent update_event = ui::GestureEvent( 103 ui::GestureEvent update_event = ui::GestureEvent(
98 start.x(), start.y() + delta, ui::EF_NONE, timestamp, update_details); 104 start.x(), start.y() + delta, ui::EF_NONE, timestamp, update_details);
99 system_tray->OnGestureEvent(&update_event); 105 DispatchGestureEvent(update_event, drag_on_bubble);
106 }
107
108 // Dispatches |event| to target according to |drag_on_bubble|.
109 void DispatchGestureEvent(ui::GestureEvent event, bool drag_on_bubble) {
tdanderson 2017/07/17 22:44:36 It looks like |event| is being passed by value fro
minch1 2017/07/18 03:58:58 Changed it to pointer.
110 SystemTray* system_tray = GetPrimarySystemTray();
111 views::View* target = drag_on_bubble
112 ? system_tray->GetSystemBubble()->bubble_view()
113 : static_cast<views::View*>(system_tray);
tdanderson 2017/07/17 22:44:36 is this static_cast necessary?
minch1 2017/07/18 03:58:58 I think so. Even though SystemTray and TrayBubbleV
tdanderson 2017/07/18 16:38:05 Acknowledged.
114 ui::Event::DispatcherApi(&event).set_target(target);
115 target->OnGestureEvent(&event);
100 } 116 }
101 117
102 // Open the default system tray bubble to get the height of the bubble and 118 // Open the default system tray bubble to get the height of the bubble and
103 // then close it. 119 // then close it.
104 float GetSystemBubbleHeight() { 120 float GetSystemBubbleHeight() {
105 SystemTray* system_tray = GetPrimarySystemTray(); 121 SystemTray* system_tray = GetPrimarySystemTray();
106 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW); 122 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
107 gfx::Rect bounds = GetSystemBubbleBoundsInScreen(); 123 gfx::Rect bounds = GetSystemBubbleBoundsInScreen();
108 system_tray->CloseSystemBubble(); 124 system_tray->CloseSystemBubble();
109 return bounds.height(); 125 return bounds.height();
110 } 126 }
111 127
112 gfx::Rect GetSystemBubbleBoundsInScreen() { 128 gfx::Rect GetSystemBubbleBoundsInScreen() {
113 return GetPrimarySystemTray() 129 return GetPrimarySystemTray()
114 ->GetSystemBubble() 130 ->GetSystemBubble()
115 ->bubble_view() 131 ->bubble_view()
116 ->GetWidget() 132 ->GetWidget()
117 ->GetWindowBoundsInScreen(); 133 ->GetWindowBoundsInScreen();
118 } 134 }
119 135
120 private: 136 private:
121 DISALLOW_COPY_AND_ASSIGN(SystemTrayTest); 137 DISALLOW_COPY_AND_ASSIGN(SystemTrayTest);
122 }; 138 };
123 139
124 // Swiping on the overlap area of shelf and system tray bubble during the 140 // Swiping on the overlap area of shelf and system tray bubble during the
125 // animation should close the bubble. 141 // animation should close the bubble.
126 TEST_F(SystemTrayTest, SwipingOnShelfDuringAnimation) { 142 TEST_F(SystemTrayTest, SwipingOnShelfDuringAnimation) {
tdanderson 2017/07/17 22:44:36 This CL lets any TrayBackgroundView with an associ
minch1 2017/07/18 03:58:58 Thanks. Added TODO for this.
127 Shelf* shelf = GetPrimaryShelf(); 143 Shelf* shelf = GetPrimaryShelf();
128 SystemTray* system_tray = GetPrimarySystemTray(); 144 SystemTray* system_tray = GetPrimarySystemTray();
129 gfx::Point start = system_tray->GetLocalBounds().CenterPoint(); 145 gfx::Point start = system_tray->GetLocalBounds().CenterPoint();
130 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); 146 EXPECT_EQ(SHELF_ALIGNMENT_BOTTOM, shelf->alignment());
131 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager( 147 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
132 true); 148 true);
133 149
134 gfx::Rect shelf_bounds_in_screen = 150 gfx::Rect shelf_bounds_in_screen =
135 shelf->shelf_widget()->GetWindowBoundsInScreen(); 151 shelf->shelf_widget()->GetWindowBoundsInScreen();
136 152
137 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW); 153 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
138 gfx::Rect original_bounds = GetSystemBubbleBoundsInScreen(); 154 gfx::Rect original_bounds = GetSystemBubbleBoundsInScreen();
139 system_tray->CloseSystemBubble(); 155 system_tray->CloseSystemBubble();
140 156
(...skipping 16 matching lines...) Expand all
157 173
158 // Dragging the shelf during up animation should close the bubble. 174 // Dragging the shelf during up animation should close the bubble.
159 if (current_bounds.y() != original_bounds.y()) { 175 if (current_bounds.y() != original_bounds.y()) {
160 generator.GestureScrollSequence(point_on_shelf_start, point_on_shelf_end, 176 generator.GestureScrollSequence(point_on_shelf_start, point_on_shelf_end,
161 base::TimeDelta::FromMilliseconds(100), 5); 177 base::TimeDelta::FromMilliseconds(100), 5);
162 EXPECT_FALSE(system_tray->HasSystemBubble()); 178 EXPECT_FALSE(system_tray->HasSystemBubble());
163 } 179 }
164 180
165 // Fling down on the shelf with a velocity that exceeds |kFlingVelocity|. 181 // Fling down on the shelf with a velocity that exceeds |kFlingVelocity|.
166 EXPECT_FALSE(system_tray->HasSystemBubble()); 182 EXPECT_FALSE(system_tray->HasSystemBubble());
167 SendGestureEvent(start, delta, true, SystemTray::kFlingVelocity + 1); 183 SendGestureEvent(start, delta, true, TrayDragController::kFlingVelocity + 1);
168 current_bounds = GetSystemBubbleBoundsInScreen(); 184 current_bounds = GetSystemBubbleBoundsInScreen();
169 EXPECT_TRUE(system_tray->HasSystemBubble()); 185 EXPECT_TRUE(system_tray->HasSystemBubble());
170 186
171 // Dragging the shelf during down animation should close the bubble. 187 // Dragging the shelf during down animation should close the bubble.
172 if (current_bounds.y() != original_bounds.y()) { 188 if (current_bounds.y() != original_bounds.y()) {
173 generator.GestureScrollSequence(point_on_shelf_start, point_on_shelf_end, 189 generator.GestureScrollSequence(point_on_shelf_start, point_on_shelf_end,
174 base::TimeDelta::FromMilliseconds(100), 5); 190 base::TimeDelta::FromMilliseconds(100), 5);
175 EXPECT_FALSE(system_tray->HasSystemBubble()); 191 EXPECT_FALSE(system_tray->HasSystemBubble());
176 } 192 }
177 } 193 }
178 194
179 // Swiping on the system tray ends with fling event. 195 // Swiping on the system tray ends with fling event.
180 TEST_F(SystemTrayTest, FlingOnSystemTray) { 196 TEST_F(SystemTrayTest, FlingOnSystemTray) {
181 Shelf* shelf = GetPrimaryShelf(); 197 Shelf* shelf = GetPrimaryShelf();
182 SystemTray* system_tray = GetPrimarySystemTray(); 198 SystemTray* system_tray = GetPrimarySystemTray();
183 gfx::Point start = system_tray->GetBoundsInScreen().CenterPoint(); 199 gfx::Point start = system_tray->GetLocalBounds().CenterPoint();
184 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); 200 EXPECT_EQ(SHELF_ALIGNMENT_BOTTOM, shelf->alignment());
185 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager( 201 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
186 true); 202 true);
187 203
188 // Fling up on the system tray should show the bubble if the |velocity_y| is 204 // Fling up on the system tray should show the bubble if the |velocity_y| is
189 // larger than |kFlingVelocity| and the dragging amount is larger than one 205 // larger than |kFlingVelocity| and the dragging amount is larger than one
190 // third of the height of the bubble. 206 // third of the height of the bubble.
191 float delta = -GetSystemBubbleHeight(); 207 float delta = -GetSystemBubbleHeight();
192 SendGestureEvent(start, delta, true, -(SystemTray::kFlingVelocity + 1)); 208 SendGestureEvent(start, delta, true,
209 -(TrayDragController::kFlingVelocity + 1));
193 EXPECT_TRUE(system_tray->HasSystemBubble()); 210 EXPECT_TRUE(system_tray->HasSystemBubble());
194 system_tray->CloseSystemBubble(); 211 system_tray->CloseSystemBubble();
195 212
196 // Fling up on the system tray should show the bubble if the |velocity_y| is 213 // Fling up on the system tray should show the bubble if the |velocity_y| is
197 // larger than |kFlingVelocity| even the dragging amount is less than one 214 // larger than |kFlingVelocity| even the dragging amount is less than one
198 // third of the height of the bubble. 215 // third of the height of the bubble.
199 delta /= 4; 216 delta /= 4;
200 SendGestureEvent(start, delta, true, -(SystemTray::kFlingVelocity + 1)); 217 SendGestureEvent(start, delta, true,
218 -(TrayDragController::kFlingVelocity + 1));
201 EXPECT_TRUE(system_tray->HasSystemBubble()); 219 EXPECT_TRUE(system_tray->HasSystemBubble());
202 system_tray->CloseSystemBubble(); 220 system_tray->CloseSystemBubble();
203 221
204 // Fling up on the system tray should show the bubble if the |velocity_y| is 222 // Fling up on the system tray should show the bubble if the |velocity_y| is
205 // less than |kFlingVelocity| but the dragging amount if larger than one third 223 // less than |kFlingVelocity| but the dragging amount if larger than one third
206 // of the height of the bubble. 224 // of the height of the bubble.
207 delta = -GetSystemBubbleHeight(); 225 delta = -GetSystemBubbleHeight();
208 SendGestureEvent(start, delta, true, -(SystemTray::kFlingVelocity - 1)); 226 SendGestureEvent(start, delta, true,
227 -(TrayDragController::kFlingVelocity - 1));
209 EXPECT_TRUE(system_tray->HasSystemBubble()); 228 EXPECT_TRUE(system_tray->HasSystemBubble());
210 system_tray->CloseSystemBubble(); 229 system_tray->CloseSystemBubble();
211 230
212 // Fling up on the system tray should close the bubble if the |velocity_y| 231 // Fling up on the system tray should close the bubble if the |velocity_y|
213 // is less than |kFlingVelocity| and the dragging amount is less than one 232 // is less than |kFlingVelocity| and the dragging amount is less than one
214 // third of the height of the bubble. 233 // third of the height of the bubble.
215 delta /= 4; 234 delta /= 4;
216 SendGestureEvent(start, delta, true, -(SystemTray::kFlingVelocity - 1)); 235 SendGestureEvent(start, delta, true,
236 -(TrayDragController::kFlingVelocity - 1));
217 EXPECT_FALSE(system_tray->HasSystemBubble()); 237 EXPECT_FALSE(system_tray->HasSystemBubble());
218 238
219 // Fling down on the system tray should close the bubble if the |velocity_y| 239 // Fling down on the system tray should close the bubble if the |velocity_y|
220 // is larger than kFLingVelocity. 240 // is larger than kFLingVelocity.
221 SendGestureEvent(start, delta, true, SystemTray::kFlingVelocity + 1); 241 SendGestureEvent(start, delta, true, TrayDragController::kFlingVelocity + 1);
222 EXPECT_FALSE(system_tray->HasSystemBubble()); 242 EXPECT_FALSE(system_tray->HasSystemBubble());
223 243
224 // Fling down on the system tray should close the bubble if the |velocity_y| 244 // Fling down on the system tray should close the bubble if the |velocity_y|
225 // is larger than |kFlingVelocity| even the dragging amount is larger than one 245 // is larger than |kFlingVelocity| even the dragging amount is larger than one
226 // third of the height of the bubble. 246 // third of the height of the bubble.
227 delta = -GetSystemBubbleHeight(); 247 delta = -GetSystemBubbleHeight();
228 SendGestureEvent(start, delta, true, SystemTray::kFlingVelocity + 1); 248 SendGestureEvent(start, delta, true, TrayDragController::kFlingVelocity + 1);
229 EXPECT_FALSE(system_tray->HasSystemBubble()); 249 EXPECT_FALSE(system_tray->HasSystemBubble());
230 250
231 // Fling down on the system tray should open the bubble if the |velocity_y| is 251 // Fling down on the system tray should open the bubble if the |velocity_y| is
232 // less than |kFlingVelocity| but the dragging amount exceed one third of the 252 // less than |kFlingVelocity| but the dragging amount exceed one third of the
233 // height of the bubble. 253 // height of the bubble.
234 SendGestureEvent(start, delta, true, SystemTray::kFlingVelocity - 1); 254 SendGestureEvent(start, delta, true, TrayDragController::kFlingVelocity - 1);
235 EXPECT_TRUE(system_tray->HasSystemBubble()); 255 EXPECT_TRUE(system_tray->HasSystemBubble());
236 system_tray->CloseSystemBubble(); 256 system_tray->CloseSystemBubble();
237 257
238 // Fling down on the system tray should close the bubble if the |velocity_y| 258 // Fling down on the system tray should close the bubble if the |velocity_y|
239 // is less than |kFlingVelocity| and the dragging amount is less than one 259 // is less than |kFlingVelocity| and the dragging amount is less than one
240 // third of the height of the bubble. 260 // third of the height of the bubble.
241 delta /= 4; 261 delta /= 4;
242 SendGestureEvent(start, delta, true, SystemTray::kFlingVelocity - 1); 262 SendGestureEvent(start, delta, true, TrayDragController::kFlingVelocity - 1);
243 EXPECT_FALSE(system_tray->HasSystemBubble()); 263 EXPECT_FALSE(system_tray->HasSystemBubble());
244 } 264 }
245 265
246 // Touch outside the system tray bubble during swiping should close the bubble. 266 // Touch outside the system tray bubble during swiping should close the bubble.
247 TEST_F(SystemTrayTest, TapOutsideCloseBubble) { 267 TEST_F(SystemTrayTest, TapOutsideCloseBubble) {
248 Shelf* shelf = GetPrimaryShelf(); 268 Shelf* shelf = GetPrimaryShelf();
249 SystemTray* system_tray = GetPrimarySystemTray(); 269 SystemTray* system_tray = GetPrimarySystemTray();
250 gfx::Point start = system_tray->GetLocalBounds().CenterPoint(); 270 gfx::Point start = system_tray->GetLocalBounds().CenterPoint();
251 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); 271 EXPECT_EQ(SHELF_ALIGNMENT_BOTTOM, shelf->alignment());
252 272
253 float delta = -GetSystemBubbleHeight(); 273 float delta = -GetSystemBubbleHeight();
254 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager( 274 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
255 true); 275 true);
256 base::TimeTicks timestamp = base::TimeTicks::Now(); 276 base::TimeTicks timestamp = base::TimeTicks::Now();
257 SendScrollStartAndUpdate(start, delta, timestamp); 277 SendScrollStartAndUpdate(start, delta, timestamp);
258 EXPECT_TRUE(system_tray->HasSystemBubble()); 278 EXPECT_TRUE(system_tray->HasSystemBubble());
259 279
260 ui::test::EventGenerator& generator = GetEventGenerator(); 280 ui::test::EventGenerator& generator = GetEventGenerator();
261 gfx::Rect bounds = GetSystemBubbleBoundsInScreen(); 281 gfx::Rect bounds = GetSystemBubbleBoundsInScreen();
262 gfx::Point point_outside = gfx::Point(bounds.x() - 5, bounds.y() - 5); 282 gfx::Point point_outside = gfx::Point(bounds.x() - 5, bounds.y() - 5);
263 generator.GestureTapAt(point_outside); 283 generator.GestureTapAt(point_outside);
264 EXPECT_FALSE(system_tray->HasSystemBubble()); 284 EXPECT_FALSE(system_tray->HasSystemBubble());
265 } 285 }
266 286
267 // Swiping on the system tray ends with scroll event. 287 // Swiping on the system tray ends with scroll event.
268 TEST_F(SystemTrayTest, SwipingOnSystemTray) { 288 TEST_F(SystemTrayTest, SwipingOnSystemTray) {
269 Shelf* shelf = GetPrimaryShelf(); 289 Shelf* shelf = GetPrimaryShelf();
270 SystemTray* system_tray = GetPrimarySystemTray(); 290 SystemTray* system_tray = GetPrimarySystemTray();
271 gfx::Point start = system_tray->GetLocalBounds().CenterPoint(); 291 gfx::Point start = system_tray->GetLocalBounds().CenterPoint();
272 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); 292 EXPECT_EQ(SHELF_ALIGNMENT_BOTTOM, shelf->alignment());
273 293
274 // Swiping up on the system tray has no effect if it is not in maximize mode. 294 // Swiping up on the system tray has no effect if it is not in maximize mode.
275 float delta = -GetSystemBubbleHeight(); 295 float delta = -GetSystemBubbleHeight();
276 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager( 296 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
277 false); 297 false);
278 EXPECT_FALSE(system_tray->HasSystemBubble()); 298 EXPECT_FALSE(system_tray->HasSystemBubble());
279 SendGestureEvent(start, delta, false, 0); 299 SendGestureEvent(start, delta, false, 0);
280 EXPECT_FALSE(system_tray->HasSystemBubble()); 300 EXPECT_FALSE(system_tray->HasSystemBubble());
281 301
282 // Swiping up on the system tray should show the system tray bubble if it is 302 // Swiping up on the system tray should show the system tray bubble if it is
(...skipping 23 matching lines...) Expand all
306 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); 326 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT);
307 SendGestureEvent(start, delta, false, 0); 327 SendGestureEvent(start, delta, false, 0);
308 EXPECT_FALSE(system_tray->HasSystemBubble()); 328 EXPECT_FALSE(system_tray->HasSystemBubble());
309 329
310 // Swiping up on system tray should not show the system tray bubble if the 330 // Swiping up on system tray should not show the system tray bubble if the
311 // shelf is right alignment. 331 // shelf is right alignment.
312 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); 332 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT);
313 SendGestureEvent(start, delta, false, 0); 333 SendGestureEvent(start, delta, false, 0);
314 EXPECT_FALSE(system_tray->HasSystemBubble()); 334 EXPECT_FALSE(system_tray->HasSystemBubble());
315 335
316 // Swiping down on the shelf should not show the system tray bubble. 336 // Beginning to scroll downward on the shelf should not show the system tray
337 // bubble, even if the drag then moves upwards.
317 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); 338 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM);
318 delta = -delta; 339 SendGestureEvent(start, delta, false, 0, 1);
319 SendGestureEvent(start, delta, false, 0);
320 EXPECT_FALSE(system_tray->HasSystemBubble()); 340 EXPECT_FALSE(system_tray->HasSystemBubble());
321 } 341 }
322 342
343 // Swiping on opened system tray bubble.
tdanderson 2017/07/17 22:44:36 Suggested: "Tests for swiping down on an open syst
minch1 2017/07/18 03:58:58 Done.
344 TEST_F(SystemTrayTest, SwipingOnSystemTrayBubble) {
345 Shelf* shelf = GetPrimaryShelf();
346 SystemTray* system_tray = GetPrimarySystemTray();
347 EXPECT_EQ(SHELF_ALIGNMENT_BOTTOM, shelf->alignment());
348
349 // Beginning to scroll downward and then swiping down more than one third of
350 // the bubble's height should close the bubble. This only takes effect in
351 // maximize mode.
352 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
353 true);
354 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
355 gfx::Rect bounds =
356 system_tray->GetSystemBubble()->bubble_view()->GetLocalBounds();
357 float delta = bounds.height() / 2;
358 gfx::Point start(bounds.x() + 5, bounds.y() + 5);
359 SendGestureEvent(start, delta, false, 0, 1, true);
360 EXPECT_FALSE(system_tray->HasSystemBubble());
361
362 // Beginning to scroll upward and then swiping down more than one third of the
363 // bubble's height should also close the bubble.
364 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
365 SendGestureEvent(start, delta, false, 0, -1, true);
366 EXPECT_FALSE(system_tray->HasSystemBubble());
367
368 // Swiping on the bubble has no effect if it is not in maximize mode.
369 Shell::Get()->maximize_mode_controller()->EnableMaximizeModeWindowManager(
370 false);
371 system_tray->ShowDefaultView(BUBBLE_CREATE_NEW);
372 SendGestureEvent(start, delta, false, 0, -1, true);
373 EXPECT_TRUE(system_tray->HasSystemBubble());
374 }
375
323 // Verifies only the visible default views are recorded in the 376 // Verifies only the visible default views are recorded in the
324 // "Ash.SystemMenu.DefaultView.VisibleItems" histogram. 377 // "Ash.SystemMenu.DefaultView.VisibleItems" histogram.
325 TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) { 378 TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) {
326 SystemTray* tray = GetPrimarySystemTray(); 379 SystemTray* tray = GetPrimarySystemTray();
327 ASSERT_TRUE(tray->GetWidget()); 380 ASSERT_TRUE(tray->GetWidget());
328 381
329 TestSystemTrayItem* test_item = new TestSystemTrayItem(); 382 TestSystemTrayItem* test_item = new TestSystemTrayItem();
330 tray->AddTrayItem(base::WrapUnique(test_item)); 383 tray->AddTrayItem(base::WrapUnique(test_item));
331 384
332 base::HistogramTester histogram_tester; 385 base::HistogramTester histogram_tester;
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
848 901
849 EXPECT_EQ(0, notification_tray->tray_bubble_height_for_test()); 902 EXPECT_EQ(0, notification_tray->tray_bubble_height_for_test());
850 } 903 }
851 904
852 TEST_F(SystemTrayTest, SeparatorThickness) { 905 TEST_F(SystemTrayTest, SeparatorThickness) {
853 EXPECT_EQ(kSeparatorWidth, views::Separator::kThickness); 906 EXPECT_EQ(kSeparatorWidth, views::Separator::kThickness);
854 } 907 }
855 908
856 } // namespace test 909 } // namespace test
857 } // namespace ash 910 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698