| 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 |