OLD | NEW |
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/accelerators/accelerator_controller.h" | 5 #include "ash/accelerators/accelerator_controller.h" |
6 | 6 |
7 #include "ash/accelerators/accelerator_table.h" | 7 #include "ash/accelerators/accelerator_table.h" |
8 #include "ash/accessibility_delegate.h" | 8 #include "ash/accessibility_delegate.h" |
9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
10 #include "ash/display/display_manager.h" | 10 #include "ash/display/display_manager.h" |
11 #include "ash/ime_control_delegate.h" | 11 #include "ash/ime_control_delegate.h" |
12 #include "ash/screen_util.h" | 12 #include "ash/screen_util.h" |
13 #include "ash/shell.h" | 13 #include "ash/shell.h" |
14 #include "ash/shell_window_ids.h" | 14 #include "ash/shell_window_ids.h" |
15 #include "ash/system/brightness_control_delegate.h" | 15 #include "ash/system/brightness_control_delegate.h" |
16 #include "ash/system/keyboard_brightness/keyboard_brightness_control_delegate.h" | 16 #include "ash/system/keyboard_brightness/keyboard_brightness_control_delegate.h" |
17 #include "ash/system/tray/system_tray_delegate.h" | 17 #include "ash/system/tray/system_tray_delegate.h" |
18 #include "ash/test/ash_test_base.h" | 18 #include "ash/test/ash_test_base.h" |
19 #include "ash/test/display_manager_test_api.h" | 19 #include "ash/test/display_manager_test_api.h" |
20 #include "ash/test/test_screenshot_delegate.h" | 20 #include "ash/test/test_screenshot_delegate.h" |
21 #include "ash/test/test_shell_delegate.h" | 21 #include "ash/test/test_shell_delegate.h" |
22 #include "ash/test/test_volume_control_delegate.h" | 22 #include "ash/test/test_volume_control_delegate.h" |
23 #include "ash/volume_control_delegate.h" | 23 #include "ash/volume_control_delegate.h" |
24 #include "ash/wm/window_state.h" | 24 #include "ash/wm/window_state.h" |
25 #include "ash/wm/window_util.h" | 25 #include "ash/wm/window_util.h" |
26 #include "base/command_line.h" | 26 #include "base/command_line.h" |
| 27 #include "ui/aura/client/aura_constants.h" |
| 28 #include "ui/aura/test/event_generator.h" |
27 #include "ui/aura/test/test_window_delegate.h" | 29 #include "ui/aura/test/test_window_delegate.h" |
28 #include "ui/aura/test/test_windows.h" | 30 #include "ui/aura/test/test_windows.h" |
29 #include "ui/aura/window.h" | 31 #include "ui/aura/window.h" |
30 #include "ui/events/event.h" | 32 #include "ui/events/event.h" |
31 #include "ui/events/event_processor.h" | 33 #include "ui/events/event_processor.h" |
32 #include "ui/gfx/screen.h" | 34 #include "ui/gfx/screen.h" |
| 35 #include "ui/views/widget/widget.h" |
33 | 36 |
34 #if defined(USE_X11) | 37 #if defined(USE_X11) |
35 #include <X11/Xlib.h> | 38 #include <X11/Xlib.h> |
36 #include "ui/events/test/events_test_utils_x11.h" | 39 #include "ui/events/test/events_test_utils_x11.h" |
37 #endif | 40 #endif |
38 | 41 |
39 namespace ash { | 42 namespace ash { |
40 | 43 |
41 namespace { | 44 namespace { |
42 | 45 |
43 class TestTarget : public ui::AcceleratorTarget { | 46 class TestTarget : public ui::AcceleratorTarget { |
44 public: | 47 public: |
45 TestTarget() : accelerator_pressed_count_(0) {} | 48 TestTarget() : accelerator_pressed_count_(0), accelerator_repeat_count_(0) {} |
46 virtual ~TestTarget() {} | 49 virtual ~TestTarget() {} |
47 | 50 |
48 int accelerator_pressed_count() const { | 51 int accelerator_pressed_count() const { |
49 return accelerator_pressed_count_; | 52 return accelerator_pressed_count_; |
50 } | 53 } |
51 | 54 |
52 void set_accelerator_pressed_count(int accelerator_pressed_count) { | 55 int accelerator_repeat_count() const { return accelerator_repeat_count_; } |
53 accelerator_pressed_count_ = accelerator_pressed_count; | 56 |
| 57 void reset() { |
| 58 accelerator_pressed_count_ = 0; |
| 59 accelerator_repeat_count_ = 0; |
54 } | 60 } |
55 | 61 |
56 // Overridden from ui::AcceleratorTarget: | 62 // Overridden from ui::AcceleratorTarget: |
57 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; | 63 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE; |
58 virtual bool CanHandleAccelerators() const OVERRIDE; | 64 virtual bool CanHandleAccelerators() const OVERRIDE; |
59 | 65 |
60 private: | 66 private: |
61 int accelerator_pressed_count_; | 67 int accelerator_pressed_count_; |
| 68 int accelerator_repeat_count_; |
62 | 69 |
63 DISALLOW_COPY_AND_ASSIGN(TestTarget); | 70 DISALLOW_COPY_AND_ASSIGN(TestTarget); |
64 }; | 71 }; |
65 | 72 |
66 class ReleaseAccelerator : public ui::Accelerator { | 73 class ReleaseAccelerator : public ui::Accelerator { |
67 public: | 74 public: |
68 ReleaseAccelerator(ui::KeyboardCode keycode, int modifiers) | 75 ReleaseAccelerator(ui::KeyboardCode keycode, int modifiers) |
69 : ui::Accelerator(keycode, modifiers) { | 76 : ui::Accelerator(keycode, modifiers) { |
70 set_type(ui::ET_KEY_RELEASED); | 77 set_type(ui::ET_KEY_RELEASED); |
71 } | 78 } |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 private: | 214 private: |
208 const bool consume_; | 215 const bool consume_; |
209 int handle_keyboard_brightness_down_count_; | 216 int handle_keyboard_brightness_down_count_; |
210 int handle_keyboard_brightness_up_count_; | 217 int handle_keyboard_brightness_up_count_; |
211 ui::Accelerator last_accelerator_; | 218 ui::Accelerator last_accelerator_; |
212 | 219 |
213 DISALLOW_COPY_AND_ASSIGN(DummyKeyboardBrightnessControlDelegate); | 220 DISALLOW_COPY_AND_ASSIGN(DummyKeyboardBrightnessControlDelegate); |
214 }; | 221 }; |
215 | 222 |
216 bool TestTarget::AcceleratorPressed(const ui::Accelerator& accelerator) { | 223 bool TestTarget::AcceleratorPressed(const ui::Accelerator& accelerator) { |
217 ++accelerator_pressed_count_; | 224 if (accelerator.IsRepeat()) |
| 225 ++accelerator_repeat_count_; |
| 226 else |
| 227 ++accelerator_pressed_count_; |
218 return true; | 228 return true; |
219 } | 229 } |
220 | 230 |
221 bool TestTarget::CanHandleAccelerators() const { | 231 bool TestTarget::CanHandleAccelerators() const { |
222 return true; | 232 return true; |
223 } | 233 } |
224 | 234 |
225 } // namespace | 235 } // namespace |
226 | 236 |
227 class AcceleratorControllerTest : public test::AshTestBase { | 237 class AcceleratorControllerTest : public test::AshTestBase { |
228 public: | 238 public: |
229 AcceleratorControllerTest() {} | 239 AcceleratorControllerTest() {} |
230 virtual ~AcceleratorControllerTest() {} | 240 virtual ~AcceleratorControllerTest() {} |
231 | 241 |
232 protected: | 242 protected: |
233 void EnableInternalDisplay() { | 243 void EnableInternalDisplay() { |
234 test::DisplayManagerTestApi(Shell::GetInstance()->display_manager()). | 244 test::DisplayManagerTestApi(Shell::GetInstance()->display_manager()). |
235 SetFirstDisplayAsInternalDisplay(); | 245 SetFirstDisplayAsInternalDisplay(); |
236 } | 246 } |
237 | 247 |
238 static AcceleratorController* GetController(); | 248 static AcceleratorController* GetController(); |
239 static bool ProcessWithContext(const ui::Accelerator& accelerator); | |
240 | 249 |
241 // Several functions to access ExitWarningHandler (as friend). | 250 // Several functions to access ExitWarningHandler (as friend). |
242 static void StubForTest(ExitWarningHandler* ewh) { | 251 static void StubForTest(ExitWarningHandler* ewh) { |
243 ewh->stub_timer_for_test_ = true; | 252 ewh->stub_timer_for_test_ = true; |
244 } | 253 } |
245 static void Reset(ExitWarningHandler* ewh) { | 254 static void Reset(ExitWarningHandler* ewh) { |
246 ewh->state_ = ExitWarningHandler::IDLE; | 255 ewh->state_ = ExitWarningHandler::IDLE; |
247 } | 256 } |
248 static void SimulateTimerExpired(ExitWarningHandler* ewh) { | 257 static void SimulateTimerExpired(ExitWarningHandler* ewh) { |
249 ewh->TimerAction(); | 258 ewh->TimerAction(); |
250 } | 259 } |
251 static bool is_ui_shown(ExitWarningHandler* ewh) { | 260 static bool is_ui_shown(ExitWarningHandler* ewh) { |
252 return !!ewh->widget_; | 261 return !!ewh->widget_; |
253 } | 262 } |
254 static bool is_idle(ExitWarningHandler* ewh) { | 263 static bool is_idle(ExitWarningHandler* ewh) { |
255 return ewh->state_ == ExitWarningHandler::IDLE; | 264 return ewh->state_ == ExitWarningHandler::IDLE; |
256 } | 265 } |
257 static bool is_exiting(ExitWarningHandler* ewh) { | 266 static bool is_exiting(ExitWarningHandler* ewh) { |
258 return ewh->state_ == ExitWarningHandler::EXITING; | 267 return ewh->state_ == ExitWarningHandler::EXITING; |
259 } | 268 } |
260 | 269 |
261 private: | 270 private: |
262 DISALLOW_COPY_AND_ASSIGN(AcceleratorControllerTest); | 271 DISALLOW_COPY_AND_ASSIGN(AcceleratorControllerTest); |
263 }; | 272 }; |
264 | 273 |
265 AcceleratorController* AcceleratorControllerTest::GetController() { | 274 AcceleratorController* AcceleratorControllerTest::GetController() { |
266 return Shell::GetInstance()->accelerator_controller(); | 275 return Shell::GetInstance()->accelerator_controller(); |
267 } | 276 } |
268 | 277 |
269 bool AcceleratorControllerTest::ProcessWithContext( | |
270 const ui::Accelerator& accelerator) { | |
271 AcceleratorController* controller = GetController(); | |
272 controller->context()->UpdateContext(accelerator); | |
273 return controller->Process(accelerator); | |
274 } | |
275 | |
276 #if !defined(OS_WIN) | 278 #if !defined(OS_WIN) |
277 // Double press of exit shortcut => exiting | 279 // Double press of exit shortcut => exiting |
278 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestDoublePress) { | 280 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestDoublePress) { |
279 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); | 281 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); |
280 ui::Accelerator release(press); | 282 ui::Accelerator release(press); |
281 release.set_type(ui::ET_KEY_RELEASED); | 283 release.set_type(ui::ET_KEY_RELEASED); |
282 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); | 284 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); |
283 ASSERT_TRUE(!!ewh); | 285 ASSERT_TRUE(!!ewh); |
284 StubForTest(ewh); | 286 StubForTest(ewh); |
285 EXPECT_TRUE(is_idle(ewh)); | 287 EXPECT_TRUE(is_idle(ewh)); |
286 EXPECT_FALSE(is_ui_shown(ewh)); | 288 EXPECT_FALSE(is_ui_shown(ewh)); |
287 EXPECT_TRUE(ProcessWithContext(press)); | 289 EXPECT_TRUE(GetController()->Process(press)); |
288 EXPECT_FALSE(ProcessWithContext(release)); | 290 EXPECT_FALSE(GetController()->Process(release)); |
289 EXPECT_FALSE(is_idle(ewh)); | 291 EXPECT_FALSE(is_idle(ewh)); |
290 EXPECT_TRUE(is_ui_shown(ewh)); | 292 EXPECT_TRUE(is_ui_shown(ewh)); |
291 EXPECT_TRUE(ProcessWithContext(press)); // second press before timer. | 293 EXPECT_TRUE(GetController()->Process(press)); // second press before timer. |
292 EXPECT_FALSE(ProcessWithContext(release)); | 294 EXPECT_FALSE(GetController()->Process(release)); |
293 SimulateTimerExpired(ewh); | 295 SimulateTimerExpired(ewh); |
294 EXPECT_TRUE(is_exiting(ewh)); | 296 EXPECT_TRUE(is_exiting(ewh)); |
295 EXPECT_FALSE(is_ui_shown(ewh)); | 297 EXPECT_FALSE(is_ui_shown(ewh)); |
296 Reset(ewh); | 298 Reset(ewh); |
297 } | 299 } |
298 | 300 |
299 // Single press of exit shortcut before timer => idle | 301 // Single press of exit shortcut before timer => idle |
300 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestSinglePress) { | 302 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestSinglePress) { |
301 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); | 303 ui::Accelerator press(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN); |
302 ui::Accelerator release(press); | 304 ui::Accelerator release(press); |
303 release.set_type(ui::ET_KEY_RELEASED); | 305 release.set_type(ui::ET_KEY_RELEASED); |
304 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); | 306 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); |
305 ASSERT_TRUE(!!ewh); | 307 ASSERT_TRUE(!!ewh); |
306 StubForTest(ewh); | 308 StubForTest(ewh); |
307 EXPECT_TRUE(is_idle(ewh)); | 309 EXPECT_TRUE(is_idle(ewh)); |
308 EXPECT_FALSE(is_ui_shown(ewh)); | 310 EXPECT_FALSE(is_ui_shown(ewh)); |
309 EXPECT_TRUE(ProcessWithContext(press)); | 311 EXPECT_TRUE(GetController()->Process(press)); |
310 EXPECT_FALSE(ProcessWithContext(release)); | 312 EXPECT_FALSE(GetController()->Process(release)); |
311 EXPECT_FALSE(is_idle(ewh)); | 313 EXPECT_FALSE(is_idle(ewh)); |
312 EXPECT_TRUE(is_ui_shown(ewh)); | 314 EXPECT_TRUE(is_ui_shown(ewh)); |
313 SimulateTimerExpired(ewh); | 315 SimulateTimerExpired(ewh); |
314 EXPECT_TRUE(is_idle(ewh)); | 316 EXPECT_TRUE(is_idle(ewh)); |
315 EXPECT_FALSE(is_ui_shown(ewh)); | 317 EXPECT_FALSE(is_ui_shown(ewh)); |
316 Reset(ewh); | 318 Reset(ewh); |
317 } | 319 } |
318 | 320 |
319 // Shutdown ash with exit warning bubble open should not crash. | 321 // Shutdown ash with exit warning bubble open should not crash. |
320 TEST_F(AcceleratorControllerTest, LingeringExitWarningBubble) { | 322 TEST_F(AcceleratorControllerTest, LingeringExitWarningBubble) { |
321 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); | 323 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); |
322 ASSERT_TRUE(!!ewh); | 324 ASSERT_TRUE(!!ewh); |
323 StubForTest(ewh); | 325 StubForTest(ewh); |
324 | 326 |
325 // Trigger once to show the bubble. | 327 // Trigger once to show the bubble. |
326 ewh->HandleAccelerator(); | 328 ewh->HandleAccelerator(); |
327 EXPECT_FALSE(is_idle(ewh)); | 329 EXPECT_FALSE(is_idle(ewh)); |
328 EXPECT_TRUE(is_ui_shown(ewh)); | 330 EXPECT_TRUE(is_ui_shown(ewh)); |
329 | 331 |
330 // Exit ash and there should be no crash | 332 // Exit ash and there should be no crash |
331 } | 333 } |
332 #endif // !defined(OS_WIN) | 334 #endif // !defined(OS_WIN) |
333 | 335 |
334 TEST_F(AcceleratorControllerTest, Register) { | 336 TEST_F(AcceleratorControllerTest, Register) { |
335 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 337 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
336 TestTarget target; | 338 TestTarget target; |
337 GetController()->Register(accelerator_a, &target); | 339 GetController()->Register(accelerator_a, &target); |
338 | 340 |
339 // The registered accelerator is processed. | 341 // The registered accelerator is processed. |
340 EXPECT_TRUE(ProcessWithContext(accelerator_a)); | 342 EXPECT_TRUE(GetController()->Process(accelerator_a)); |
341 EXPECT_EQ(1, target.accelerator_pressed_count()); | 343 EXPECT_EQ(1, target.accelerator_pressed_count()); |
342 } | 344 } |
343 | 345 |
344 TEST_F(AcceleratorControllerTest, RegisterMultipleTarget) { | 346 TEST_F(AcceleratorControllerTest, RegisterMultipleTarget) { |
345 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 347 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
346 TestTarget target1; | 348 TestTarget target1; |
347 GetController()->Register(accelerator_a, &target1); | 349 GetController()->Register(accelerator_a, &target1); |
348 TestTarget target2; | 350 TestTarget target2; |
349 GetController()->Register(accelerator_a, &target2); | 351 GetController()->Register(accelerator_a, &target2); |
350 | 352 |
351 // If multiple targets are registered with the same accelerator, the target | 353 // If multiple targets are registered with the same accelerator, the target |
352 // registered later processes the accelerator. | 354 // registered later processes the accelerator. |
353 EXPECT_TRUE(ProcessWithContext(accelerator_a)); | 355 EXPECT_TRUE(GetController()->Process(accelerator_a)); |
354 EXPECT_EQ(0, target1.accelerator_pressed_count()); | 356 EXPECT_EQ(0, target1.accelerator_pressed_count()); |
355 EXPECT_EQ(1, target2.accelerator_pressed_count()); | 357 EXPECT_EQ(1, target2.accelerator_pressed_count()); |
356 } | 358 } |
357 | 359 |
358 TEST_F(AcceleratorControllerTest, Unregister) { | 360 TEST_F(AcceleratorControllerTest, Unregister) { |
359 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 361 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
360 TestTarget target; | 362 TestTarget target; |
361 GetController()->Register(accelerator_a, &target); | 363 GetController()->Register(accelerator_a, &target); |
362 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); | 364 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); |
363 GetController()->Register(accelerator_b, &target); | 365 GetController()->Register(accelerator_b, &target); |
364 | 366 |
365 // Unregistering a different accelerator does not affect the other | 367 // Unregistering a different accelerator does not affect the other |
366 // accelerator. | 368 // accelerator. |
367 GetController()->Unregister(accelerator_b, &target); | 369 GetController()->Unregister(accelerator_b, &target); |
368 EXPECT_TRUE(ProcessWithContext(accelerator_a)); | 370 EXPECT_TRUE(GetController()->Process(accelerator_a)); |
369 EXPECT_EQ(1, target.accelerator_pressed_count()); | 371 EXPECT_EQ(1, target.accelerator_pressed_count()); |
370 | 372 |
371 // The unregistered accelerator is no longer processed. | 373 // The unregistered accelerator is no longer processed. |
372 target.set_accelerator_pressed_count(0); | 374 target.reset(); |
373 GetController()->Unregister(accelerator_a, &target); | 375 GetController()->Unregister(accelerator_a, &target); |
374 EXPECT_FALSE(ProcessWithContext(accelerator_a)); | 376 EXPECT_FALSE(GetController()->Process(accelerator_a)); |
375 EXPECT_EQ(0, target.accelerator_pressed_count()); | 377 EXPECT_EQ(0, target.accelerator_pressed_count()); |
376 } | 378 } |
377 | 379 |
378 TEST_F(AcceleratorControllerTest, UnregisterAll) { | 380 TEST_F(AcceleratorControllerTest, UnregisterAll) { |
379 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 381 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
380 TestTarget target1; | 382 TestTarget target1; |
381 GetController()->Register(accelerator_a, &target1); | 383 GetController()->Register(accelerator_a, &target1); |
382 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); | 384 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); |
383 GetController()->Register(accelerator_b, &target1); | 385 GetController()->Register(accelerator_b, &target1); |
384 const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE); | 386 const ui::Accelerator accelerator_c(ui::VKEY_C, ui::EF_NONE); |
385 TestTarget target2; | 387 TestTarget target2; |
386 GetController()->Register(accelerator_c, &target2); | 388 GetController()->Register(accelerator_c, &target2); |
387 GetController()->UnregisterAll(&target1); | 389 GetController()->UnregisterAll(&target1); |
388 | 390 |
389 // All the accelerators registered for |target1| are no longer processed. | 391 // All the accelerators registered for |target1| are no longer processed. |
390 EXPECT_FALSE(ProcessWithContext(accelerator_a)); | 392 EXPECT_FALSE(GetController()->Process(accelerator_a)); |
391 EXPECT_FALSE(ProcessWithContext(accelerator_b)); | 393 EXPECT_FALSE(GetController()->Process(accelerator_b)); |
392 EXPECT_EQ(0, target1.accelerator_pressed_count()); | 394 EXPECT_EQ(0, target1.accelerator_pressed_count()); |
393 | 395 |
394 // UnregisterAll with a different target does not affect the other target. | 396 // UnregisterAll with a different target does not affect the other target. |
395 EXPECT_TRUE(ProcessWithContext(accelerator_c)); | 397 EXPECT_TRUE(GetController()->Process(accelerator_c)); |
396 EXPECT_EQ(1, target2.accelerator_pressed_count()); | 398 EXPECT_EQ(1, target2.accelerator_pressed_count()); |
397 } | 399 } |
398 | 400 |
399 TEST_F(AcceleratorControllerTest, Process) { | 401 TEST_F(AcceleratorControllerTest, Process) { |
400 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 402 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
401 TestTarget target1; | 403 TestTarget target1; |
402 GetController()->Register(accelerator_a, &target1); | 404 GetController()->Register(accelerator_a, &target1); |
403 | 405 |
404 // The registered accelerator is processed. | 406 // The registered accelerator is processed. |
405 EXPECT_TRUE(ProcessWithContext(accelerator_a)); | 407 EXPECT_TRUE(GetController()->Process(accelerator_a)); |
406 EXPECT_EQ(1, target1.accelerator_pressed_count()); | 408 EXPECT_EQ(1, target1.accelerator_pressed_count()); |
407 | 409 |
408 // The non-registered accelerator is not processed. | 410 // The non-registered accelerator is not processed. |
409 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); | 411 const ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); |
410 EXPECT_FALSE(ProcessWithContext(accelerator_b)); | 412 EXPECT_FALSE(GetController()->Process(accelerator_b)); |
411 } | 413 } |
412 | 414 |
413 TEST_F(AcceleratorControllerTest, IsRegistered) { | 415 TEST_F(AcceleratorControllerTest, IsRegistered) { |
414 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 416 const ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
415 const ui::Accelerator accelerator_shift_a(ui::VKEY_A, ui::EF_SHIFT_DOWN); | 417 const ui::Accelerator accelerator_shift_a(ui::VKEY_A, ui::EF_SHIFT_DOWN); |
416 TestTarget target; | 418 TestTarget target; |
417 GetController()->Register(accelerator_a, &target); | 419 GetController()->Register(accelerator_a, &target); |
418 EXPECT_TRUE(GetController()->IsRegistered(accelerator_a)); | 420 EXPECT_TRUE(GetController()->IsRegistered(accelerator_a)); |
419 EXPECT_FALSE(GetController()->IsRegistered(accelerator_shift_a)); | 421 EXPECT_FALSE(GetController()->IsRegistered(accelerator_shift_a)); |
420 GetController()->UnregisterAll(&target); | 422 GetController()->UnregisterAll(&target); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 aura::Window* docked_container = Shell::GetContainer( | 503 aura::Window* docked_container = Shell::GetContainer( |
502 window->GetRootWindow(), kShellWindowId_DockedContainer); | 504 window->GetRootWindow(), kShellWindowId_DockedContainer); |
503 docked_container->AddChild(window.get()); | 505 docked_container->AddChild(window.get()); |
504 gfx::Rect docked_bounds = window->GetBoundsInScreen(); | 506 gfx::Rect docked_bounds = window->GetBoundsInScreen(); |
505 GetController()->PerformAction(WINDOW_POSITION_CENTER, dummy); | 507 GetController()->PerformAction(WINDOW_POSITION_CENTER, dummy); |
506 // It should not get centered and should remain docked. | 508 // It should not get centered and should remain docked. |
507 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); | 509 EXPECT_EQ(kShellWindowId_DockedContainer, window->parent()->id()); |
508 EXPECT_EQ(docked_bounds.ToString(), window->GetBoundsInScreen().ToString()); | 510 EXPECT_EQ(docked_bounds.ToString(), window->GetBoundsInScreen().ToString()); |
509 } | 511 } |
510 | 512 |
511 TEST_F(AcceleratorControllerTest, ControllerContext) { | 513 TEST_F(AcceleratorControllerTest, AutoRepeat) { |
512 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 514 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
513 ui::Accelerator accelerator_a2(ui::VKEY_A, ui::EF_NONE); | 515 accelerator_a.set_type(ui::ET_KEY_PRESSED); |
514 ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_NONE); | 516 TestTarget target_a; |
| 517 GetController()->Register(accelerator_a, &target_a); |
| 518 ui::Accelerator accelerator_b(ui::VKEY_B, ui::EF_CONTROL_DOWN); |
| 519 accelerator_b.set_type(ui::ET_KEY_PRESSED); |
| 520 TestTarget target_b; |
| 521 GetController()->Register(accelerator_b, &target_b); |
515 | 522 |
516 accelerator_a.set_type(ui::ET_KEY_PRESSED); | 523 aura::test::EventGenerator& generator = GetEventGenerator(); |
517 accelerator_a2.set_type(ui::ET_KEY_RELEASED); | 524 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
518 accelerator_b.set_type(ui::ET_KEY_PRESSED); | 525 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
519 | 526 |
520 EXPECT_FALSE(GetController()->context()->repeated()); | 527 EXPECT_EQ(1, target_a.accelerator_pressed_count()); |
521 EXPECT_EQ(ui::ET_UNKNOWN, | 528 EXPECT_EQ(0, target_a.accelerator_repeat_count()); |
522 GetController()->context()->previous_accelerator().type()); | |
523 | 529 |
524 GetController()->context()->UpdateContext(accelerator_a); | 530 // Long press should generate one |
525 EXPECT_FALSE(GetController()->context()->repeated()); | 531 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
526 EXPECT_EQ(ui::ET_UNKNOWN, | 532 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT); |
527 GetController()->context()->previous_accelerator().type()); | 533 EXPECT_EQ(2, target_a.accelerator_pressed_count()); |
| 534 EXPECT_EQ(1, target_a.accelerator_repeat_count()); |
| 535 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT); |
| 536 EXPECT_EQ(2, target_a.accelerator_pressed_count()); |
| 537 EXPECT_EQ(2, target_a.accelerator_repeat_count()); |
| 538 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
| 539 EXPECT_EQ(2, target_a.accelerator_pressed_count()); |
| 540 EXPECT_EQ(2, target_a.accelerator_repeat_count()); |
528 | 541 |
529 GetController()->context()->UpdateContext(accelerator_a2); | 542 // Long press was intercepted by another key press. |
530 EXPECT_FALSE(GetController()->context()->repeated()); | 543 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
531 EXPECT_EQ(ui::ET_KEY_PRESSED, | 544 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT); |
532 GetController()->context()->previous_accelerator().type()); | 545 generator.PressKey(ui::VKEY_B, ui::EF_CONTROL_DOWN); |
| 546 generator.ReleaseKey(ui::VKEY_B, ui::EF_CONTROL_DOWN); |
| 547 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
| 548 generator.PressKey(ui::VKEY_A, ui::EF_CONTROL_DOWN | ui::EF_IS_REPEAT); |
| 549 generator.ReleaseKey(ui::VKEY_A, ui::EF_CONTROL_DOWN); |
533 | 550 |
534 GetController()->context()->UpdateContext(accelerator_a2); | 551 EXPECT_EQ(1, target_b.accelerator_pressed_count()); |
535 EXPECT_TRUE(GetController()->context()->repeated()); | 552 EXPECT_EQ(0, target_b.accelerator_repeat_count()); |
536 EXPECT_EQ(ui::ET_KEY_RELEASED, | 553 EXPECT_EQ(4, target_a.accelerator_pressed_count()); |
537 GetController()->context()->previous_accelerator().type()); | 554 EXPECT_EQ(4, target_a.accelerator_repeat_count()); |
538 | |
539 GetController()->context()->UpdateContext(accelerator_b); | |
540 EXPECT_FALSE(GetController()->context()->repeated()); | |
541 EXPECT_EQ(ui::ET_KEY_RELEASED, | |
542 GetController()->context()->previous_accelerator().type()); | |
543 } | 555 } |
544 | 556 |
545 #if defined(OS_WIN) && defined(USE_AURA) | 557 TEST_F(AcceleratorControllerTest, Previous) { |
546 // crbug.com/314674 | 558 aura::test::EventGenerator& generator = GetEventGenerator(); |
547 #define MAYBE_SuppressToggleMaximized DISABLED_SuppressToggleMaximized | 559 generator.PressKey(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); |
548 #else | 560 generator.ReleaseKey(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); |
549 #define MAYBE_SuppressToggleMaximized SuppressToggleMaximized | |
550 #endif | |
551 | 561 |
552 TEST_F(AcceleratorControllerTest, MAYBE_SuppressToggleMaximized) { | 562 EXPECT_EQ(ui::VKEY_VOLUME_MUTE, |
553 scoped_ptr<aura::Window> window( | 563 GetController()->previous_accelerator_for_test().key_code()); |
554 CreateTestWindowInShellWithBounds(gfx::Rect(5, 5, 20, 20))); | 564 EXPECT_EQ(ui::EF_NONE, |
555 wm::ActivateWindow(window.get()); | 565 GetController()->previous_accelerator_for_test().modifiers()); |
556 const ui::Accelerator accelerator(ui::VKEY_A, ui::EF_NONE); | |
557 const ui::Accelerator empty_accelerator; | |
558 | 566 |
559 wm::WindowState* window_state = wm::GetWindowState(window.get()); | 567 generator.PressKey(ui::VKEY_TAB, ui::EF_CONTROL_DOWN); |
| 568 generator.ReleaseKey(ui::VKEY_TAB, ui::EF_CONTROL_DOWN); |
| 569 |
| 570 EXPECT_EQ(ui::VKEY_TAB, |
| 571 GetController()->previous_accelerator_for_test().key_code()); |
| 572 EXPECT_EQ(ui::EF_CONTROL_DOWN, |
| 573 GetController()->previous_accelerator_for_test().modifiers()); |
| 574 } |
| 575 |
| 576 TEST_F(AcceleratorControllerTest, DontRepeatToggleFullscreen) { |
| 577 const AcceleratorData accelerators[] = { |
| 578 {true, ui::VKEY_J, ui::EF_ALT_DOWN, TOGGLE_FULLSCREEN}, |
| 579 {true, ui::VKEY_K, ui::EF_ALT_DOWN, TOGGLE_FULLSCREEN}, |
| 580 }; |
| 581 GetController()->RegisterAccelerators(accelerators, arraysize(accelerators)); |
| 582 |
| 583 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
| 584 params.context = CurrentContext(); |
| 585 params.bounds = gfx::Rect(5, 5, 20, 20); |
| 586 views::Widget* widget = new views::Widget; |
| 587 widget->Init(params); |
| 588 widget->Show(); |
| 589 widget->Activate(); |
| 590 widget->GetNativeView()->SetProperty(aura::client::kCanMaximizeKey, true); |
| 591 |
| 592 aura::test::EventGenerator& generator = GetEventGenerator(); |
| 593 wm::WindowState* window_state = wm::GetWindowState(widget->GetNativeView()); |
560 | 594 |
561 // Toggling not suppressed. | 595 // Toggling not suppressed. |
562 GetController()->context()->UpdateContext(accelerator); | 596 generator.PressKey(ui::VKEY_J, ui::EF_ALT_DOWN); |
563 GetController()->PerformAction(TOGGLE_MAXIMIZED, accelerator); | 597 EXPECT_TRUE(window_state->IsFullscreen()); |
564 EXPECT_TRUE(window_state->IsMaximized()); | |
565 | 598 |
566 // The same accelerator - toggling suppressed. | 599 // The same accelerator - toggling suppressed. |
567 GetController()->context()->UpdateContext(accelerator); | 600 generator.PressKey(ui::VKEY_J, ui::EF_ALT_DOWN | ui::EF_IS_REPEAT); |
568 GetController()->PerformAction(TOGGLE_MAXIMIZED, accelerator); | 601 EXPECT_TRUE(window_state->IsFullscreen()); |
569 EXPECT_TRUE(window_state->IsMaximized()); | |
570 | 602 |
571 // Suppressed but not for gesture events. | 603 // Different accelerator. |
572 GetController()->PerformAction(TOGGLE_MAXIMIZED, empty_accelerator); | 604 generator.PressKey(ui::VKEY_K, ui::EF_ALT_DOWN); |
573 EXPECT_FALSE(window_state->IsMaximized()); | 605 EXPECT_FALSE(window_state->IsFullscreen()); |
574 } | 606 } |
575 | 607 |
576 #if defined(OS_WIN) && defined(USE_AURA) | 608 // TODO(oshima): Fix this test to use EventGenerator. |
| 609 #if defined(OS_WIN) |
577 // crbug.com/317592 | 610 // crbug.com/317592 |
578 #define MAYBE_ProcessOnce DISABLED_ProcessOnce | 611 #define MAYBE_ProcessOnce DISABLED_ProcessOnce |
579 #else | 612 #else |
580 #define MAYBE_ProcessOnce ProcessOnce | 613 #define MAYBE_ProcessOnce ProcessOnce |
581 #endif | 614 #endif |
582 | 615 |
583 #if defined(OS_WIN) || defined(USE_X11) | 616 #if defined(OS_WIN) || defined(USE_X11) |
584 TEST_F(AcceleratorControllerTest, MAYBE_ProcessOnce) { | 617 TEST_F(AcceleratorControllerTest, MAYBE_ProcessOnce) { |
585 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); | 618 ui::Accelerator accelerator_a(ui::VKEY_A, ui::EF_NONE); |
586 TestTarget target; | 619 TestTarget target; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 key_event3.SetTranslated(true); | 658 key_event3.SetTranslated(true); |
626 details = dispatcher->OnEventFromSource(&key_event3); | 659 details = dispatcher->OnEventFromSource(&key_event3); |
627 EXPECT_FALSE(key_event3.handled() || details.dispatcher_destroyed); | 660 EXPECT_FALSE(key_event3.handled() || details.dispatcher_destroyed); |
628 #endif | 661 #endif |
629 EXPECT_EQ(1, target.accelerator_pressed_count()); | 662 EXPECT_EQ(1, target.accelerator_pressed_count()); |
630 } | 663 } |
631 #endif | 664 #endif |
632 | 665 |
633 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { | 666 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { |
634 // CycleBackward | 667 // CycleBackward |
635 EXPECT_TRUE(ProcessWithContext( | 668 EXPECT_TRUE(GetController()->Process( |
636 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); | 669 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); |
637 // CycleForward | 670 // CycleForward |
638 EXPECT_TRUE(ProcessWithContext( | 671 EXPECT_TRUE( |
639 ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); | 672 GetController()->Process(ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); |
640 // CycleLinear | 673 // CycleLinear |
641 EXPECT_TRUE(ProcessWithContext( | 674 EXPECT_TRUE(GetController()->Process( |
642 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE))); | 675 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_NONE))); |
643 | 676 |
644 #if defined(OS_CHROMEOS) | 677 #if defined(OS_CHROMEOS) |
645 // Take screenshot / partial screenshot | 678 // Take screenshot / partial screenshot |
646 // True should always be returned regardless of the existence of the delegate. | 679 // True should always be returned regardless of the existence of the delegate. |
647 { | 680 { |
648 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); | 681 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); |
649 delegate->set_can_take_screenshot(false); | 682 delegate->set_can_take_screenshot(false); |
650 EXPECT_TRUE(ProcessWithContext( | 683 EXPECT_TRUE(GetController()->Process( |
651 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); | 684 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); |
652 EXPECT_TRUE(ProcessWithContext( | 685 EXPECT_TRUE( |
653 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); | 686 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); |
654 EXPECT_TRUE(ProcessWithContext( | 687 EXPECT_TRUE(GetController()->Process(ui::Accelerator( |
655 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, | 688 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
656 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | |
657 | 689 |
658 delegate->set_can_take_screenshot(true); | 690 delegate->set_can_take_screenshot(true); |
659 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); | 691 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
660 EXPECT_TRUE(ProcessWithContext( | 692 EXPECT_TRUE(GetController()->Process( |
661 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); | 693 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); |
662 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); | 694 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); |
663 EXPECT_TRUE(ProcessWithContext( | 695 EXPECT_TRUE( |
664 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); | 696 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); |
665 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 697 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
666 EXPECT_TRUE(ProcessWithContext( | 698 EXPECT_TRUE(GetController()->Process(ui::Accelerator( |
667 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, | 699 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
668 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | |
669 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 700 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
670 } | 701 } |
671 #endif | 702 #endif |
672 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); | 703 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); |
673 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); | 704 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); |
674 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); | 705 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); |
675 { | 706 { |
676 TestVolumeControlDelegate* delegate = | 707 TestVolumeControlDelegate* delegate = |
677 new TestVolumeControlDelegate(false); | 708 new TestVolumeControlDelegate(false); |
678 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( | 709 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( |
679 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | 710 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
680 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 711 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
681 EXPECT_FALSE(ProcessWithContext(volume_mute)); | 712 EXPECT_FALSE(GetController()->Process(volume_mute)); |
682 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 713 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
683 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 714 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
684 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 715 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
685 EXPECT_FALSE(ProcessWithContext(volume_down)); | 716 EXPECT_FALSE(GetController()->Process(volume_down)); |
686 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 717 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
687 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 718 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
688 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 719 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
689 EXPECT_FALSE(ProcessWithContext(volume_up)); | 720 EXPECT_FALSE(GetController()->Process(volume_up)); |
690 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 721 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
691 EXPECT_EQ(volume_up, delegate->last_accelerator()); | 722 EXPECT_EQ(volume_up, delegate->last_accelerator()); |
692 } | 723 } |
693 { | 724 { |
694 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true); | 725 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true); |
695 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( | 726 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( |
696 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | 727 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
697 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 728 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
698 EXPECT_TRUE(ProcessWithContext(volume_mute)); | 729 EXPECT_TRUE(GetController()->Process(volume_mute)); |
699 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 730 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
700 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 731 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
701 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 732 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
702 EXPECT_TRUE(ProcessWithContext(volume_down)); | 733 EXPECT_TRUE(GetController()->Process(volume_down)); |
703 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 734 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
704 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 735 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
705 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 736 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
706 EXPECT_TRUE(ProcessWithContext(volume_up)); | 737 EXPECT_TRUE(GetController()->Process(volume_up)); |
707 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 738 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
708 EXPECT_EQ(volume_up, delegate->last_accelerator()); | 739 EXPECT_EQ(volume_up, delegate->last_accelerator()); |
709 } | 740 } |
710 #if defined(OS_CHROMEOS) | 741 #if defined(OS_CHROMEOS) |
711 // Brightness | 742 // Brightness |
712 // ui::VKEY_BRIGHTNESS_DOWN/UP are not defined on Windows. | 743 // ui::VKEY_BRIGHTNESS_DOWN/UP are not defined on Windows. |
713 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); | 744 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); |
714 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE); | 745 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE); |
715 { | 746 { |
716 DummyBrightnessControlDelegate* delegate = | 747 DummyBrightnessControlDelegate* delegate = |
717 new DummyBrightnessControlDelegate(false); | 748 new DummyBrightnessControlDelegate(false); |
718 GetController()->SetBrightnessControlDelegate( | 749 GetController()->SetBrightnessControlDelegate( |
719 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); | 750 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
720 EXPECT_EQ(0, delegate->handle_brightness_down_count()); | 751 EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
721 EXPECT_FALSE(ProcessWithContext(brightness_down)); | 752 EXPECT_FALSE(GetController()->Process(brightness_down)); |
722 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 753 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
723 EXPECT_EQ(brightness_down, delegate->last_accelerator()); | 754 EXPECT_EQ(brightness_down, delegate->last_accelerator()); |
724 EXPECT_EQ(0, delegate->handle_brightness_up_count()); | 755 EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
725 EXPECT_FALSE(ProcessWithContext(brightness_up)); | 756 EXPECT_FALSE(GetController()->Process(brightness_up)); |
726 EXPECT_EQ(1, delegate->handle_brightness_up_count()); | 757 EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
727 EXPECT_EQ(brightness_up, delegate->last_accelerator()); | 758 EXPECT_EQ(brightness_up, delegate->last_accelerator()); |
728 } | 759 } |
729 { | 760 { |
730 DummyBrightnessControlDelegate* delegate = | 761 DummyBrightnessControlDelegate* delegate = |
731 new DummyBrightnessControlDelegate(true); | 762 new DummyBrightnessControlDelegate(true); |
732 GetController()->SetBrightnessControlDelegate( | 763 GetController()->SetBrightnessControlDelegate( |
733 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); | 764 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
734 EXPECT_EQ(0, delegate->handle_brightness_down_count()); | 765 EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
735 EXPECT_TRUE(ProcessWithContext(brightness_down)); | 766 EXPECT_TRUE(GetController()->Process(brightness_down)); |
736 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 767 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
737 EXPECT_EQ(brightness_down, delegate->last_accelerator()); | 768 EXPECT_EQ(brightness_down, delegate->last_accelerator()); |
738 EXPECT_EQ(0, delegate->handle_brightness_up_count()); | 769 EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
739 EXPECT_TRUE(ProcessWithContext(brightness_up)); | 770 EXPECT_TRUE(GetController()->Process(brightness_up)); |
740 EXPECT_EQ(1, delegate->handle_brightness_up_count()); | 771 EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
741 EXPECT_EQ(brightness_up, delegate->last_accelerator()); | 772 EXPECT_EQ(brightness_up, delegate->last_accelerator()); |
742 } | 773 } |
743 | 774 |
744 // Keyboard brightness | 775 // Keyboard brightness |
745 const ui::Accelerator alt_brightness_down(ui::VKEY_BRIGHTNESS_DOWN, | 776 const ui::Accelerator alt_brightness_down(ui::VKEY_BRIGHTNESS_DOWN, |
746 ui::EF_ALT_DOWN); | 777 ui::EF_ALT_DOWN); |
747 const ui::Accelerator alt_brightness_up(ui::VKEY_BRIGHTNESS_UP, | 778 const ui::Accelerator alt_brightness_up(ui::VKEY_BRIGHTNESS_UP, |
748 ui::EF_ALT_DOWN); | 779 ui::EF_ALT_DOWN); |
749 { | 780 { |
750 EXPECT_TRUE(ProcessWithContext(alt_brightness_down)); | 781 EXPECT_TRUE(GetController()->Process(alt_brightness_down)); |
751 EXPECT_TRUE(ProcessWithContext(alt_brightness_up)); | 782 EXPECT_TRUE(GetController()->Process(alt_brightness_up)); |
752 DummyKeyboardBrightnessControlDelegate* delegate = | 783 DummyKeyboardBrightnessControlDelegate* delegate = |
753 new DummyKeyboardBrightnessControlDelegate(false); | 784 new DummyKeyboardBrightnessControlDelegate(false); |
754 GetController()->SetKeyboardBrightnessControlDelegate( | 785 GetController()->SetKeyboardBrightnessControlDelegate( |
755 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass()); | 786 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass()); |
756 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count()); | 787 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count()); |
757 EXPECT_FALSE(ProcessWithContext(alt_brightness_down)); | 788 EXPECT_FALSE(GetController()->Process(alt_brightness_down)); |
758 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count()); | 789 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count()); |
759 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator()); | 790 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator()); |
760 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count()); | 791 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count()); |
761 EXPECT_FALSE(ProcessWithContext(alt_brightness_up)); | 792 EXPECT_FALSE(GetController()->Process(alt_brightness_up)); |
762 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count()); | 793 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count()); |
763 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator()); | 794 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator()); |
764 } | 795 } |
765 { | 796 { |
766 DummyKeyboardBrightnessControlDelegate* delegate = | 797 DummyKeyboardBrightnessControlDelegate* delegate = |
767 new DummyKeyboardBrightnessControlDelegate(true); | 798 new DummyKeyboardBrightnessControlDelegate(true); |
768 GetController()->SetKeyboardBrightnessControlDelegate( | 799 GetController()->SetKeyboardBrightnessControlDelegate( |
769 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass()); | 800 scoped_ptr<KeyboardBrightnessControlDelegate>(delegate).Pass()); |
770 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count()); | 801 EXPECT_EQ(0, delegate->handle_keyboard_brightness_down_count()); |
771 EXPECT_TRUE(ProcessWithContext(alt_brightness_down)); | 802 EXPECT_TRUE(GetController()->Process(alt_brightness_down)); |
772 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count()); | 803 EXPECT_EQ(1, delegate->handle_keyboard_brightness_down_count()); |
773 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator()); | 804 EXPECT_EQ(alt_brightness_down, delegate->last_accelerator()); |
774 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count()); | 805 EXPECT_EQ(0, delegate->handle_keyboard_brightness_up_count()); |
775 EXPECT_TRUE(ProcessWithContext(alt_brightness_up)); | 806 EXPECT_TRUE(GetController()->Process(alt_brightness_up)); |
776 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count()); | 807 EXPECT_EQ(1, delegate->handle_keyboard_brightness_up_count()); |
777 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator()); | 808 EXPECT_EQ(alt_brightness_up, delegate->last_accelerator()); |
778 } | 809 } |
779 #endif | 810 #endif |
780 | 811 |
781 #if !defined(NDEBUG) | 812 #if !defined(NDEBUG) |
782 // ToggleDesktopBackgroundMode | 813 // ToggleDesktopBackgroundMode |
783 EXPECT_TRUE(ProcessWithContext( | 814 EXPECT_TRUE(GetController()->Process( |
784 ui::Accelerator(ui::VKEY_B, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN))); | 815 ui::Accelerator(ui::VKEY_B, ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN))); |
785 #if !defined(OS_LINUX) | 816 #if !defined(OS_LINUX) |
786 // ToggleDesktopFullScreen (not implemented yet on Linux) | 817 // ToggleDesktopFullScreen (not implemented yet on Linux) |
787 EXPECT_TRUE(ProcessWithContext( | 818 EXPECT_TRUE(GetController()->Process( |
788 ui::Accelerator(ui::VKEY_F11, ui::EF_CONTROL_DOWN))); | 819 ui::Accelerator(ui::VKEY_F11, ui::EF_CONTROL_DOWN))); |
789 #endif // OS_LINUX | 820 #endif // OS_LINUX |
790 #endif // !NDEBUG | 821 #endif // !NDEBUG |
791 | 822 |
792 #if !defined(OS_WIN) | 823 #if !defined(OS_WIN) |
793 // Exit | 824 // Exit |
794 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); | 825 ExitWarningHandler* ewh = GetController()->GetExitWarningHandlerForTest(); |
795 ASSERT_TRUE(!!ewh); | 826 ASSERT_TRUE(!!ewh); |
796 StubForTest(ewh); | 827 StubForTest(ewh); |
797 EXPECT_TRUE(is_idle(ewh)); | 828 EXPECT_TRUE(is_idle(ewh)); |
798 EXPECT_FALSE(is_ui_shown(ewh)); | 829 EXPECT_FALSE(is_ui_shown(ewh)); |
799 EXPECT_TRUE(ProcessWithContext( | 830 EXPECT_TRUE(GetController()->Process( |
800 ui::Accelerator(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | 831 ui::Accelerator(ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
801 EXPECT_FALSE(is_idle(ewh)); | 832 EXPECT_FALSE(is_idle(ewh)); |
802 EXPECT_TRUE(is_ui_shown(ewh)); | 833 EXPECT_TRUE(is_ui_shown(ewh)); |
803 SimulateTimerExpired(ewh); | 834 SimulateTimerExpired(ewh); |
804 EXPECT_TRUE(is_idle(ewh)); | 835 EXPECT_TRUE(is_idle(ewh)); |
805 EXPECT_FALSE(is_ui_shown(ewh)); | 836 EXPECT_FALSE(is_ui_shown(ewh)); |
806 Reset(ewh); | 837 Reset(ewh); |
807 #endif | 838 #endif |
808 | 839 |
809 // New tab | 840 // New tab |
810 EXPECT_TRUE(ProcessWithContext( | 841 EXPECT_TRUE(GetController()->Process( |
811 ui::Accelerator(ui::VKEY_T, ui::EF_CONTROL_DOWN))); | 842 ui::Accelerator(ui::VKEY_T, ui::EF_CONTROL_DOWN))); |
812 | 843 |
813 // New incognito window | 844 // New incognito window |
814 EXPECT_TRUE(ProcessWithContext( | 845 EXPECT_TRUE(GetController()->Process( |
815 ui::Accelerator(ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | 846 ui::Accelerator(ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
816 | 847 |
817 // New window | 848 // New window |
818 EXPECT_TRUE(ProcessWithContext( | 849 EXPECT_TRUE(GetController()->Process( |
819 ui::Accelerator(ui::VKEY_N, ui::EF_CONTROL_DOWN))); | 850 ui::Accelerator(ui::VKEY_N, ui::EF_CONTROL_DOWN))); |
820 | 851 |
821 // Restore tab | 852 // Restore tab |
822 EXPECT_TRUE(ProcessWithContext( | 853 EXPECT_TRUE(GetController()->Process( |
823 ui::Accelerator(ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | 854 ui::Accelerator(ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
824 | 855 |
825 // Show task manager | 856 // Show task manager |
826 EXPECT_TRUE(ProcessWithContext( | 857 EXPECT_TRUE(GetController()->Process( |
827 ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN))); | 858 ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN))); |
828 | 859 |
829 #if defined(OS_CHROMEOS) | 860 #if defined(OS_CHROMEOS) |
830 // Open file manager | 861 // Open file manager |
831 EXPECT_TRUE(ProcessWithContext( | 862 EXPECT_TRUE(GetController()->Process( |
832 ui::Accelerator(ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); | 863 ui::Accelerator(ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); |
833 | 864 |
834 // Lock screen | 865 // Lock screen |
835 // NOTE: Accelerators that do not work on the lock screen need to be | 866 // NOTE: Accelerators that do not work on the lock screen need to be |
836 // tested before the sequence below is invoked because it causes a side | 867 // tested before the sequence below is invoked because it causes a side |
837 // effect of locking the screen. | 868 // effect of locking the screen. |
838 EXPECT_TRUE(ProcessWithContext( | 869 EXPECT_TRUE(GetController()->Process( |
839 ui::Accelerator(ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | 870 ui::Accelerator(ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
840 #endif | 871 #endif |
841 } | 872 } |
842 | 873 |
843 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsToggleAppList) { | 874 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsToggleAppList) { |
844 AccessibilityDelegate* delegate = | 875 AccessibilityDelegate* delegate = |
845 ash::Shell::GetInstance()->accessibility_delegate(); | 876 ash::Shell::GetInstance()->accessibility_delegate(); |
846 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 877 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); |
847 | 878 |
848 // The press event should not open the AppList, the release should instead. | 879 // The press event should not open the AppList, the release should instead. |
849 EXPECT_FALSE(ProcessWithContext( | 880 EXPECT_FALSE( |
850 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 881 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
851 EXPECT_TRUE(ProcessWithContext( | 882 EXPECT_EQ(ui::VKEY_LWIN, |
852 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 883 GetController()->previous_accelerator_for_test().key_code()); |
| 884 |
| 885 EXPECT_TRUE( |
| 886 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
853 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 887 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); |
854 | 888 |
855 // When spoken feedback is on, the AppList should not toggle. | 889 // When spoken feedback is on, the AppList should not toggle. |
856 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 890 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
857 EXPECT_FALSE(ProcessWithContext( | 891 EXPECT_FALSE( |
858 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 892 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
859 EXPECT_FALSE(ProcessWithContext( | 893 EXPECT_FALSE( |
860 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 894 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
861 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 895 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
862 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 896 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); |
863 | 897 |
864 EXPECT_FALSE(ProcessWithContext( | 898 EXPECT_FALSE( |
865 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 899 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
866 EXPECT_TRUE(ProcessWithContext( | 900 EXPECT_TRUE( |
867 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 901 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
868 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 902 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); |
869 | 903 |
870 // When spoken feedback is on, the AppList should not toggle. | 904 // When spoken feedback is on, the AppList should not toggle. |
871 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 905 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
872 EXPECT_FALSE(ProcessWithContext( | 906 EXPECT_FALSE( |
873 ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 907 GetController()->Process(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
874 EXPECT_FALSE(ProcessWithContext( | 908 EXPECT_FALSE( |
875 ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 909 GetController()->Process(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
876 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 910 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
877 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 911 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); |
878 } | 912 } |
879 | 913 |
880 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { | 914 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { |
881 // Test IME shortcuts. | 915 // Test IME shortcuts. |
882 { | 916 { |
883 const ui::Accelerator control_space(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); | 917 const ui::Accelerator control_space(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); |
884 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); | 918 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); |
885 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, ui::EF_NONE); | 919 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, ui::EF_NONE); |
886 const ui::Accelerator wide_half_1(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE); | 920 const ui::Accelerator wide_half_1(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE); |
887 const ui::Accelerator wide_half_2(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE); | 921 const ui::Accelerator wide_half_2(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE); |
888 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); | 922 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); |
889 EXPECT_FALSE(ProcessWithContext(control_space)); | 923 EXPECT_FALSE(GetController()->Process(control_space)); |
890 EXPECT_FALSE(ProcessWithContext(convert)); | 924 EXPECT_FALSE(GetController()->Process(convert)); |
891 EXPECT_FALSE(ProcessWithContext(non_convert)); | 925 EXPECT_FALSE(GetController()->Process(non_convert)); |
892 EXPECT_FALSE(ProcessWithContext(wide_half_1)); | 926 EXPECT_FALSE(GetController()->Process(wide_half_1)); |
893 EXPECT_FALSE(ProcessWithContext(wide_half_2)); | 927 EXPECT_FALSE(GetController()->Process(wide_half_2)); |
894 EXPECT_FALSE(ProcessWithContext(hangul)); | 928 EXPECT_FALSE(GetController()->Process(hangul)); |
895 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); | 929 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); |
896 GetController()->SetImeControlDelegate( | 930 GetController()->SetImeControlDelegate( |
897 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 931 scoped_ptr<ImeControlDelegate>(delegate).Pass()); |
898 EXPECT_EQ(0, delegate->handle_previous_ime_count()); | 932 EXPECT_EQ(0, delegate->handle_previous_ime_count()); |
899 EXPECT_TRUE(ProcessWithContext(control_space)); | 933 EXPECT_TRUE(GetController()->Process(control_space)); |
900 EXPECT_EQ(1, delegate->handle_previous_ime_count()); | 934 EXPECT_EQ(1, delegate->handle_previous_ime_count()); |
901 EXPECT_EQ(0, delegate->handle_switch_ime_count()); | 935 EXPECT_EQ(0, delegate->handle_switch_ime_count()); |
902 EXPECT_TRUE(ProcessWithContext(convert)); | 936 EXPECT_TRUE(GetController()->Process(convert)); |
903 EXPECT_EQ(1, delegate->handle_switch_ime_count()); | 937 EXPECT_EQ(1, delegate->handle_switch_ime_count()); |
904 EXPECT_TRUE(ProcessWithContext(non_convert)); | 938 EXPECT_TRUE(GetController()->Process(non_convert)); |
905 EXPECT_EQ(2, delegate->handle_switch_ime_count()); | 939 EXPECT_EQ(2, delegate->handle_switch_ime_count()); |
906 EXPECT_TRUE(ProcessWithContext(wide_half_1)); | 940 EXPECT_TRUE(GetController()->Process(wide_half_1)); |
907 EXPECT_EQ(3, delegate->handle_switch_ime_count()); | 941 EXPECT_EQ(3, delegate->handle_switch_ime_count()); |
908 EXPECT_TRUE(ProcessWithContext(wide_half_2)); | 942 EXPECT_TRUE(GetController()->Process(wide_half_2)); |
909 EXPECT_EQ(4, delegate->handle_switch_ime_count()); | 943 EXPECT_EQ(4, delegate->handle_switch_ime_count()); |
910 EXPECT_TRUE(ProcessWithContext(hangul)); | 944 EXPECT_TRUE(GetController()->Process(hangul)); |
911 EXPECT_EQ(5, delegate->handle_switch_ime_count()); | 945 EXPECT_EQ(5, delegate->handle_switch_ime_count()); |
912 } | 946 } |
913 | 947 |
914 // Test IME shortcuts that are triggered on key release. | 948 // Test IME shortcuts that are triggered on key release. |
915 { | 949 { |
916 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, | 950 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, |
917 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 951 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
918 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 952 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
919 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, | 953 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, |
920 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 954 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
921 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 955 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
922 | 956 |
923 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); | 957 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); |
924 GetController()->SetImeControlDelegate( | 958 GetController()->SetImeControlDelegate( |
925 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 959 scoped_ptr<ImeControlDelegate>(delegate).Pass()); |
926 EXPECT_EQ(0, delegate->handle_next_ime_count()); | 960 EXPECT_EQ(0, delegate->handle_next_ime_count()); |
927 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); | 961 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
928 EXPECT_TRUE(ProcessWithContext(shift_alt)); | 962 EXPECT_TRUE(GetController()->Process(shift_alt)); |
929 EXPECT_EQ(1, delegate->handle_next_ime_count()); | 963 EXPECT_EQ(1, delegate->handle_next_ime_count()); |
930 EXPECT_FALSE(ProcessWithContext(alt_shift_press)); | 964 EXPECT_FALSE(GetController()->Process(alt_shift_press)); |
931 EXPECT_TRUE(ProcessWithContext(alt_shift)); | 965 EXPECT_TRUE(GetController()->Process(alt_shift)); |
932 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 966 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
933 | 967 |
934 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is | 968 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is |
935 // released. | 969 // released. |
936 const ui::Accelerator shift_alt_x_press( | 970 const ui::Accelerator shift_alt_x_press( |
937 ui::VKEY_X, | 971 ui::VKEY_X, |
938 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 972 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
939 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, | 973 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, |
940 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 974 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
941 | 975 |
942 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); | 976 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
943 EXPECT_FALSE(ProcessWithContext(shift_alt_x_press)); | 977 EXPECT_FALSE(GetController()->Process(shift_alt_x_press)); |
944 EXPECT_FALSE(ProcessWithContext(shift_alt_x)); | 978 EXPECT_FALSE(GetController()->Process(shift_alt_x)); |
945 EXPECT_FALSE(ProcessWithContext(shift_alt)); | 979 EXPECT_FALSE(GetController()->Process(shift_alt)); |
946 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 980 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
947 | 981 |
948 // But we _should_ if X is either VKEY_RETURN or VKEY_SPACE. | 982 // But we _should_ if X is either VKEY_RETURN or VKEY_SPACE. |
949 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. | 983 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. |
950 const ui::Accelerator shift_alt_return_press( | 984 const ui::Accelerator shift_alt_return_press( |
951 ui::VKEY_RETURN, | 985 ui::VKEY_RETURN, |
952 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 986 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
953 const ReleaseAccelerator shift_alt_return( | 987 const ReleaseAccelerator shift_alt_return( |
954 ui::VKEY_RETURN, | 988 ui::VKEY_RETURN, |
955 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 989 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
956 | 990 |
957 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); | 991 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
958 EXPECT_FALSE(ProcessWithContext(shift_alt_return_press)); | 992 EXPECT_FALSE(GetController()->Process(shift_alt_return_press)); |
959 EXPECT_FALSE(ProcessWithContext(shift_alt_return)); | 993 EXPECT_FALSE(GetController()->Process(shift_alt_return)); |
960 EXPECT_TRUE(ProcessWithContext(shift_alt)); | 994 EXPECT_TRUE(GetController()->Process(shift_alt)); |
961 EXPECT_EQ(3, delegate->handle_next_ime_count()); | 995 EXPECT_EQ(3, delegate->handle_next_ime_count()); |
962 | 996 |
963 const ui::Accelerator shift_alt_space_press( | 997 const ui::Accelerator shift_alt_space_press( |
964 ui::VKEY_SPACE, | 998 ui::VKEY_SPACE, |
965 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 999 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
966 const ReleaseAccelerator shift_alt_space( | 1000 const ReleaseAccelerator shift_alt_space( |
967 ui::VKEY_SPACE, | 1001 ui::VKEY_SPACE, |
968 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1002 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
969 | 1003 |
970 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); | 1004 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
971 EXPECT_FALSE(ProcessWithContext(shift_alt_space_press)); | 1005 EXPECT_FALSE(GetController()->Process(shift_alt_space_press)); |
972 EXPECT_FALSE(ProcessWithContext(shift_alt_space)); | 1006 EXPECT_FALSE(GetController()->Process(shift_alt_space)); |
973 EXPECT_TRUE(ProcessWithContext(shift_alt)); | 1007 EXPECT_TRUE(GetController()->Process(shift_alt)); |
974 EXPECT_EQ(4, delegate->handle_next_ime_count()); | 1008 EXPECT_EQ(4, delegate->handle_next_ime_count()); |
975 } | 1009 } |
976 | 1010 |
977 #if defined(OS_CHROMEOS) | 1011 #if defined(OS_CHROMEOS) |
978 // Test IME shortcuts again with unnormalized accelerators (Chrome OS only). | 1012 // Test IME shortcuts again with unnormalized accelerators (Chrome OS only). |
979 { | 1013 { |
980 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 1014 const ui::Accelerator shift_alt_press(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
981 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); | 1015 const ReleaseAccelerator shift_alt(ui::VKEY_MENU, ui::EF_SHIFT_DOWN); |
982 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 1016 const ui::Accelerator alt_shift_press(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
983 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); | 1017 const ReleaseAccelerator alt_shift(ui::VKEY_SHIFT, ui::EF_ALT_DOWN); |
984 | 1018 |
985 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); | 1019 DummyImeControlDelegate* delegate = new DummyImeControlDelegate(true); |
986 GetController()->SetImeControlDelegate( | 1020 GetController()->SetImeControlDelegate( |
987 scoped_ptr<ImeControlDelegate>(delegate).Pass()); | 1021 scoped_ptr<ImeControlDelegate>(delegate).Pass()); |
988 EXPECT_EQ(0, delegate->handle_next_ime_count()); | 1022 EXPECT_EQ(0, delegate->handle_next_ime_count()); |
989 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); | 1023 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
990 EXPECT_TRUE(ProcessWithContext(shift_alt)); | 1024 EXPECT_TRUE(GetController()->Process(shift_alt)); |
991 EXPECT_EQ(1, delegate->handle_next_ime_count()); | 1025 EXPECT_EQ(1, delegate->handle_next_ime_count()); |
992 EXPECT_FALSE(ProcessWithContext(alt_shift_press)); | 1026 EXPECT_FALSE(GetController()->Process(alt_shift_press)); |
993 EXPECT_TRUE(ProcessWithContext(alt_shift)); | 1027 EXPECT_TRUE(GetController()->Process(alt_shift)); |
994 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 1028 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
995 | 1029 |
996 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is | 1030 // We should NOT switch IME when e.g. Shift+Alt+X is pressed and X is |
997 // released. | 1031 // released. |
998 const ui::Accelerator shift_alt_x_press( | 1032 const ui::Accelerator shift_alt_x_press( |
999 ui::VKEY_X, | 1033 ui::VKEY_X, |
1000 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1034 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
1001 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, | 1035 const ReleaseAccelerator shift_alt_x(ui::VKEY_X, |
1002 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1036 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
1003 | 1037 |
1004 EXPECT_FALSE(ProcessWithContext(shift_alt_press)); | 1038 EXPECT_FALSE(GetController()->Process(shift_alt_press)); |
1005 EXPECT_FALSE(ProcessWithContext(shift_alt_x_press)); | 1039 EXPECT_FALSE(GetController()->Process(shift_alt_x_press)); |
1006 EXPECT_FALSE(ProcessWithContext(shift_alt_x)); | 1040 EXPECT_FALSE(GetController()->Process(shift_alt_x)); |
1007 EXPECT_FALSE(ProcessWithContext(shift_alt)); | 1041 EXPECT_FALSE(GetController()->Process(shift_alt)); |
1008 EXPECT_EQ(2, delegate->handle_next_ime_count()); | 1042 EXPECT_EQ(2, delegate->handle_next_ime_count()); |
1009 } | 1043 } |
1010 #endif | 1044 #endif |
1011 } | 1045 } |
1012 | 1046 |
1013 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. | 1047 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. |
1014 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsWorkaround139556) { | 1048 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsWorkaround139556) { |
1015 // The workaround for crbug.com/139556 depends on the fact that we don't | 1049 // The workaround for crbug.com/139556 depends on the fact that we don't |
1016 // use Shift+Alt+Enter/Space with ET_KEY_PRESSED as an accelerator. Test it. | 1050 // use Shift+Alt+Enter/Space with ET_KEY_PRESSED as an accelerator. Test it. |
1017 const ui::Accelerator shift_alt_return_press( | 1051 const ui::Accelerator shift_alt_return_press( |
1018 ui::VKEY_RETURN, | 1052 ui::VKEY_RETURN, |
1019 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1053 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
1020 EXPECT_FALSE(ProcessWithContext(shift_alt_return_press)); | 1054 EXPECT_FALSE(GetController()->Process(shift_alt_return_press)); |
1021 const ui::Accelerator shift_alt_space_press( | 1055 const ui::Accelerator shift_alt_space_press( |
1022 ui::VKEY_SPACE, | 1056 ui::VKEY_SPACE, |
1023 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 1057 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
1024 EXPECT_FALSE(ProcessWithContext(shift_alt_space_press)); | 1058 EXPECT_FALSE(GetController()->Process(shift_alt_space_press)); |
1025 } | 1059 } |
1026 | 1060 |
1027 TEST_F(AcceleratorControllerTest, ReservedAccelerators) { | 1061 TEST_F(AcceleratorControllerTest, ReservedAccelerators) { |
1028 // (Shift+)Alt+Tab and Chrome OS top-row keys are reserved. | 1062 // (Shift+)Alt+Tab and Chrome OS top-row keys are reserved. |
1029 EXPECT_TRUE(GetController()->IsReservedAccelerator( | 1063 EXPECT_TRUE(GetController()->IsReservedAccelerator( |
1030 ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); | 1064 ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); |
1031 EXPECT_TRUE(GetController()->IsReservedAccelerator( | 1065 EXPECT_TRUE(GetController()->IsReservedAccelerator( |
1032 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); | 1066 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); |
1033 #if defined(OS_CHROMEOS) | 1067 #if defined(OS_CHROMEOS) |
1034 EXPECT_TRUE(GetController()->IsReservedAccelerator( | 1068 EXPECT_TRUE(GetController()->IsReservedAccelerator( |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1083 << " for action (disallowed at modal window): " << *it; | 1117 << " for action (disallowed at modal window): " << *it; |
1084 } | 1118 } |
1085 } | 1119 } |
1086 // Testing of top row (F5-F10) accelerators that should still work | 1120 // Testing of top row (F5-F10) accelerators that should still work |
1087 // when a modal window is open | 1121 // when a modal window is open |
1088 // | 1122 // |
1089 // Screenshot | 1123 // Screenshot |
1090 { | 1124 { |
1091 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); | 1125 test::TestScreenshotDelegate* delegate = GetScreenshotDelegate(); |
1092 delegate->set_can_take_screenshot(false); | 1126 delegate->set_can_take_screenshot(false); |
1093 EXPECT_TRUE(ProcessWithContext( | 1127 EXPECT_TRUE(GetController()->Process( |
1094 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); | 1128 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); |
1095 EXPECT_TRUE(ProcessWithContext( | 1129 EXPECT_TRUE( |
1096 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); | 1130 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); |
1097 EXPECT_TRUE(ProcessWithContext( | 1131 EXPECT_TRUE(GetController()->Process(ui::Accelerator( |
1098 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, | 1132 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
1099 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | |
1100 delegate->set_can_take_screenshot(true); | 1133 delegate->set_can_take_screenshot(true); |
1101 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); | 1134 EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
1102 EXPECT_TRUE(ProcessWithContext( | 1135 EXPECT_TRUE(GetController()->Process( |
1103 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); | 1136 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_CONTROL_DOWN))); |
1104 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); | 1137 EXPECT_EQ(1, delegate->handle_take_screenshot_count()); |
1105 EXPECT_TRUE(ProcessWithContext( | 1138 EXPECT_TRUE( |
1106 ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); | 1139 GetController()->Process(ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); |
1107 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 1140 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
1108 EXPECT_TRUE(ProcessWithContext( | 1141 EXPECT_TRUE(GetController()->Process(ui::Accelerator( |
1109 ui::Accelerator(ui::VKEY_MEDIA_LAUNCH_APP1, | 1142 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
1110 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | |
1111 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 1143 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
1112 } | 1144 } |
1113 // Brightness | 1145 // Brightness |
1114 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); | 1146 const ui::Accelerator brightness_down(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); |
1115 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE); | 1147 const ui::Accelerator brightness_up(ui::VKEY_BRIGHTNESS_UP, ui::EF_NONE); |
1116 { | 1148 { |
1117 DummyBrightnessControlDelegate* delegate = | 1149 DummyBrightnessControlDelegate* delegate = |
1118 new DummyBrightnessControlDelegate(false); | 1150 new DummyBrightnessControlDelegate(false); |
1119 GetController()->SetBrightnessControlDelegate( | 1151 GetController()->SetBrightnessControlDelegate( |
1120 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); | 1152 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
1121 EXPECT_EQ(0, delegate->handle_brightness_down_count()); | 1153 EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
1122 EXPECT_FALSE(ProcessWithContext(brightness_down)); | 1154 EXPECT_FALSE(GetController()->Process(brightness_down)); |
1123 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 1155 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
1124 EXPECT_EQ(brightness_down, delegate->last_accelerator()); | 1156 EXPECT_EQ(brightness_down, delegate->last_accelerator()); |
1125 EXPECT_EQ(0, delegate->handle_brightness_up_count()); | 1157 EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
1126 EXPECT_FALSE(ProcessWithContext(brightness_up)); | 1158 EXPECT_FALSE(GetController()->Process(brightness_up)); |
1127 EXPECT_EQ(1, delegate->handle_brightness_up_count()); | 1159 EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
1128 EXPECT_EQ(brightness_up, delegate->last_accelerator()); | 1160 EXPECT_EQ(brightness_up, delegate->last_accelerator()); |
1129 } | 1161 } |
1130 { | 1162 { |
1131 DummyBrightnessControlDelegate* delegate = | 1163 DummyBrightnessControlDelegate* delegate = |
1132 new DummyBrightnessControlDelegate(true); | 1164 new DummyBrightnessControlDelegate(true); |
1133 GetController()->SetBrightnessControlDelegate( | 1165 GetController()->SetBrightnessControlDelegate( |
1134 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); | 1166 scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
1135 EXPECT_EQ(0, delegate->handle_brightness_down_count()); | 1167 EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
1136 EXPECT_TRUE(ProcessWithContext(brightness_down)); | 1168 EXPECT_TRUE(GetController()->Process(brightness_down)); |
1137 EXPECT_EQ(1, delegate->handle_brightness_down_count()); | 1169 EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
1138 EXPECT_EQ(brightness_down, delegate->last_accelerator()); | 1170 EXPECT_EQ(brightness_down, delegate->last_accelerator()); |
1139 EXPECT_EQ(0, delegate->handle_brightness_up_count()); | 1171 EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
1140 EXPECT_TRUE(ProcessWithContext(brightness_up)); | 1172 EXPECT_TRUE(GetController()->Process(brightness_up)); |
1141 EXPECT_EQ(1, delegate->handle_brightness_up_count()); | 1173 EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
1142 EXPECT_EQ(brightness_up, delegate->last_accelerator()); | 1174 EXPECT_EQ(brightness_up, delegate->last_accelerator()); |
1143 } | 1175 } |
1144 // Volume | 1176 // Volume |
1145 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); | 1177 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); |
1146 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); | 1178 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); |
1147 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); | 1179 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); |
1148 { | 1180 { |
1149 EXPECT_TRUE(ProcessWithContext(volume_mute)); | 1181 EXPECT_TRUE(GetController()->Process(volume_mute)); |
1150 EXPECT_TRUE(ProcessWithContext(volume_down)); | 1182 EXPECT_TRUE(GetController()->Process(volume_down)); |
1151 EXPECT_TRUE(ProcessWithContext(volume_up)); | 1183 EXPECT_TRUE(GetController()->Process(volume_up)); |
1152 TestVolumeControlDelegate* delegate = | 1184 TestVolumeControlDelegate* delegate = |
1153 new TestVolumeControlDelegate(false); | 1185 new TestVolumeControlDelegate(false); |
1154 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( | 1186 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( |
1155 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | 1187 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
1156 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 1188 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
1157 EXPECT_FALSE(ProcessWithContext(volume_mute)); | 1189 EXPECT_FALSE(GetController()->Process(volume_mute)); |
1158 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 1190 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
1159 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 1191 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
1160 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 1192 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
1161 EXPECT_FALSE(ProcessWithContext(volume_down)); | 1193 EXPECT_FALSE(GetController()->Process(volume_down)); |
1162 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 1194 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
1163 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 1195 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
1164 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 1196 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
1165 EXPECT_FALSE(ProcessWithContext(volume_up)); | 1197 EXPECT_FALSE(GetController()->Process(volume_up)); |
1166 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 1198 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
1167 EXPECT_EQ(volume_up, delegate->last_accelerator()); | 1199 EXPECT_EQ(volume_up, delegate->last_accelerator()); |
1168 } | 1200 } |
1169 { | 1201 { |
1170 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true); | 1202 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate(true); |
1171 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( | 1203 ash::Shell::GetInstance()->system_tray_delegate()->SetVolumeControlDelegate( |
1172 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); | 1204 scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
1173 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 1205 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
1174 EXPECT_TRUE(ProcessWithContext(volume_mute)); | 1206 EXPECT_TRUE(GetController()->Process(volume_mute)); |
1175 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 1207 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
1176 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 1208 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
1177 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 1209 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
1178 EXPECT_TRUE(ProcessWithContext(volume_down)); | 1210 EXPECT_TRUE(GetController()->Process(volume_down)); |
1179 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 1211 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
1180 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 1212 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
1181 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 1213 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
1182 EXPECT_TRUE(ProcessWithContext(volume_up)); | 1214 EXPECT_TRUE(GetController()->Process(volume_up)); |
1183 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 1215 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
1184 EXPECT_EQ(volume_up, delegate->last_accelerator()); | 1216 EXPECT_EQ(volume_up, delegate->last_accelerator()); |
1185 } | 1217 } |
1186 } | 1218 } |
1187 #endif | 1219 #endif |
1188 | 1220 |
1189 TEST_F(AcceleratorControllerTest, DisallowedWithNoWindow) { | 1221 TEST_F(AcceleratorControllerTest, DisallowedWithNoWindow) { |
1190 const ui::Accelerator dummy; | 1222 const ui::Accelerator dummy; |
1191 AccessibilityDelegate* delegate = | 1223 AccessibilityDelegate* delegate = |
1192 ash::Shell::GetInstance()->accessibility_delegate(); | 1224 ash::Shell::GetInstance()->accessibility_delegate(); |
(...skipping 18 matching lines...) Expand all Loading... |
1211 // Don't alert if we have a minimized window either. | 1243 // Don't alert if we have a minimized window either. |
1212 GetController()->PerformAction(WINDOW_MINIMIZE, dummy); | 1244 GetController()->PerformAction(WINDOW_MINIMIZE, dummy); |
1213 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { | 1245 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { |
1214 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); | 1246 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); |
1215 GetController()->PerformAction(kActionsNeedingWindow[i], dummy); | 1247 GetController()->PerformAction(kActionsNeedingWindow[i], dummy); |
1216 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); | 1248 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); |
1217 } | 1249 } |
1218 } | 1250 } |
1219 | 1251 |
1220 } // namespace ash | 1252 } // namespace ash |
OLD | NEW |