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/aura/wm_window_aura.h" | 8 #include "ash/aura/wm_window_aura.h" |
9 #include "ash/common/accessibility_delegate.h" | 9 #include "ash/common/accessibility_delegate.h" |
10 #include "ash/common/accessibility_types.h" | 10 #include "ash/common/accessibility_types.h" |
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 830 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
831 EXPECT_TRUE(ProcessInController(ui::Accelerator( | 831 EXPECT_TRUE(ProcessInController(ui::Accelerator( |
832 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | 832 ui::VKEY_MEDIA_LAUNCH_APP1, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
833 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); | 833 EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
834 } | 834 } |
835 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); | 835 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); |
836 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); | 836 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); |
837 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); | 837 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); |
838 { | 838 { |
839 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate; | 839 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate; |
840 ash::WmShell::Get()->system_tray_delegate()->SetVolumeControlDelegate( | 840 WmShell::Get()->system_tray_delegate()->SetVolumeControlDelegate( |
841 std::unique_ptr<VolumeControlDelegate>(delegate)); | 841 std::unique_ptr<VolumeControlDelegate>(delegate)); |
842 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 842 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
843 EXPECT_TRUE(ProcessInController(volume_mute)); | 843 EXPECT_TRUE(ProcessInController(volume_mute)); |
844 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 844 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
845 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 845 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
846 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 846 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
847 EXPECT_TRUE(ProcessInController(volume_down)); | 847 EXPECT_TRUE(ProcessInController(volume_down)); |
848 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 848 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
849 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 849 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
850 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 850 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
939 // Lock screen | 939 // Lock screen |
940 // NOTE: Accelerators that do not work on the lock screen need to be | 940 // NOTE: Accelerators that do not work on the lock screen need to be |
941 // tested before the sequence below is invoked because it causes a side | 941 // tested before the sequence below is invoked because it causes a side |
942 // effect of locking the screen. | 942 // effect of locking the screen. |
943 EXPECT_TRUE(ProcessInController( | 943 EXPECT_TRUE(ProcessInController( |
944 ui::Accelerator(ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); | 944 ui::Accelerator(ui::VKEY_L, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
945 #endif | 945 #endif |
946 } | 946 } |
947 | 947 |
948 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsToggleAppList) { | 948 TEST_F(AcceleratorControllerTest, GlobalAcceleratorsToggleAppList) { |
949 AccessibilityDelegate* delegate = | 949 AccessibilityDelegate* delegate = WmShell::Get()->GetAccessibilityDelegate(); |
950 ash::Shell::GetInstance()->accessibility_delegate(); | 950 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); |
951 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | |
952 | 951 |
953 // The press event should not open the AppList, the release should instead. | 952 // The press event should not open the AppList, the release should instead. |
954 EXPECT_FALSE( | 953 EXPECT_FALSE( |
955 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 954 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
956 EXPECT_EQ(ui::VKEY_LWIN, GetCurrentAccelerator().key_code()); | 955 EXPECT_EQ(ui::VKEY_LWIN, GetCurrentAccelerator().key_code()); |
957 | 956 |
958 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 957 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); |
959 | 958 |
960 EXPECT_TRUE( | 959 EXPECT_TRUE( |
961 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 960 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
962 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 961 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
963 | 962 |
964 EXPECT_EQ(ui::VKEY_LWIN, GetPreviousAccelerator().key_code()); | 963 EXPECT_EQ(ui::VKEY_LWIN, GetPreviousAccelerator().key_code()); |
965 | 964 |
966 // When spoken feedback is on, the AppList should not toggle. | 965 // When spoken feedback is on, the AppList should not toggle. |
967 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 966 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
968 EXPECT_FALSE( | 967 EXPECT_FALSE( |
969 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 968 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
970 EXPECT_FALSE( | 969 EXPECT_FALSE( |
971 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 970 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
972 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 971 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
973 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 972 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
974 | 973 |
975 EXPECT_FALSE( | 974 EXPECT_FALSE( |
976 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 975 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
977 EXPECT_TRUE( | 976 EXPECT_TRUE( |
978 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 977 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
979 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 978 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); |
980 | 979 |
981 // When spoken feedback is on, the AppList should not toggle. | 980 // When spoken feedback is on, the AppList should not toggle. |
982 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 981 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
983 EXPECT_FALSE( | 982 EXPECT_FALSE( |
984 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 983 ProcessInController(ui::Accelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
985 EXPECT_FALSE( | 984 EXPECT_FALSE( |
986 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); | 985 ProcessInController(ReleaseAccelerator(ui::VKEY_LWIN, ui::EF_NONE))); |
987 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); | 986 delegate->ToggleSpokenFeedback(A11Y_NOTIFICATION_NONE); |
988 EXPECT_FALSE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 987 EXPECT_FALSE(Shell::GetInstance()->GetAppListTargetVisibility()); |
989 | 988 |
990 #if defined(OS_CHROMEOS) | 989 #if defined(OS_CHROMEOS) |
991 // The press of VKEY_BROWSER_SEARCH should toggle the AppList | 990 // The press of VKEY_BROWSER_SEARCH should toggle the AppList |
992 EXPECT_TRUE(ProcessInController( | 991 EXPECT_TRUE(ProcessInController( |
993 ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); | 992 ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); |
994 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 993 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
995 EXPECT_FALSE(ProcessInController( | 994 EXPECT_FALSE(ProcessInController( |
996 ReleaseAccelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); | 995 ReleaseAccelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); |
997 EXPECT_TRUE(ash::Shell::GetInstance()->GetAppListTargetVisibility()); | 996 EXPECT_TRUE(Shell::GetInstance()->GetAppListTargetVisibility()); |
998 #endif | 997 #endif |
999 } | 998 } |
1000 | 999 |
1001 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { | 1000 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { |
1002 // Test IME shortcuts. | 1001 // Test IME shortcuts. |
1003 ui::Accelerator control_space_down(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); | 1002 ui::Accelerator control_space_down(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); |
1004 control_space_down.set_type(ui::ET_KEY_PRESSED); | 1003 control_space_down.set_type(ui::ET_KEY_PRESSED); |
1005 ui::Accelerator control_space_up(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); | 1004 ui::Accelerator control_space_up(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); |
1006 control_space_up.set_type(ui::ET_KEY_RELEASED); | 1005 control_space_up.set_type(ui::ET_KEY_RELEASED); |
1007 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); | 1006 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1251 } | 1250 } |
1252 // Volume | 1251 // Volume |
1253 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); | 1252 const ui::Accelerator volume_mute(ui::VKEY_VOLUME_MUTE, ui::EF_NONE); |
1254 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); | 1253 const ui::Accelerator volume_down(ui::VKEY_VOLUME_DOWN, ui::EF_NONE); |
1255 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); | 1254 const ui::Accelerator volume_up(ui::VKEY_VOLUME_UP, ui::EF_NONE); |
1256 { | 1255 { |
1257 EXPECT_TRUE(ProcessInController(volume_mute)); | 1256 EXPECT_TRUE(ProcessInController(volume_mute)); |
1258 EXPECT_TRUE(ProcessInController(volume_down)); | 1257 EXPECT_TRUE(ProcessInController(volume_down)); |
1259 EXPECT_TRUE(ProcessInController(volume_up)); | 1258 EXPECT_TRUE(ProcessInController(volume_up)); |
1260 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate; | 1259 TestVolumeControlDelegate* delegate = new TestVolumeControlDelegate; |
1261 ash::WmShell::Get()->system_tray_delegate()->SetVolumeControlDelegate( | 1260 WmShell::Get()->system_tray_delegate()->SetVolumeControlDelegate( |
1262 std::unique_ptr<VolumeControlDelegate>(delegate)); | 1261 std::unique_ptr<VolumeControlDelegate>(delegate)); |
1263 EXPECT_EQ(0, delegate->handle_volume_mute_count()); | 1262 EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
1264 EXPECT_TRUE(ProcessInController(volume_mute)); | 1263 EXPECT_TRUE(ProcessInController(volume_mute)); |
1265 EXPECT_EQ(1, delegate->handle_volume_mute_count()); | 1264 EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
1266 EXPECT_EQ(volume_mute, delegate->last_accelerator()); | 1265 EXPECT_EQ(volume_mute, delegate->last_accelerator()); |
1267 EXPECT_EQ(0, delegate->handle_volume_down_count()); | 1266 EXPECT_EQ(0, delegate->handle_volume_down_count()); |
1268 EXPECT_TRUE(ProcessInController(volume_down)); | 1267 EXPECT_TRUE(ProcessInController(volume_down)); |
1269 EXPECT_EQ(1, delegate->handle_volume_down_count()); | 1268 EXPECT_EQ(1, delegate->handle_volume_down_count()); |
1270 EXPECT_EQ(volume_down, delegate->last_accelerator()); | 1269 EXPECT_EQ(volume_down, delegate->last_accelerator()); |
1271 EXPECT_EQ(0, delegate->handle_volume_up_count()); | 1270 EXPECT_EQ(0, delegate->handle_volume_up_count()); |
1272 EXPECT_TRUE(ProcessInController(volume_up)); | 1271 EXPECT_TRUE(ProcessInController(volume_up)); |
1273 EXPECT_EQ(1, delegate->handle_volume_up_count()); | 1272 EXPECT_EQ(1, delegate->handle_volume_up_count()); |
1274 EXPECT_EQ(volume_up, delegate->last_accelerator()); | 1273 EXPECT_EQ(volume_up, delegate->last_accelerator()); |
1275 } | 1274 } |
1276 } | 1275 } |
1277 #endif | 1276 #endif |
1278 | 1277 |
1279 TEST_F(AcceleratorControllerTest, DisallowedWithNoWindow) { | 1278 TEST_F(AcceleratorControllerTest, DisallowedWithNoWindow) { |
1280 AccessibilityDelegate* delegate = | 1279 AccessibilityDelegate* delegate = WmShell::Get()->GetAccessibilityDelegate(); |
1281 ash::Shell::GetInstance()->accessibility_delegate(); | |
1282 | 1280 |
1283 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { | 1281 for (size_t i = 0; i < kActionsNeedingWindowLength; ++i) { |
1284 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); | 1282 delegate->TriggerAccessibilityAlert(A11Y_ALERT_NONE); |
1285 EXPECT_TRUE( | 1283 EXPECT_TRUE( |
1286 GetController()->PerformActionIfEnabled(kActionsNeedingWindow[i])); | 1284 GetController()->PerformActionIfEnabled(kActionsNeedingWindow[i])); |
1287 EXPECT_EQ(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); | 1285 EXPECT_EQ(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); |
1288 } | 1286 } |
1289 | 1287 |
1290 // Make sure we don't alert if we do have a window. | 1288 // Make sure we don't alert if we do have a window. |
1291 std::unique_ptr<aura::Window> window; | 1289 std::unique_ptr<aura::Window> window; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1407 EXPECT_TRUE(IsMessageCenterEmpty()); | 1405 EXPECT_TRUE(IsMessageCenterEmpty()); |
1408 | 1406 |
1409 // If the action is LOCK_SCREEN, we must reset the state by unlocking the | 1407 // If the action is LOCK_SCREEN, we must reset the state by unlocking the |
1410 // screen before we proceed testing the rest of accelerators. | 1408 // screen before we proceed testing the rest of accelerators. |
1411 ResetStateIfNeeded(); | 1409 ResetStateIfNeeded(); |
1412 } | 1410 } |
1413 } | 1411 } |
1414 #endif // defined(OS_CHROMEOS) | 1412 #endif // defined(OS_CHROMEOS) |
1415 | 1413 |
1416 } // namespace ash | 1414 } // namespace ash |
OLD | NEW |