OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/chromeos/events/event_rewriter.h" | 5 #include "chrome/browser/chromeos/events/event_rewriter.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/sticky_keys/sticky_keys_controller.h" | 10 #include "ash/sticky_keys/sticky_keys_controller.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 | 182 |
183 // VKEY_A, Alt+Win modifier. | 183 // VKEY_A, Alt+Win modifier. |
184 {ui::ET_KEY_PRESSED, | 184 {ui::ET_KEY_PRESSED, |
185 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 185 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
186 ui::DomKey::UNIDENTIFIED}, | 186 ui::DomKey::UNIDENTIFIED}, |
187 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 187 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
188 ui::DomKey::UNIDENTIFIED}}, | 188 ui::DomKey::UNIDENTIFIED}}, |
189 | 189 |
190 // VKEY_LWIN (left Windows key), Alt modifier. | 190 // VKEY_LWIN (left Windows key), Alt modifier. |
191 {ui::ET_KEY_PRESSED, | 191 {ui::ET_KEY_PRESSED, |
192 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 192 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
193 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}, | 193 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}, |
194 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 194 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
195 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, | 195 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, |
196 | 196 |
197 // VKEY_RWIN (right Windows key), Alt modifier. | 197 // VKEY_RWIN (right Windows key), Alt modifier. |
198 {ui::ET_KEY_PRESSED, | 198 {ui::ET_KEY_PRESSED, |
199 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, | 199 {ui::VKEY_RWIN, ui::DomCode::META_RIGHT, |
200 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}, | 200 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}, |
201 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, | 201 {ui::VKEY_RWIN, ui::DomCode::META_RIGHT, |
202 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, | 202 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, |
203 }; | 203 }; |
204 | 204 |
205 for (const auto& test : pc_keyboard_tests) { | 205 for (const auto& test : pc_keyboard_tests) { |
206 CheckKeyTestCase(&rewriter, test); | 206 CheckKeyTestCase(&rewriter, test); |
207 } | 207 } |
208 | 208 |
209 // An Apple keyboard reusing the ID, zero. | 209 // An Apple keyboard reusing the ID, zero. |
210 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "Apple Keyboard"); | 210 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "Apple Keyboard"); |
211 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); | 211 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); |
(...skipping 15 matching lines...) Expand all Loading... |
227 | 227 |
228 // VKEY_A, Alt+Win modifier. | 228 // VKEY_A, Alt+Win modifier. |
229 {ui::ET_KEY_PRESSED, | 229 {ui::ET_KEY_PRESSED, |
230 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 230 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
231 ui::DomKey::UNIDENTIFIED}, | 231 ui::DomKey::UNIDENTIFIED}, |
232 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, | 232 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, |
233 ui::DomKey::Constant<'a'>::Character}}, | 233 ui::DomKey::Constant<'a'>::Character}}, |
234 | 234 |
235 // VKEY_LWIN (left Windows key), Alt modifier. | 235 // VKEY_LWIN (left Windows key), Alt modifier. |
236 {ui::ET_KEY_PRESSED, | 236 {ui::ET_KEY_PRESSED, |
237 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 237 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
238 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, | 238 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, |
239 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 239 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
240 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, | 240 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, |
241 | 241 |
242 // VKEY_RWIN (right Windows key), Alt modifier. | 242 // VKEY_RWIN (right Windows key), Alt modifier. |
243 {ui::ET_KEY_PRESSED, | 243 {ui::ET_KEY_PRESSED, |
244 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, | 244 {ui::VKEY_RWIN, ui::DomCode::META_RIGHT, |
245 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, | 245 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, |
246 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_RIGHT, | 246 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_RIGHT, |
247 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, | 247 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, |
248 }; | 248 }; |
249 | 249 |
250 for (const auto& test : apple_keyboard_tests) { | 250 for (const auto& test : apple_keyboard_tests) { |
251 CheckKeyTestCase(&rewriter, test); | 251 CheckKeyTestCase(&rewriter, test); |
252 } | 252 } |
253 } | 253 } |
254 | 254 |
(...skipping 25 matching lines...) Expand all Loading... |
280 } | 280 } |
281 | 281 |
282 // An Apple keyboard reusing the ID, zero. | 282 // An Apple keyboard reusing the ID, zero. |
283 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "Apple Keyboard"); | 283 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "Apple Keyboard"); |
284 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); | 284 rewriter.set_last_keyboard_device_id_for_testing(kKeyboardDeviceId); |
285 | 285 |
286 KeyTestCase apple_keyboard_tests[] = { | 286 KeyTestCase apple_keyboard_tests[] = { |
287 // VKEY_LWIN (left Command key) with Alt modifier. The remapped Command | 287 // VKEY_LWIN (left Command key) with Alt modifier. The remapped Command |
288 // key should never be re-remapped to Alt. | 288 // key should never be re-remapped to Alt. |
289 {ui::ET_KEY_PRESSED, | 289 {ui::ET_KEY_PRESSED, |
290 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 290 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
291 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, | 291 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, |
292 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 292 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
293 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, | 293 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, |
294 | 294 |
295 // VKEY_RWIN (right Command key) with Alt modifier. The remapped Command | 295 // VKEY_RWIN (right Command key) with Alt modifier. The remapped Command |
296 // key should never be re-remapped to Alt. | 296 // key should never be re-remapped to Alt. |
297 {ui::ET_KEY_PRESSED, | 297 {ui::ET_KEY_PRESSED, |
298 {ui::VKEY_RWIN, ui::DomCode::OS_RIGHT, | 298 {ui::VKEY_RWIN, ui::DomCode::META_RIGHT, |
299 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, | 299 ui::EF_COMMAND_DOWN | ui::EF_ALT_DOWN, ui::DomKey::META}, |
300 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_RIGHT, | 300 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_RIGHT, |
301 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, | 301 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, ui::DomKey::CONTROL}}, |
302 }; | 302 }; |
303 | 303 |
304 for (const auto& test : apple_keyboard_tests) { | 304 for (const auto& test : apple_keyboard_tests) { |
305 CheckKeyTestCase(&rewriter, test); | 305 CheckKeyTestCase(&rewriter, test); |
306 } | 306 } |
307 } | 307 } |
308 | 308 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 | 545 |
546 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemap) { | 546 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemap) { |
547 syncable_prefs::TestingPrefServiceSyncable prefs; | 547 syncable_prefs::TestingPrefServiceSyncable prefs; |
548 EventRewriter rewriter(NULL); | 548 EventRewriter rewriter(NULL); |
549 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 549 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
550 rewriter.set_pref_service_for_testing(&prefs); | 550 rewriter.set_pref_service_for_testing(&prefs); |
551 | 551 |
552 KeyTestCase tests[] = { | 552 KeyTestCase tests[] = { |
553 // Press Search. Confirm the event is not rewritten. | 553 // Press Search. Confirm the event is not rewritten. |
554 {ui::ET_KEY_PRESSED, | 554 {ui::ET_KEY_PRESSED, |
555 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_NONE, ui::DomKey::META}, | 555 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_NONE, ui::DomKey::META}, |
556 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_COMMAND_DOWN, | 556 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
557 ui::DomKey::META}}, | 557 ui::DomKey::META}}, |
558 | 558 |
559 // Press left Control. Confirm the event is not rewritten. | 559 // Press left Control. Confirm the event is not rewritten. |
560 {ui::ET_KEY_PRESSED, | 560 {ui::ET_KEY_PRESSED, |
561 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 561 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
562 ui::DomKey::CONTROL}, | 562 ui::DomKey::CONTROL}, |
563 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 563 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
564 ui::DomKey::CONTROL}}, | 564 ui::DomKey::CONTROL}}, |
565 | 565 |
566 // Press right Control. Confirm the event is not rewritten. | 566 // Press right Control. Confirm the event is not rewritten. |
(...skipping 11 matching lines...) Expand all Loading... |
578 | 578 |
579 // Press right Alt. Confirm the event is not rewritten. | 579 // Press right Alt. Confirm the event is not rewritten. |
580 {ui::ET_KEY_PRESSED, | 580 {ui::ET_KEY_PRESSED, |
581 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, ui::DomKey::ALT}, | 581 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, ui::DomKey::ALT}, |
582 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, | 582 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, |
583 ui::DomKey::ALT}}, | 583 ui::DomKey::ALT}}, |
584 | 584 |
585 // Test KeyRelease event, just in case. | 585 // Test KeyRelease event, just in case. |
586 // Release Search. Confirm the release event is not rewritten. | 586 // Release Search. Confirm the release event is not rewritten. |
587 {ui::ET_KEY_RELEASED, | 587 {ui::ET_KEY_RELEASED, |
588 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_NONE, ui::DomKey::META}, | 588 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_NONE, ui::DomKey::META}, |
589 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_NONE, ui::DomKey::META}}, | 589 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_NONE, ui::DomKey::META}}, |
590 }; | 590 }; |
591 | 591 |
592 for (const auto& test : tests) { | 592 for (const auto& test : tests) { |
593 CheckKeyTestCase(&rewriter, test); | 593 CheckKeyTestCase(&rewriter, test); |
594 } | 594 } |
595 } | 595 } |
596 | 596 |
597 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) { | 597 TEST_F(EventRewriterTest, TestRewriteModifiersNoRemapMultipleKeys) { |
598 syncable_prefs::TestingPrefServiceSyncable prefs; | 598 syncable_prefs::TestingPrefServiceSyncable prefs; |
599 EventRewriter rewriter(NULL); | 599 EventRewriter rewriter(NULL); |
600 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 600 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
601 rewriter.set_pref_service_for_testing(&prefs); | 601 rewriter.set_pref_service_for_testing(&prefs); |
602 | 602 |
603 KeyTestCase tests[] = { | 603 KeyTestCase tests[] = { |
604 // Press Alt with Shift. Confirm the event is not rewritten. | 604 // Press Alt with Shift. Confirm the event is not rewritten. |
605 {ui::ET_KEY_PRESSED, | 605 {ui::ET_KEY_PRESSED, |
606 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 606 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
607 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}, | 607 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}, |
608 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 608 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
609 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, | 609 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, |
610 | 610 |
611 // Press Search with Caps Lock mask. Confirm the event is not rewritten. | 611 // Press Search with Caps Lock mask. Confirm the event is not rewritten. |
612 {ui::ET_KEY_PRESSED, | 612 {ui::ET_KEY_PRESSED, |
613 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 613 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
614 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}, | 614 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}, |
615 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 615 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
616 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, | 616 ui::EF_CAPS_LOCK_ON | ui::EF_COMMAND_DOWN, ui::DomKey::META}}, |
617 | 617 |
618 // Release Search with Caps Lock mask. Confirm the event is not rewritten. | 618 // Release Search with Caps Lock mask. Confirm the event is not rewritten. |
619 {ui::ET_KEY_RELEASED, | 619 {ui::ET_KEY_RELEASED, |
620 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CAPS_LOCK_ON, | 620 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON, |
621 ui::DomKey::META}, | 621 ui::DomKey::META}, |
622 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CAPS_LOCK_ON, | 622 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CAPS_LOCK_ON, |
623 ui::DomKey::META}}, | 623 ui::DomKey::META}}, |
624 | 624 |
625 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. | 625 // Press Shift+Ctrl+Alt+Search+A. Confirm the event is not rewritten. |
626 {ui::ET_KEY_PRESSED, | 626 {ui::ET_KEY_PRESSED, |
627 {ui::VKEY_B, ui::DomCode::US_B, | 627 {ui::VKEY_B, ui::DomCode::US_B, |
628 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 628 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
629 ui::EF_COMMAND_DOWN, | 629 ui::EF_COMMAND_DOWN, |
630 ui::DomKey::Constant<'B'>::Character}, | 630 ui::DomKey::Constant<'B'>::Character}, |
631 {ui::VKEY_B, ui::DomCode::US_B, | 631 {ui::VKEY_B, ui::DomCode::US_B, |
632 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 632 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
(...skipping 25 matching lines...) Expand all Loading... |
658 // Press Alt with Shift. This key press shouldn't be affected by the | 658 // Press Alt with Shift. This key press shouldn't be affected by the |
659 // pref. Confirm the event is not rewritten. | 659 // pref. Confirm the event is not rewritten. |
660 {ui::ET_KEY_PRESSED, | 660 {ui::ET_KEY_PRESSED, |
661 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 661 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
662 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}, | 662 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}, |
663 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 663 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
664 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, | 664 ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, ui::DomKey::ALT}}, |
665 | 665 |
666 // Press Search. Confirm the event is now VKEY_UNKNOWN. | 666 // Press Search. Confirm the event is now VKEY_UNKNOWN. |
667 {ui::ET_KEY_PRESSED, | 667 {ui::ET_KEY_PRESSED, |
668 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_NONE, ui::DomKey::META}, | 668 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_NONE, ui::DomKey::META}, |
669 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, | 669 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, |
670 ui::DomKey::UNIDENTIFIED}}, | 670 ui::DomKey::UNIDENTIFIED}}, |
671 | 671 |
672 // Press Control. Confirm the event is now VKEY_UNKNOWN. | 672 // Press Control. Confirm the event is now VKEY_UNKNOWN. |
673 {ui::ET_KEY_PRESSED, | 673 {ui::ET_KEY_PRESSED, |
674 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 674 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
675 ui::DomKey::CONTROL}, | 675 ui::DomKey::CONTROL}, |
676 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, | 676 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, |
677 ui::DomKey::UNIDENTIFIED}}, | 677 ui::DomKey::UNIDENTIFIED}}, |
678 | 678 |
679 // Press Control+Search. Confirm the event is now VKEY_UNKNOWN | 679 // Press Control+Search. Confirm the event is now VKEY_UNKNOWN |
680 // without any modifiers. | 680 // without any modifiers. |
681 {ui::ET_KEY_PRESSED, | 681 {ui::ET_KEY_PRESSED, |
682 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_CONTROL_DOWN, | 682 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_CONTROL_DOWN, |
683 ui::DomKey::META}, | 683 ui::DomKey::META}, |
684 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, | 684 {ui::VKEY_UNKNOWN, ui::DomCode::NONE, ui::EF_NONE, |
685 ui::DomKey::UNIDENTIFIED}}, | 685 ui::DomKey::UNIDENTIFIED}}, |
686 | 686 |
687 // Press Control+Search+a. Confirm the event is now VKEY_A without any | 687 // Press Control+Search+a. Confirm the event is now VKEY_A without any |
688 // modifiers. | 688 // modifiers. |
689 {ui::ET_KEY_PRESSED, | 689 {ui::ET_KEY_PRESSED, |
690 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, | 690 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_CONTROL_DOWN, |
691 ui::DomKey::Constant<'a'>::Character}, | 691 ui::DomKey::Constant<'a'>::Character}, |
692 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_NONE, | 692 {ui::VKEY_A, ui::DomCode::US_A, ui::EF_NONE, |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); | 740 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
741 search.SetValue(chromeos::input_method::kControlKey); | 741 search.SetValue(chromeos::input_method::kControlKey); |
742 | 742 |
743 EventRewriter rewriter(NULL); | 743 EventRewriter rewriter(NULL); |
744 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 744 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
745 rewriter.set_pref_service_for_testing(&prefs); | 745 rewriter.set_pref_service_for_testing(&prefs); |
746 | 746 |
747 KeyTestCase s_tests[] = { | 747 KeyTestCase s_tests[] = { |
748 // Press Search. Confirm the event is now VKEY_CONTROL. | 748 // Press Search. Confirm the event is now VKEY_CONTROL. |
749 {ui::ET_KEY_PRESSED, | 749 {ui::ET_KEY_PRESSED, |
750 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_COMMAND_DOWN, | 750 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
751 ui::DomKey::META}, | 751 ui::DomKey::META}, |
752 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 752 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
753 ui::DomKey::CONTROL}}, | 753 ui::DomKey::CONTROL}}, |
754 }; | 754 }; |
755 | 755 |
756 for (const auto& test : s_tests) { | 756 for (const auto& test : s_tests) { |
757 CheckKeyTestCase(&rewriter, test); | 757 CheckKeyTestCase(&rewriter, test); |
758 } | 758 } |
759 | 759 |
760 // Remap Alt to Control too. | 760 // Remap Alt to Control too. |
761 IntegerPrefMember alt; | 761 IntegerPrefMember alt; |
762 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); | 762 alt.Init(prefs::kLanguageRemapAltKeyTo, &prefs); |
763 alt.SetValue(chromeos::input_method::kControlKey); | 763 alt.SetValue(chromeos::input_method::kControlKey); |
764 | 764 |
765 KeyTestCase sa_tests[] = { | 765 KeyTestCase sa_tests[] = { |
766 // Press Alt. Confirm the event is now VKEY_CONTROL. | 766 // Press Alt. Confirm the event is now VKEY_CONTROL. |
767 {ui::ET_KEY_PRESSED, | 767 {ui::ET_KEY_PRESSED, |
768 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, ui::DomKey::ALT}, | 768 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, ui::DomKey::ALT}, |
769 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 769 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
770 ui::DomKey::CONTROL}}, | 770 ui::DomKey::CONTROL}}, |
771 | 771 |
772 // Press Alt+Search. Confirm the event is now VKEY_CONTROL. | 772 // Press Alt+Search. Confirm the event is now VKEY_CONTROL. |
773 {ui::ET_KEY_PRESSED, | 773 {ui::ET_KEY_PRESSED, |
774 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 774 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
775 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}, | 775 ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, ui::DomKey::META}, |
776 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 776 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
777 ui::DomKey::CONTROL}}, | 777 ui::DomKey::CONTROL}}, |
778 | 778 |
779 // Press Control+Alt+Search. Confirm the event is now VKEY_CONTROL. | 779 // Press Control+Alt+Search. Confirm the event is now VKEY_CONTROL. |
780 {ui::ET_KEY_PRESSED, | 780 {ui::ET_KEY_PRESSED, |
781 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 781 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
782 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 782 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
783 ui::DomKey::META}, | 783 ui::DomKey::META}, |
784 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 784 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
785 ui::DomKey::CONTROL}}, | 785 ui::DomKey::CONTROL}}, |
786 | 786 |
787 // Press Shift+Control+Alt+Search. Confirm the event is now Control with | 787 // Press Shift+Control+Alt+Search. Confirm the event is now Control with |
788 // Shift and Control modifiers. | 788 // Shift and Control modifiers. |
789 {ui::ET_KEY_PRESSED, | 789 {ui::ET_KEY_PRESSED, |
790 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 790 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
791 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 791 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
792 ui::EF_COMMAND_DOWN, | 792 ui::EF_COMMAND_DOWN, |
793 ui::DomKey::META}, | 793 ui::DomKey::META}, |
794 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 794 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
795 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL}}, | 795 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, ui::DomKey::CONTROL}}, |
796 | 796 |
797 // Press Shift+Control+Alt+Search+B. Confirm the event is now B with Shift | 797 // Press Shift+Control+Alt+Search+B. Confirm the event is now B with Shift |
798 // and Control modifiers. | 798 // and Control modifiers. |
799 {ui::ET_KEY_PRESSED, | 799 {ui::ET_KEY_PRESSED, |
800 {ui::VKEY_B, ui::DomCode::US_B, | 800 {ui::VKEY_B, ui::DomCode::US_B, |
(...skipping 17 matching lines...) Expand all Loading... |
818 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); | 818 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
819 search.SetValue(chromeos::input_method::kEscapeKey); | 819 search.SetValue(chromeos::input_method::kEscapeKey); |
820 | 820 |
821 EventRewriter rewriter(NULL); | 821 EventRewriter rewriter(NULL); |
822 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 822 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
823 rewriter.set_pref_service_for_testing(&prefs); | 823 rewriter.set_pref_service_for_testing(&prefs); |
824 | 824 |
825 KeyTestCase tests[] = { | 825 KeyTestCase tests[] = { |
826 // Press Search. Confirm the event is now VKEY_ESCAPE. | 826 // Press Search. Confirm the event is now VKEY_ESCAPE. |
827 {ui::ET_KEY_PRESSED, | 827 {ui::ET_KEY_PRESSED, |
828 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_COMMAND_DOWN, | 828 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
829 ui::DomKey::META}, | 829 ui::DomKey::META}, |
830 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}}, | 830 {ui::VKEY_ESCAPE, ui::DomCode::ESCAPE, ui::EF_NONE, ui::DomKey::ESCAPE}}, |
831 }; | 831 }; |
832 | 832 |
833 for (const auto& test : tests) { | 833 for (const auto& test : tests) { |
834 CheckKeyTestCase(&rewriter, test); | 834 CheckKeyTestCase(&rewriter, test); |
835 } | 835 } |
836 } | 836 } |
837 | 837 |
838 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { | 838 TEST_F(EventRewriterTest, TestRewriteModifiersRemapMany) { |
839 // Remap Search to Alt. | 839 // Remap Search to Alt. |
840 syncable_prefs::TestingPrefServiceSyncable prefs; | 840 syncable_prefs::TestingPrefServiceSyncable prefs; |
841 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); | 841 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
842 IntegerPrefMember search; | 842 IntegerPrefMember search; |
843 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); | 843 search.Init(prefs::kLanguageRemapSearchKeyTo, &prefs); |
844 search.SetValue(chromeos::input_method::kAltKey); | 844 search.SetValue(chromeos::input_method::kAltKey); |
845 | 845 |
846 EventRewriter rewriter(NULL); | 846 EventRewriter rewriter(NULL); |
847 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 847 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
848 rewriter.set_pref_service_for_testing(&prefs); | 848 rewriter.set_pref_service_for_testing(&prefs); |
849 | 849 |
850 KeyTestCase s2a_tests[] = { | 850 KeyTestCase s2a_tests[] = { |
851 // Press Search. Confirm the event is now VKEY_MENU. | 851 // Press Search. Confirm the event is now VKEY_MENU. |
852 {ui::ET_KEY_PRESSED, | 852 {ui::ET_KEY_PRESSED, |
853 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_COMMAND_DOWN, | 853 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
854 ui::DomKey::META}, | 854 ui::DomKey::META}, |
855 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, | 855 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, ui::EF_ALT_DOWN, |
856 ui::DomKey::ALT}}, | 856 ui::DomKey::ALT}}, |
857 }; | 857 }; |
858 | 858 |
859 for (const auto& test : s2a_tests) { | 859 for (const auto& test : s2a_tests) { |
860 CheckKeyTestCase(&rewriter, test); | 860 CheckKeyTestCase(&rewriter, test); |
861 } | 861 } |
862 | 862 |
863 // Remap Alt to Control. | 863 // Remap Alt to Control. |
(...skipping 30 matching lines...) Expand all Loading... |
894 // Remap Control to Search. | 894 // Remap Control to Search. |
895 IntegerPrefMember control; | 895 IntegerPrefMember control; |
896 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); | 896 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
897 control.SetValue(chromeos::input_method::kSearchKey); | 897 control.SetValue(chromeos::input_method::kSearchKey); |
898 | 898 |
899 KeyTestCase c2s_tests[] = { | 899 KeyTestCase c2s_tests[] = { |
900 // Press left Control. Confirm the event is now VKEY_LWIN. | 900 // Press left Control. Confirm the event is now VKEY_LWIN. |
901 {ui::ET_KEY_PRESSED, | 901 {ui::ET_KEY_PRESSED, |
902 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, | 902 {ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, ui::EF_CONTROL_DOWN, |
903 ui::DomKey::CONTROL}, | 903 ui::DomKey::CONTROL}, |
904 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, ui::EF_COMMAND_DOWN, | 904 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, ui::EF_COMMAND_DOWN, |
905 ui::DomKey::META}}, | 905 ui::DomKey::META}}, |
906 | 906 |
907 // Then, press all of the three, Control+Alt+Search. | 907 // Then, press all of the three, Control+Alt+Search. |
908 {ui::ET_KEY_PRESSED, | 908 {ui::ET_KEY_PRESSED, |
909 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 909 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
910 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 910 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
911 ui::DomKey::META}, | 911 ui::DomKey::META}, |
912 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 912 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
913 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, | 913 ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_COMMAND_DOWN, |
914 ui::DomKey::ALT}}, | 914 ui::DomKey::ALT}}, |
915 | 915 |
916 // Press Shift+Control+Alt+Search. | 916 // Press Shift+Control+Alt+Search. |
917 {ui::ET_KEY_PRESSED, | 917 {ui::ET_KEY_PRESSED, |
918 {ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 918 {ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
919 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 919 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
920 ui::EF_COMMAND_DOWN, | 920 ui::EF_COMMAND_DOWN, |
921 ui::DomKey::META}, | 921 ui::DomKey::META}, |
922 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, | 922 {ui::VKEY_MENU, ui::DomCode::ALT_LEFT, |
923 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | | 923 ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | |
924 ui::EF_COMMAND_DOWN, | 924 ui::EF_COMMAND_DOWN, |
925 ui::DomKey::ALT}}, | 925 ui::DomKey::ALT}}, |
926 | 926 |
927 // Press Shift+Control+Alt+Search+B | 927 // Press Shift+Control+Alt+Search+B |
928 {ui::ET_KEY_PRESSED, | 928 {ui::ET_KEY_PRESSED, |
(...skipping 25 matching lines...) Expand all Loading... |
954 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 954 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
955 rewriter.set_pref_service_for_testing(&prefs); | 955 rewriter.set_pref_service_for_testing(&prefs); |
956 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); | 956 rewriter.set_ime_keyboard_for_testing(&ime_keyboard); |
957 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); | 957 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); |
958 | 958 |
959 // Press Search. | 959 // Press Search. |
960 EXPECT_EQ(GetExpectedResultAsString( | 960 EXPECT_EQ(GetExpectedResultAsString( |
961 ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, | 961 ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, |
962 ui::EF_MOD3_DOWN | ui::EF_CAPS_LOCK_ON, ui::DomKey::CAPS_LOCK), | 962 ui::EF_MOD3_DOWN | ui::EF_CAPS_LOCK_ON, ui::DomKey::CAPS_LOCK), |
963 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 963 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
964 ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 964 ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
965 ui::EF_COMMAND_DOWN, ui::DomKey::META)); | 965 ui::EF_COMMAND_DOWN, ui::DomKey::META)); |
966 // Confirm that the Caps Lock status is changed. | 966 // Confirm that the Caps Lock status is changed. |
967 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); | 967 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); |
968 | 968 |
969 // Release Search. | 969 // Release Search. |
970 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL, | 970 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL, |
971 ui::DomCode::CAPS_LOCK, ui::EF_NONE, | 971 ui::DomCode::CAPS_LOCK, ui::EF_NONE, |
972 ui::DomKey::CAPS_LOCK), | 972 ui::DomKey::CAPS_LOCK), |
973 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, | 973 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, |
974 ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 974 ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
975 ui::EF_NONE, ui::DomKey::META)); | 975 ui::EF_NONE, ui::DomKey::META)); |
976 // Confirm that the Caps Lock status is not changed. | 976 // Confirm that the Caps Lock status is not changed. |
977 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); | 977 EXPECT_TRUE(ime_keyboard.caps_lock_is_enabled_); |
978 | 978 |
979 // Press Search. | 979 // Press Search. |
980 EXPECT_EQ(GetExpectedResultAsString( | 980 EXPECT_EQ(GetExpectedResultAsString( |
981 ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, | 981 ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, |
982 ui::EF_CAPS_LOCK_ON | ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK), | 982 ui::EF_CAPS_LOCK_ON | ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK), |
983 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 983 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
984 ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 984 ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
985 ui::EF_COMMAND_DOWN | ui::EF_CAPS_LOCK_ON, | 985 ui::EF_COMMAND_DOWN | ui::EF_CAPS_LOCK_ON, |
986 ui::DomKey::META)); | 986 ui::DomKey::META)); |
987 // Confirm that the Caps Lock status is changed. | 987 // Confirm that the Caps Lock status is changed. |
988 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); | 988 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); |
989 | 989 |
990 // Release Search. | 990 // Release Search. |
991 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL, | 991 EXPECT_EQ(GetExpectedResultAsString(ui::ET_KEY_RELEASED, ui::VKEY_CAPITAL, |
992 ui::DomCode::CAPS_LOCK, ui::EF_NONE, | 992 ui::DomCode::CAPS_LOCK, ui::EF_NONE, |
993 ui::DomKey::CAPS_LOCK), | 993 ui::DomKey::CAPS_LOCK), |
994 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, | 994 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_RELEASED, |
995 ui::VKEY_LWIN, ui::DomCode::OS_LEFT, | 995 ui::VKEY_LWIN, ui::DomCode::META_LEFT, |
996 ui::EF_NONE, ui::DomKey::META)); | 996 ui::EF_NONE, ui::DomKey::META)); |
997 // Confirm that the Caps Lock status is not changed. | 997 // Confirm that the Caps Lock status is not changed. |
998 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); | 998 EXPECT_FALSE(ime_keyboard.caps_lock_is_enabled_); |
999 | 999 |
1000 // Press Caps Lock (on an external keyboard). | 1000 // Press Caps Lock (on an external keyboard). |
1001 EXPECT_EQ(GetExpectedResultAsString( | 1001 EXPECT_EQ(GetExpectedResultAsString( |
1002 ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, | 1002 ui::ET_KEY_PRESSED, ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, |
1003 ui::EF_CAPS_LOCK_ON | ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK), | 1003 ui::EF_CAPS_LOCK_ON | ui::EF_MOD3_DOWN, ui::DomKey::CAPS_LOCK), |
1004 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, | 1004 GetRewrittenEventAsString(&rewriter, ui::ET_KEY_PRESSED, |
1005 ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, | 1005 ui::VKEY_CAPITAL, ui::DomCode::CAPS_LOCK, |
(...skipping 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2554 | 2554 |
2555 // Enable modifiers. | 2555 // Enable modifiers. |
2556 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2556 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
2557 ui::DomKey::CONTROL); | 2557 ui::DomKey::CONTROL); |
2558 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, | 2558 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, |
2559 ui::DomKey::SHIFT); | 2559 ui::DomKey::SHIFT); |
2560 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, | 2560 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, |
2561 ui::DomKey::SHIFT); | 2561 ui::DomKey::SHIFT); |
2562 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, | 2562 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, |
2563 ui::DomKey::ALT); | 2563 ui::DomKey::ALT); |
2564 SendActivateStickyKeyPattern(ui::VKEY_COMMAND, ui::DomCode::OS_LEFT, | 2564 SendActivateStickyKeyPattern(ui::VKEY_COMMAND, ui::DomCode::META_LEFT, |
2565 ui::DomKey::META); | 2565 ui::DomKey::META); |
2566 SendActivateStickyKeyPattern(ui::VKEY_COMMAND, ui::DomCode::OS_LEFT, | 2566 SendActivateStickyKeyPattern(ui::VKEY_COMMAND, ui::DomCode::META_LEFT, |
2567 ui::DomKey::META); | 2567 ui::DomKey::META); |
2568 | 2568 |
2569 EXPECT_TRUE(overlay_->is_visible()); | 2569 EXPECT_TRUE(overlay_->is_visible()); |
2570 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, | 2570 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, |
2571 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2571 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2572 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, | 2572 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, |
2573 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2573 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2574 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, | 2574 EXPECT_EQ(ash::STICKY_KEY_STATE_ENABLED, |
2575 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); | 2575 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); |
2576 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, | 2576 EXPECT_EQ(ash::STICKY_KEY_STATE_LOCKED, |
2577 overlay_->GetModifierKeyState(ui::EF_COMMAND_DOWN)); | 2577 overlay_->GetModifierKeyState(ui::EF_COMMAND_DOWN)); |
2578 | 2578 |
2579 // Disable modifiers and overlay should be hidden. | 2579 // Disable modifiers and overlay should be hidden. |
2580 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2580 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
2581 ui::DomKey::CONTROL); | 2581 ui::DomKey::CONTROL); |
2582 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, | 2582 SendActivateStickyKeyPattern(ui::VKEY_CONTROL, ui::DomCode::CONTROL_LEFT, |
2583 ui::DomKey::CONTROL); | 2583 ui::DomKey::CONTROL); |
2584 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, | 2584 SendActivateStickyKeyPattern(ui::VKEY_SHIFT, ui::DomCode::SHIFT_LEFT, |
2585 ui::DomKey::SHIFT); | 2585 ui::DomKey::SHIFT); |
2586 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, | 2586 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, |
2587 ui::DomKey::ALT); | 2587 ui::DomKey::ALT); |
2588 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, | 2588 SendActivateStickyKeyPattern(ui::VKEY_LMENU, ui::DomCode::ALT_LEFT, |
2589 ui::DomKey::ALT); | 2589 ui::DomKey::ALT); |
2590 SendActivateStickyKeyPattern(ui::VKEY_COMMAND, ui::DomCode::OS_LEFT, | 2590 SendActivateStickyKeyPattern(ui::VKEY_COMMAND, ui::DomCode::META_LEFT, |
2591 ui::DomKey::META); | 2591 ui::DomKey::META); |
2592 | 2592 |
2593 EXPECT_FALSE(overlay_->is_visible()); | 2593 EXPECT_FALSE(overlay_->is_visible()); |
2594 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2594 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2595 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); | 2595 overlay_->GetModifierKeyState(ui::EF_CONTROL_DOWN)); |
2596 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2596 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2597 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); | 2597 overlay_->GetModifierKeyState(ui::EF_SHIFT_DOWN)); |
2598 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2598 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
2599 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); | 2599 overlay_->GetModifierKeyState(ui::EF_ALT_DOWN)); |
2600 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, | 2600 EXPECT_EQ(ash::STICKY_KEY_STATE_DISABLED, |
(...skipping 28 matching lines...) Expand all Loading... |
2629 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2629 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
2630 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2630 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
2631 | 2631 |
2632 // Turn off AltGr and Mod3. | 2632 // Turn off AltGr and Mod3. |
2633 sticky_keys_controller_->SetModifiersEnabled(false, false); | 2633 sticky_keys_controller_->SetModifiersEnabled(false, false); |
2634 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2634 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
2635 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2635 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
2636 } | 2636 } |
2637 | 2637 |
2638 } // namespace chromeos | 2638 } // namespace chromeos |
OLD | NEW |