| 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/public/cpp/config.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" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 46 #include "ui/events/event_sink.h" | 47 #include "ui/events/event_sink.h" |
| 47 #include "ui/events/test/event_generator.h" | 48 #include "ui/events/test/event_generator.h" |
| 48 #include "ui/message_center/message_center.h" | 49 #include "ui/message_center/message_center.h" |
| 49 #include "ui/views/widget/widget.h" | 50 #include "ui/views/widget/widget.h" |
| 50 | 51 |
| 51 #if defined(USE_X11) | 52 #if defined(USE_X11) |
| 52 #include <X11/Xlib.h> | 53 #include <X11/Xlib.h> |
| 53 #include "ui/events/test/events_test_utils_x11.h" | 54 #include "ui/events/test/events_test_utils_x11.h" |
| 54 #endif | 55 #endif |
| 55 | 56 |
| 56 using chromeos::input_method::InputMethodManager; | |
| 57 | |
| 58 namespace ash { | 57 namespace ash { |
| 59 | 58 |
| 60 namespace { | 59 namespace { |
| 61 | 60 |
| 62 class TestTarget : public ui::AcceleratorTarget { | 61 class TestTarget : public ui::AcceleratorTarget { |
| 63 public: | 62 public: |
| 64 TestTarget() : accelerator_pressed_count_(0), accelerator_repeat_count_(0) {} | 63 TestTarget() : accelerator_pressed_count_(0), accelerator_repeat_count_(0) {} |
| 65 ~TestTarget() override {} | 64 ~TestTarget() override {} |
| 66 | 65 |
| 67 int accelerator_pressed_count() const { return accelerator_pressed_count_; } | 66 int accelerator_pressed_count() const { return accelerator_pressed_count_; } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 const ui::Accelerator& last_accelerator() const { return last_accelerator_; } | 117 const ui::Accelerator& last_accelerator() const { return last_accelerator_; } |
| 119 | 118 |
| 120 private: | 119 private: |
| 121 int handle_brightness_down_count_; | 120 int handle_brightness_down_count_; |
| 122 int handle_brightness_up_count_; | 121 int handle_brightness_up_count_; |
| 123 ui::Accelerator last_accelerator_; | 122 ui::Accelerator last_accelerator_; |
| 124 | 123 |
| 125 DISALLOW_COPY_AND_ASSIGN(DummyBrightnessControlDelegate); | 124 DISALLOW_COPY_AND_ASSIGN(DummyBrightnessControlDelegate); |
| 126 }; | 125 }; |
| 127 | 126 |
| 128 class TestInputMethodManagerState | 127 class DummyImeControlDelegate : public ImeControlDelegate { |
| 129 : public chromeos::input_method::MockInputMethodManager::State { | |
| 130 public: | 128 public: |
| 131 TestInputMethodManagerState() = default; | 129 DummyImeControlDelegate() |
| 130 : handle_next_ime_count_(0), |
| 131 handle_previous_ime_count_(0), |
| 132 handle_switch_ime_count_(0) {} |
| 133 ~DummyImeControlDelegate() override {} |
| 132 | 134 |
| 133 // InputMethodManager::State: | 135 bool CanCycleIme() override { return true; } |
| 134 bool CanCycleInputMethod() override { return can_change_input_method_; } | 136 void HandleNextIme() override { ++handle_next_ime_count_; } |
| 135 void SwitchToNextInputMethod() override { next_ime_count_++; } | 137 void HandlePreviousIme() override { ++handle_previous_ime_count_; } |
| 136 void SwitchToPreviousInputMethod() override { previous_ime_count_++; } | 138 bool CanSwitchIme(const ui::Accelerator& accelerator) override { |
| 137 bool CanSwitchInputMethod(const ui::Accelerator& accelerator) override { | 139 return true; |
| 138 return can_change_input_method_; | |
| 139 } | 140 } |
| 140 void SwitchInputMethod(const ui::Accelerator& accelerator) override { | 141 void HandleSwitchIme(const ui::Accelerator& accelerator) override { |
| 141 switch_ime_count_++; | 142 ++handle_switch_ime_count_; |
| 142 } | 143 } |
| 143 | 144 |
| 144 bool can_change_input_method_ = true; | 145 int handle_next_ime_count() const { return handle_next_ime_count_; } |
| 145 int next_ime_count_ = 0; | 146 int handle_previous_ime_count() const { return handle_previous_ime_count_; } |
| 146 int previous_ime_count_ = 0; | 147 int handle_switch_ime_count() const { return handle_switch_ime_count_; } |
| 147 int switch_ime_count_ = 0; | |
| 148 | 148 |
| 149 private: | 149 private: |
| 150 // Base class is ref-counted. | 150 int handle_next_ime_count_; |
| 151 ~TestInputMethodManagerState() override = default; | 151 int handle_previous_ime_count_; |
| 152 int handle_switch_ime_count_; |
| 152 | 153 |
| 153 DISALLOW_COPY_AND_ASSIGN(TestInputMethodManagerState); | 154 DISALLOW_COPY_AND_ASSIGN(DummyImeControlDelegate); |
| 154 }; | |
| 155 | |
| 156 class TestInputMethodManager | |
| 157 : public chromeos::input_method::MockInputMethodManager { | |
| 158 public: | |
| 159 TestInputMethodManager() : state_(new TestInputMethodManagerState) {} | |
| 160 ~TestInputMethodManager() override = default; | |
| 161 | |
| 162 void SetCanChangeInputMethod(bool can_change) { | |
| 163 state_->can_change_input_method_ = can_change; | |
| 164 } | |
| 165 | |
| 166 // MockInputMethodManager: | |
| 167 chromeos::input_method::ImeKeyboard* GetImeKeyboard() override { | |
| 168 return &keyboard_; | |
| 169 } | |
| 170 scoped_refptr<InputMethodManager::State> GetActiveIMEState() override { | |
| 171 return state_; | |
| 172 } | |
| 173 | |
| 174 chromeos::input_method::FakeImeKeyboard keyboard_; | |
| 175 scoped_refptr<TestInputMethodManagerState> state_; | |
| 176 | |
| 177 private: | |
| 178 DISALLOW_COPY_AND_ASSIGN(TestInputMethodManager); | |
| 179 }; | 155 }; |
| 180 | 156 |
| 181 class DummyKeyboardBrightnessControlDelegate | 157 class DummyKeyboardBrightnessControlDelegate |
| 182 : public KeyboardBrightnessControlDelegate { | 158 : public KeyboardBrightnessControlDelegate { |
| 183 public: | 159 public: |
| 184 DummyKeyboardBrightnessControlDelegate() | 160 DummyKeyboardBrightnessControlDelegate() |
| 185 : handle_keyboard_brightness_down_count_(0), | 161 : handle_keyboard_brightness_down_count_(0), |
| 186 handle_keyboard_brightness_up_count_(0) {} | 162 handle_keyboard_brightness_up_count_(0) {} |
| 187 ~DummyKeyboardBrightnessControlDelegate() override {} | 163 ~DummyKeyboardBrightnessControlDelegate() override {} |
| 188 | 164 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 } | 200 } |
| 225 | 201 |
| 226 bool TestTarget::CanHandleAccelerators() const { | 202 bool TestTarget::CanHandleAccelerators() const { |
| 227 return true; | 203 return true; |
| 228 } | 204 } |
| 229 | 205 |
| 230 } // namespace | 206 } // namespace |
| 231 | 207 |
| 232 class AcceleratorControllerTest : public test::AshTestBase { | 208 class AcceleratorControllerTest : public test::AshTestBase { |
| 233 public: | 209 public: |
| 234 AcceleratorControllerTest() = default; | 210 AcceleratorControllerTest() {} |
| 235 ~AcceleratorControllerTest() override = default; | 211 ~AcceleratorControllerTest() override {} |
| 236 | |
| 237 void SetUp() override { | |
| 238 test::AshTestBase::SetUp(); | |
| 239 test_input_method_manager_ = new TestInputMethodManager; | |
| 240 // Takes ownership. | |
| 241 InputMethodManager::Initialize(test_input_method_manager_); | |
| 242 } | |
| 243 | |
| 244 void TearDown() override { | |
| 245 InputMethodManager::Shutdown(); | |
| 246 test::AshTestBase::TearDown(); | |
| 247 } | |
| 248 | 212 |
| 249 protected: | 213 protected: |
| 250 static AcceleratorController* GetController(); | 214 static AcceleratorController* GetController(); |
| 251 | 215 |
| 252 static bool ProcessInController(const ui::Accelerator& accelerator) { | 216 static bool ProcessInController(const ui::Accelerator& accelerator) { |
| 253 if (accelerator.key_state() == ui::Accelerator::KeyState::RELEASED) { | 217 if (accelerator.key_state() == ui::Accelerator::KeyState::RELEASED) { |
| 254 // If the |accelerator| should trigger on release, then we store the | 218 // If the |accelerator| should trigger on release, then we store the |
| 255 // pressed version of it first in history then the released one to | 219 // pressed version of it first in history then the released one to |
| 256 // simulate what happens in reality. | 220 // simulate what happens in reality. |
| 257 ui::Accelerator pressed_accelerator = accelerator; | 221 ui::Accelerator pressed_accelerator = accelerator; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 void SetBrightnessControlDelegate( | 257 void SetBrightnessControlDelegate( |
| 294 std::unique_ptr<BrightnessControlDelegate> delegate) { | 258 std::unique_ptr<BrightnessControlDelegate> delegate) { |
| 295 Shell::Get()->brightness_control_delegate_ = std::move(delegate); | 259 Shell::Get()->brightness_control_delegate_ = std::move(delegate); |
| 296 } | 260 } |
| 297 | 261 |
| 298 void SetKeyboardBrightnessControlDelegate( | 262 void SetKeyboardBrightnessControlDelegate( |
| 299 std::unique_ptr<KeyboardBrightnessControlDelegate> delegate) { | 263 std::unique_ptr<KeyboardBrightnessControlDelegate> delegate) { |
| 300 Shell::Get()->keyboard_brightness_control_delegate_ = std::move(delegate); | 264 Shell::Get()->keyboard_brightness_control_delegate_ = std::move(delegate); |
| 301 } | 265 } |
| 302 | 266 |
| 303 // Owned by InputMethodManager. | |
| 304 TestInputMethodManager* test_input_method_manager_ = nullptr; | |
| 305 | |
| 306 private: | 267 private: |
| 307 DISALLOW_COPY_AND_ASSIGN(AcceleratorControllerTest); | 268 DISALLOW_COPY_AND_ASSIGN(AcceleratorControllerTest); |
| 308 }; | 269 }; |
| 309 | 270 |
| 310 AcceleratorController* AcceleratorControllerTest::GetController() { | 271 AcceleratorController* AcceleratorControllerTest::GetController() { |
| 311 return Shell::Get()->accelerator_controller(); | 272 return Shell::Get()->accelerator_controller(); |
| 312 } | 273 } |
| 313 | 274 |
| 314 // Double press of exit shortcut => exiting | 275 // Double press of exit shortcut => exiting |
| 315 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestDoublePress) { | 276 TEST_F(AcceleratorControllerTest, ExitWarningHandlerTestDoublePress) { |
| (...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 881 ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); | 842 ui::Accelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); |
| 882 RunAllPendingInMessageLoop(); | 843 RunAllPendingInMessageLoop(); |
| 883 EXPECT_EQ(3u, test_app_list_presenter.toggle_count()); | 844 EXPECT_EQ(3u, test_app_list_presenter.toggle_count()); |
| 884 EXPECT_FALSE(ProcessInController( | 845 EXPECT_FALSE(ProcessInController( |
| 885 CreateReleaseAccelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); | 846 CreateReleaseAccelerator(ui::VKEY_BROWSER_SEARCH, ui::EF_NONE))); |
| 886 RunAllPendingInMessageLoop(); | 847 RunAllPendingInMessageLoop(); |
| 887 EXPECT_EQ(3u, test_app_list_presenter.toggle_count()); | 848 EXPECT_EQ(3u, test_app_list_presenter.toggle_count()); |
| 888 } | 849 } |
| 889 | 850 |
| 890 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { | 851 TEST_F(AcceleratorControllerTest, ImeGlobalAccelerators) { |
| 891 TestInputMethodManagerState* test_state = | 852 // Test IME shortcuts. |
| 892 test_input_method_manager_->state_.get(); | |
| 893 | |
| 894 // Test IME shortcuts when cycling IME is blocked. | |
| 895 test_state->can_change_input_method_ = false; | |
| 896 ui::Accelerator control_space_down(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); | 853 ui::Accelerator control_space_down(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); |
| 897 ui::Accelerator control_space_up(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); | 854 ui::Accelerator control_space_up(ui::VKEY_SPACE, ui::EF_CONTROL_DOWN); |
| 898 control_space_up.set_key_state(ui::Accelerator::KeyState::RELEASED); | 855 control_space_up.set_key_state(ui::Accelerator::KeyState::RELEASED); |
| 899 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); | 856 const ui::Accelerator convert(ui::VKEY_CONVERT, ui::EF_NONE); |
| 900 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, ui::EF_NONE); | 857 const ui::Accelerator non_convert(ui::VKEY_NONCONVERT, ui::EF_NONE); |
| 901 const ui::Accelerator wide_half_1(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE); | 858 const ui::Accelerator wide_half_1(ui::VKEY_DBE_SBCSCHAR, ui::EF_NONE); |
| 902 const ui::Accelerator wide_half_2(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE); | 859 const ui::Accelerator wide_half_2(ui::VKEY_DBE_DBCSCHAR, ui::EF_NONE); |
| 903 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); | 860 const ui::Accelerator hangul(ui::VKEY_HANGUL, ui::EF_NONE); |
| 904 EXPECT_FALSE(ProcessInController(control_space_down)); | 861 EXPECT_FALSE(ProcessInController(control_space_down)); |
| 905 EXPECT_FALSE(ProcessInController(control_space_up)); | 862 EXPECT_FALSE(ProcessInController(control_space_up)); |
| 906 EXPECT_FALSE(ProcessInController(convert)); | 863 EXPECT_FALSE(ProcessInController(convert)); |
| 907 EXPECT_FALSE(ProcessInController(non_convert)); | 864 EXPECT_FALSE(ProcessInController(non_convert)); |
| 908 EXPECT_FALSE(ProcessInController(wide_half_1)); | 865 EXPECT_FALSE(ProcessInController(wide_half_1)); |
| 909 EXPECT_FALSE(ProcessInController(wide_half_2)); | 866 EXPECT_FALSE(ProcessInController(wide_half_2)); |
| 910 EXPECT_FALSE(ProcessInController(hangul)); | 867 EXPECT_FALSE(ProcessInController(hangul)); |
| 911 | 868 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; |
| 912 // Test IME shortcuts when cycling IME is allowed. | 869 GetController()->SetImeControlDelegate( |
| 913 test_state->can_change_input_method_ = true; | 870 std::unique_ptr<ImeControlDelegate>(delegate)); |
| 914 EXPECT_EQ(0, test_state->previous_ime_count_); | 871 EXPECT_EQ(0, delegate->handle_previous_ime_count()); |
| 915 EXPECT_TRUE(ProcessInController(control_space_down)); | 872 EXPECT_TRUE(ProcessInController(control_space_down)); |
| 916 EXPECT_EQ(1, test_state->previous_ime_count_); | 873 EXPECT_EQ(1, delegate->handle_previous_ime_count()); |
| 917 EXPECT_TRUE(ProcessInController(control_space_up)); | 874 EXPECT_TRUE(ProcessInController(control_space_up)); |
| 918 EXPECT_EQ(1, test_state->previous_ime_count_); | 875 EXPECT_EQ(1, delegate->handle_previous_ime_count()); |
| 919 EXPECT_EQ(0, test_state->switch_ime_count_); | 876 EXPECT_EQ(0, delegate->handle_switch_ime_count()); |
| 920 EXPECT_TRUE(ProcessInController(convert)); | 877 EXPECT_TRUE(ProcessInController(convert)); |
| 921 EXPECT_EQ(1, test_state->switch_ime_count_); | 878 EXPECT_EQ(1, delegate->handle_switch_ime_count()); |
| 922 EXPECT_TRUE(ProcessInController(non_convert)); | 879 EXPECT_TRUE(ProcessInController(non_convert)); |
| 923 EXPECT_EQ(2, test_state->switch_ime_count_); | 880 EXPECT_EQ(2, delegate->handle_switch_ime_count()); |
| 924 EXPECT_TRUE(ProcessInController(wide_half_1)); | 881 EXPECT_TRUE(ProcessInController(wide_half_1)); |
| 925 EXPECT_EQ(3, test_state->switch_ime_count_); | 882 EXPECT_EQ(3, delegate->handle_switch_ime_count()); |
| 926 EXPECT_TRUE(ProcessInController(wide_half_2)); | 883 EXPECT_TRUE(ProcessInController(wide_half_2)); |
| 927 EXPECT_EQ(4, test_state->switch_ime_count_); | 884 EXPECT_EQ(4, delegate->handle_switch_ime_count()); |
| 928 EXPECT_TRUE(ProcessInController(hangul)); | 885 EXPECT_TRUE(ProcessInController(hangul)); |
| 929 EXPECT_EQ(5, test_state->switch_ime_count_); | 886 EXPECT_EQ(5, delegate->handle_switch_ime_count()); |
| 930 } | 887 } |
| 931 | 888 |
| 932 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. | 889 // TODO(nona|mazda): Remove this when crbug.com/139556 in a better way. |
| 933 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsWorkaround139556) { | 890 TEST_F(AcceleratorControllerTest, ImeGlobalAcceleratorsWorkaround139556) { |
| 934 // The workaround for crbug.com/139556 depends on the fact that we don't | 891 // The workaround for crbug.com/139556 depends on the fact that we don't |
| 935 // use Shift+Alt+Enter/Space with ET_KEY_PRESSED as an accelerator. Test it. | 892 // use Shift+Alt+Enter/Space with ET_KEY_PRESSED as an accelerator. Test it. |
| 936 const ui::Accelerator shift_alt_return_press( | 893 const ui::Accelerator shift_alt_return_press( |
| 937 ui::VKEY_RETURN, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); | 894 ui::VKEY_RETURN, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN); |
| 938 EXPECT_FALSE(ProcessInController(shift_alt_return_press)); | 895 EXPECT_FALSE(ProcessInController(shift_alt_return_press)); |
| 939 const ui::Accelerator shift_alt_space_press( | 896 const ui::Accelerator shift_alt_space_press( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 968 EXPECT_FALSE( | 925 EXPECT_FALSE( |
| 969 GetController()->IsPreferred(ui::Accelerator(ui::VKEY_TAB, ui::EF_NONE))); | 926 GetController()->IsPreferred(ui::Accelerator(ui::VKEY_TAB, ui::EF_NONE))); |
| 970 EXPECT_FALSE( | 927 EXPECT_FALSE( |
| 971 GetController()->IsReserved(ui::Accelerator(ui::VKEY_A, ui::EF_NONE))); | 928 GetController()->IsReserved(ui::Accelerator(ui::VKEY_A, ui::EF_NONE))); |
| 972 EXPECT_FALSE( | 929 EXPECT_FALSE( |
| 973 GetController()->IsPreferred(ui::Accelerator(ui::VKEY_A, ui::EF_NONE))); | 930 GetController()->IsPreferred(ui::Accelerator(ui::VKEY_A, ui::EF_NONE))); |
| 974 } | 931 } |
| 975 | 932 |
| 976 namespace { | 933 namespace { |
| 977 | 934 |
| 935 class TestInputMethodManager |
| 936 : public chromeos::input_method::MockInputMethodManager { |
| 937 public: |
| 938 TestInputMethodManager() = default; |
| 939 ~TestInputMethodManager() override = default; |
| 940 |
| 941 // MockInputMethodManager: |
| 942 chromeos::input_method::ImeKeyboard* GetImeKeyboard() override { |
| 943 return &keyboard_; |
| 944 } |
| 945 |
| 946 private: |
| 947 chromeos::input_method::FakeImeKeyboard keyboard_; |
| 948 |
| 949 DISALLOW_COPY_AND_ASSIGN(TestInputMethodManager); |
| 950 }; |
| 951 |
| 952 class ToggleCapsLockTest : public AcceleratorControllerTest { |
| 953 public: |
| 954 ToggleCapsLockTest() = default; |
| 955 ~ToggleCapsLockTest() override = default; |
| 956 |
| 957 void SetUp() override { |
| 958 AcceleratorControllerTest::SetUp(); |
| 959 chromeos::input_method::InputMethodManager::Initialize( |
| 960 new TestInputMethodManager); |
| 961 } |
| 962 |
| 963 void TearDown() override { |
| 964 chromeos::input_method::InputMethodManager::Shutdown(); |
| 965 AcceleratorControllerTest::TearDown(); |
| 966 } |
| 967 |
| 968 private: |
| 969 DISALLOW_COPY_AND_ASSIGN(ToggleCapsLockTest); |
| 970 }; |
| 971 |
| 978 // Tests the five combinations of the TOGGLE_CAPS_LOCK accelerator. | 972 // Tests the five combinations of the TOGGLE_CAPS_LOCK accelerator. |
| 979 TEST_F(AcceleratorControllerTest, ToggleCapsLockAccelerators) { | 973 TEST_F(ToggleCapsLockTest, ToggleCapsLockAccelerators) { |
| 980 chromeos::input_method::InputMethodManager* input_method_manager = | 974 chromeos::input_method::InputMethodManager* input_method_manager = |
| 981 chromeos::input_method::InputMethodManager::Get(); | 975 chromeos::input_method::InputMethodManager::Get(); |
| 982 ASSERT_TRUE(input_method_manager); | 976 ASSERT_TRUE(input_method_manager); |
| 983 EXPECT_FALSE(input_method_manager->GetImeKeyboard()->CapsLockIsEnabled()); | 977 EXPECT_FALSE(input_method_manager->GetImeKeyboard()->CapsLockIsEnabled()); |
| 984 | 978 |
| 985 // 1. Press Alt, Press Search, Release Search, Release Alt. | 979 // 1. Press Alt, Press Search, Release Search, Release Alt. |
| 986 // Note when you press Alt then press search, the key_code at this point is | 980 // Note when you press Alt then press search, the key_code at this point is |
| 987 // VKEY_LWIN (for search) and Alt is the modifier. | 981 // VKEY_LWIN (for search) and Alt is the modifier. |
| 988 const ui::Accelerator press_alt_then_search(ui::VKEY_LWIN, ui::EF_ALT_DOWN); | 982 const ui::Accelerator press_alt_then_search(ui::VKEY_LWIN, ui::EF_ALT_DOWN); |
| 989 EXPECT_FALSE(ProcessInController(press_alt_then_search)); | 983 EXPECT_FALSE(ProcessInController(press_alt_then_search)); |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1261 GetController()->PerformActionIfEnabled(kActionsNeedingWindow[i]); | 1255 GetController()->PerformActionIfEnabled(kActionsNeedingWindow[i]); |
| 1262 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); | 1256 EXPECT_NE(delegate->GetLastAccessibilityAlert(), A11Y_ALERT_WINDOW_NEEDED); |
| 1263 } | 1257 } |
| 1264 } | 1258 } |
| 1265 | 1259 |
| 1266 namespace { | 1260 namespace { |
| 1267 | 1261 |
| 1268 // defines a class to test the behavior of deprecated accelerators. | 1262 // defines a class to test the behavior of deprecated accelerators. |
| 1269 class DeprecatedAcceleratorTester : public AcceleratorControllerTest { | 1263 class DeprecatedAcceleratorTester : public AcceleratorControllerTest { |
| 1270 public: | 1264 public: |
| 1271 DeprecatedAcceleratorTester() = default; | 1265 DeprecatedAcceleratorTester() {} |
| 1272 ~DeprecatedAcceleratorTester() override = default; | 1266 ~DeprecatedAcceleratorTester() override {} |
| 1267 |
| 1268 void SetUp() override { |
| 1269 AcceleratorControllerTest::SetUp(); |
| 1270 |
| 1271 // For testing the deprecated and new IME shortcuts. |
| 1272 DummyImeControlDelegate* delegate = new DummyImeControlDelegate; |
| 1273 GetController()->SetImeControlDelegate( |
| 1274 std::unique_ptr<ImeControlDelegate>(delegate)); |
| 1275 } |
| 1273 | 1276 |
| 1274 ui::Accelerator CreateAccelerator(const AcceleratorData& data) const { | 1277 ui::Accelerator CreateAccelerator(const AcceleratorData& data) const { |
| 1275 ui::Accelerator result(data.keycode, data.modifiers); | 1278 ui::Accelerator result(data.keycode, data.modifiers); |
| 1276 result.set_key_state(data.trigger_on_press | 1279 result.set_key_state(data.trigger_on_press |
| 1277 ? ui::Accelerator::KeyState::PRESSED | 1280 ? ui::Accelerator::KeyState::PRESSED |
| 1278 : ui::Accelerator::KeyState::RELEASED); | 1281 : ui::Accelerator::KeyState::RELEASED); |
| 1279 return result; | 1282 return result; |
| 1280 } | 1283 } |
| 1281 | 1284 |
| 1282 void ResetStateIfNeeded() { | 1285 void ResetStateIfNeeded() { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1357 // Expect no notifications from the new accelerators. | 1360 // Expect no notifications from the new accelerators. |
| 1358 EXPECT_TRUE(IsMessageCenterEmpty()); | 1361 EXPECT_TRUE(IsMessageCenterEmpty()); |
| 1359 | 1362 |
| 1360 // If the action is LOCK_SCREEN, we must reset the state by unlocking the | 1363 // If the action is LOCK_SCREEN, we must reset the state by unlocking the |
| 1361 // screen before we proceed testing the rest of accelerators. | 1364 // screen before we proceed testing the rest of accelerators. |
| 1362 ResetStateIfNeeded(); | 1365 ResetStateIfNeeded(); |
| 1363 } | 1366 } |
| 1364 } | 1367 } |
| 1365 | 1368 |
| 1366 } // namespace ash | 1369 } // namespace ash |
| OLD | NEW |