| 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/accessibility_types.h" | 9 #include "ash/accessibility_types.h" |
| 10 #include "ash/ash_switches.h" | 10 #include "ash/ash_switches.h" |
| 11 #include "ash/ime_control_delegate.h" | 11 #include "ash/ime_control_delegate.h" |
| 12 #include "ash/public/cpp/config.h" |
| 12 #include "ash/public/cpp/shell_window_ids.h" | 13 #include "ash/public/cpp/shell_window_ids.h" |
| 13 #include "ash/session/session_controller.h" | 14 #include "ash/session/session_controller.h" |
| 14 #include "ash/shell.h" | 15 #include "ash/shell.h" |
| 15 #include "ash/shell_port.h" | 16 #include "ash/shell_port.h" |
| 16 #include "ash/system/brightness_control_delegate.h" | 17 #include "ash/system/brightness_control_delegate.h" |
| 17 #include "ash/system/keyboard_brightness_control_delegate.h" | 18 #include "ash/system/keyboard_brightness_control_delegate.h" |
| 18 #include "ash/system/tray/system_tray_delegate.h" | 19 #include "ash/system/tray/system_tray_delegate.h" |
| 19 #include "ash/test/ash_test_base.h" | 20 #include "ash/test/ash_test_base.h" |
| 20 #include "ash/test/lock_state_controller_test_api.h" | 21 #include "ash/test/lock_state_controller_test_api.h" |
| 21 #include "ash/test/test_screenshot_delegate.h" | 22 #include "ash/test/test_screenshot_delegate.h" |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 WmWindow::Get(window.get())); | 517 WmWindow::Get(window.get())); |
| 517 EXPECT_EQ(expected_bounds.ToString(), window->bounds().ToString()); | 518 EXPECT_EQ(expected_bounds.ToString(), window->bounds().ToString()); |
| 518 // Snap left again ->> becomes normal. | 519 // Snap left again ->> becomes normal. |
| 519 GetController()->PerformActionIfEnabled(WINDOW_CYCLE_SNAP_LEFT); | 520 GetController()->PerformActionIfEnabled(WINDOW_CYCLE_SNAP_LEFT); |
| 520 EXPECT_TRUE(window_state->IsNormalStateType()); | 521 EXPECT_TRUE(window_state->IsNormalStateType()); |
| 521 EXPECT_EQ(normal_bounds.ToString(), window->bounds().ToString()); | 522 EXPECT_EQ(normal_bounds.ToString(), window->bounds().ToString()); |
| 522 } | 523 } |
| 523 | 524 |
| 524 TEST_F(AcceleratorControllerTest, RotateScreen) { | 525 TEST_F(AcceleratorControllerTest, RotateScreen) { |
| 525 // TODO: needs GetDisplayInfo http://crbug.com/622480. | 526 // TODO: needs GetDisplayInfo http://crbug.com/622480. |
| 526 if (ShellPort::Get()->IsRunningInMash()) | 527 if (Shell::GetAshConfig() == Config::MASH) |
| 527 return; | 528 return; |
| 528 | 529 |
| 529 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 530 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
| 530 display::Display::Rotation initial_rotation = | 531 display::Display::Rotation initial_rotation = |
| 531 GetActiveDisplayRotation(display.id()); | 532 GetActiveDisplayRotation(display.id()); |
| 532 ui::test::EventGenerator& generator = GetEventGenerator(); | 533 ui::test::EventGenerator& generator = GetEventGenerator(); |
| 533 generator.PressKey(ui::VKEY_BROWSER_REFRESH, | 534 generator.PressKey(ui::VKEY_BROWSER_REFRESH, |
| 534 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); | 535 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); |
| 535 generator.ReleaseKey(ui::VKEY_BROWSER_REFRESH, | 536 generator.ReleaseKey(ui::VKEY_BROWSER_REFRESH, |
| 536 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); | 537 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 key_event.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_A, 0); | 657 key_event.InitKeyEvent(ui::ET_KEY_RELEASED, ui::VKEY_A, 0); |
| 657 ui::KeyEvent key_event3(key_event); | 658 ui::KeyEvent key_event3(key_event); |
| 658 details = sink->OnEventFromSource(&key_event3); | 659 details = sink->OnEventFromSource(&key_event3); |
| 659 EXPECT_FALSE(key_event3.handled() || details.dispatcher_destroyed); | 660 EXPECT_FALSE(key_event3.handled() || details.dispatcher_destroyed); |
| 660 EXPECT_EQ(1, target.accelerator_pressed_count()); | 661 EXPECT_EQ(1, target.accelerator_pressed_count()); |
| 661 } | 662 } |
| 662 #endif | 663 #endif |
| 663 | 664 |
| 664 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { | 665 TEST_F(AcceleratorControllerTest, GlobalAccelerators) { |
| 665 // TODO: TestScreenshotDelegate is null in mash http://crbug.com/632111. | 666 // TODO: TestScreenshotDelegate is null in mash http://crbug.com/632111. |
| 666 if (ShellPort::Get()->IsRunningInMash()) | 667 if (Shell::GetAshConfig() == Config::MASH) |
| 667 return; | 668 return; |
| 668 | 669 |
| 669 // CycleBackward | 670 // CycleBackward |
| 670 EXPECT_TRUE(ProcessInController( | 671 EXPECT_TRUE(ProcessInController( |
| 671 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); | 672 ui::Accelerator(ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN))); |
| 672 // CycleForward | 673 // CycleForward |
| 673 EXPECT_TRUE( | 674 EXPECT_TRUE( |
| 674 ProcessInController(ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); | 675 ProcessInController(ui::Accelerator(ui::VKEY_TAB, ui::EF_ALT_DOWN))); |
| 675 // CycleLinear | 676 // CycleLinear |
| 676 EXPECT_TRUE(ProcessInController( | 677 EXPECT_TRUE(ProcessInController( |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 } | 1035 } |
| 1035 | 1036 |
| 1036 private: | 1037 private: |
| 1037 DISALLOW_COPY_AND_ASSIGN(PreferredReservedAcceleratorsTest); | 1038 DISALLOW_COPY_AND_ASSIGN(PreferredReservedAcceleratorsTest); |
| 1038 }; | 1039 }; |
| 1039 | 1040 |
| 1040 } // namespace | 1041 } // namespace |
| 1041 | 1042 |
| 1042 TEST_F(PreferredReservedAcceleratorsTest, AcceleratorsWithFullscreen) { | 1043 TEST_F(PreferredReservedAcceleratorsTest, AcceleratorsWithFullscreen) { |
| 1043 // TODO: needs LockStateController ported: http://crbug.com/632189. | 1044 // TODO: needs LockStateController ported: http://crbug.com/632189. |
| 1044 if (ShellPort::Get()->IsRunningInMash()) | 1045 if (Shell::GetAshConfig() == Config::MASH) |
| 1045 return; | 1046 return; |
| 1046 | 1047 |
| 1047 aura::Window* w1 = CreateTestWindowInShellWithId(0); | 1048 aura::Window* w1 = CreateTestWindowInShellWithId(0); |
| 1048 aura::Window* w2 = CreateTestWindowInShellWithId(1); | 1049 aura::Window* w2 = CreateTestWindowInShellWithId(1); |
| 1049 wm::ActivateWindow(w1); | 1050 wm::ActivateWindow(w1); |
| 1050 | 1051 |
| 1051 wm::WMEvent fullscreen(wm::WM_EVENT_FULLSCREEN); | 1052 wm::WMEvent fullscreen(wm::WM_EVENT_FULLSCREEN); |
| 1052 wm::WindowState* w1_state = wm::GetWindowState(w1); | 1053 wm::WindowState* w1_state = wm::GetWindowState(w1); |
| 1053 w1_state->OnWMEvent(&fullscreen); | 1054 w1_state->OnWMEvent(&fullscreen); |
| 1054 ASSERT_TRUE(w1_state->IsFullscreen()); | 1055 ASSERT_TRUE(w1_state->IsFullscreen()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1085 ASSERT_FALSE(w1_state->IsFullscreen()); | 1086 ASSERT_FALSE(w1_state->IsFullscreen()); |
| 1086 | 1087 |
| 1087 EXPECT_EQ(w1, wm::GetActiveWindow()); | 1088 EXPECT_EQ(w1, wm::GetActiveWindow()); |
| 1088 press_and_release_alt_tab(); | 1089 press_and_release_alt_tab(); |
| 1089 ASSERT_NE(w1, wm::GetActiveWindow()); | 1090 ASSERT_NE(w1, wm::GetActiveWindow()); |
| 1090 ASSERT_EQ(w2, wm::GetActiveWindow()); | 1091 ASSERT_EQ(w2, wm::GetActiveWindow()); |
| 1091 } | 1092 } |
| 1092 | 1093 |
| 1093 TEST_F(PreferredReservedAcceleratorsTest, AcceleratorsWithPinned) { | 1094 TEST_F(PreferredReservedAcceleratorsTest, AcceleratorsWithPinned) { |
| 1094 // TODO: needs LockStateController ported: http://crbug.com/632189. | 1095 // TODO: needs LockStateController ported: http://crbug.com/632189. |
| 1095 if (ShellPort::Get()->IsRunningInMash()) | 1096 if (Shell::GetAshConfig() == Config::MASH) |
| 1096 return; | 1097 return; |
| 1097 aura::Window* w1 = CreateTestWindowInShellWithId(0); | 1098 aura::Window* w1 = CreateTestWindowInShellWithId(0); |
| 1098 aura::Window* w2 = CreateTestWindowInShellWithId(1); | 1099 aura::Window* w2 = CreateTestWindowInShellWithId(1); |
| 1099 wm::ActivateWindow(w1); | 1100 wm::ActivateWindow(w1); |
| 1100 | 1101 |
| 1101 { | 1102 { |
| 1102 wm::WMEvent pin_event(wm::WM_EVENT_PIN); | 1103 wm::WMEvent pin_event(wm::WM_EVENT_PIN); |
| 1103 wm::WindowState* w1_state = wm::GetWindowState(w1); | 1104 wm::WindowState* w1_state = wm::GetWindowState(w1); |
| 1104 w1_state->OnWMEvent(&pin_event); | 1105 w1_state->OnWMEvent(&pin_event); |
| 1105 ASSERT_TRUE(w1_state->IsPinned()); | 1106 ASSERT_TRUE(w1_state->IsPinned()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1117 // A pinned window can consume ALT-TAB (preferred), but no side effect. | 1118 // A pinned window can consume ALT-TAB (preferred), but no side effect. |
| 1118 ASSERT_EQ(w1, wm::GetActiveWindow()); | 1119 ASSERT_EQ(w1, wm::GetActiveWindow()); |
| 1119 generator.PressKey(ui::VKEY_TAB, ui::EF_ALT_DOWN); | 1120 generator.PressKey(ui::VKEY_TAB, ui::EF_ALT_DOWN); |
| 1120 generator.ReleaseKey(ui::VKEY_TAB, ui::EF_ALT_DOWN); | 1121 generator.ReleaseKey(ui::VKEY_TAB, ui::EF_ALT_DOWN); |
| 1121 ASSERT_EQ(w1, wm::GetActiveWindow()); | 1122 ASSERT_EQ(w1, wm::GetActiveWindow()); |
| 1122 ASSERT_NE(w2, wm::GetActiveWindow()); | 1123 ASSERT_NE(w2, wm::GetActiveWindow()); |
| 1123 } | 1124 } |
| 1124 | 1125 |
| 1125 TEST_F(AcceleratorControllerTest, DisallowedAtModalWindow) { | 1126 TEST_F(AcceleratorControllerTest, DisallowedAtModalWindow) { |
| 1126 // TODO: TestScreenshotDelegate is null in mash http://crbug.com/632111. | 1127 // TODO: TestScreenshotDelegate is null in mash http://crbug.com/632111. |
| 1127 if (ShellPort::Get()->IsRunningInMash()) | 1128 if (Shell::GetAshConfig() == Config::MASH) |
| 1128 return; | 1129 return; |
| 1129 | 1130 |
| 1130 std::set<AcceleratorAction> all_actions; | 1131 std::set<AcceleratorAction> all_actions; |
| 1131 for (size_t i = 0; i < kAcceleratorDataLength; ++i) | 1132 for (size_t i = 0; i < kAcceleratorDataLength; ++i) |
| 1132 all_actions.insert(kAcceleratorData[i].action); | 1133 all_actions.insert(kAcceleratorData[i].action); |
| 1133 std::set<AcceleratorAction> all_debug_actions; | 1134 std::set<AcceleratorAction> all_debug_actions; |
| 1134 for (size_t i = 0; i < kDebugAcceleratorDataLength; ++i) | 1135 for (size_t i = 0; i < kDebugAcceleratorDataLength; ++i) |
| 1135 all_debug_actions.insert(kDebugAcceleratorData[i].action); | 1136 all_debug_actions.insert(kDebugAcceleratorData[i].action); |
| 1136 std::set<AcceleratorAction> all_dev_actions; | 1137 std::set<AcceleratorAction> all_dev_actions; |
| 1137 for (size_t i = 0; i < kDeveloperAcceleratorDataLength; ++i) | 1138 for (size_t i = 0; i < kDeveloperAcceleratorDataLength; ++i) |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1308 | 1309 |
| 1309 private: | 1310 private: |
| 1310 DISALLOW_COPY_AND_ASSIGN(DeprecatedAcceleratorTester); | 1311 DISALLOW_COPY_AND_ASSIGN(DeprecatedAcceleratorTester); |
| 1311 }; | 1312 }; |
| 1312 | 1313 |
| 1313 } // namespace | 1314 } // namespace |
| 1314 | 1315 |
| 1315 TEST_F(DeprecatedAcceleratorTester, TestDeprecatedAcceleratorsBehavior) { | 1316 TEST_F(DeprecatedAcceleratorTester, TestDeprecatedAcceleratorsBehavior) { |
| 1316 // TODO: disabled because of UnblockUserSession() not working: | 1317 // TODO: disabled because of UnblockUserSession() not working: |
| 1317 // http://crbug.com/632201. | 1318 // http://crbug.com/632201. |
| 1318 if (ShellPort::Get()->IsRunningInMash()) | 1319 if (Shell::GetAshConfig() == Config::MASH) |
| 1319 return; | 1320 return; |
| 1320 for (size_t i = 0; i < kDeprecatedAcceleratorsLength; ++i) { | 1321 for (size_t i = 0; i < kDeprecatedAcceleratorsLength; ++i) { |
| 1321 const AcceleratorData& entry = kDeprecatedAccelerators[i]; | 1322 const AcceleratorData& entry = kDeprecatedAccelerators[i]; |
| 1322 | 1323 |
| 1323 auto itr = GetController()->actions_with_deprecations_.find(entry.action); | 1324 auto itr = GetController()->actions_with_deprecations_.find(entry.action); |
| 1324 ASSERT_TRUE(itr != GetController()->actions_with_deprecations_.end()); | 1325 ASSERT_TRUE(itr != GetController()->actions_with_deprecations_.end()); |
| 1325 const DeprecatedAcceleratorData* data = itr->second; | 1326 const DeprecatedAcceleratorData* data = itr->second; |
| 1326 | 1327 |
| 1327 EXPECT_TRUE(IsMessageCenterEmpty()); | 1328 EXPECT_TRUE(IsMessageCenterEmpty()); |
| 1328 ui::Accelerator deprecated_accelerator = CreateAccelerator(entry); | 1329 ui::Accelerator deprecated_accelerator = CreateAccelerator(entry); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1360 // Expect no notifications from the new accelerators. | 1361 // Expect no notifications from the new accelerators. |
| 1361 EXPECT_TRUE(IsMessageCenterEmpty()); | 1362 EXPECT_TRUE(IsMessageCenterEmpty()); |
| 1362 | 1363 |
| 1363 // If the action is LOCK_SCREEN, we must reset the state by unlocking the | 1364 // If the action is LOCK_SCREEN, we must reset the state by unlocking the |
| 1364 // screen before we proceed testing the rest of accelerators. | 1365 // screen before we proceed testing the rest of accelerators. |
| 1365 ResetStateIfNeeded(); | 1366 ResetStateIfNeeded(); |
| 1366 } | 1367 } |
| 1367 } | 1368 } |
| 1368 | 1369 |
| 1369 } // namespace ash | 1370 } // namespace ash |
| OLD | NEW |