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 1610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1621 | 1621 |
1622 for (size_t i = 0; i < arraysize(tests); ++i) { | 1622 for (size_t i = 0; i < arraysize(tests); ++i) { |
1623 SCOPED_TRACE(i); | 1623 SCOPED_TRACE(i); |
1624 CheckKeyTestCase(&rewriter, tests[i]); | 1624 CheckKeyTestCase(&rewriter, tests[i]); |
1625 } | 1625 } |
1626 | 1626 |
1627 *CommandLine::ForCurrentProcess() = original_cl; | 1627 *CommandLine::ForCurrentProcess() = original_cl; |
1628 } | 1628 } |
1629 | 1629 |
1630 TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) { | 1630 TEST_F(EventRewriterTest, TestRewriteKeyEventSentByXSendEvent) { |
1631 #if defined(USE_X11) | |
1632 // TODO(kpschoedel): pending alternative to xevent.xany.send_event | |
1633 // Remap Control to Alt. | 1631 // Remap Control to Alt. |
1634 TestingPrefServiceSyncable prefs; | 1632 TestingPrefServiceSyncable prefs; |
1635 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); | 1633 chromeos::Preferences::RegisterProfilePrefs(prefs.registry()); |
1636 IntegerPrefMember control; | 1634 IntegerPrefMember control; |
1637 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); | 1635 control.Init(prefs::kLanguageRemapControlKeyTo, &prefs); |
1638 control.SetValue(chromeos::input_method::kAltKey); | 1636 control.SetValue(chromeos::input_method::kAltKey); |
1639 | 1637 |
1640 EventRewriter rewriter(NULL); | 1638 EventRewriter rewriter(NULL); |
1641 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); | 1639 rewriter.KeyboardDeviceAddedForTesting(kKeyboardDeviceId, "PC Keyboard"); |
1642 rewriter.set_pref_service_for_testing(&prefs); | 1640 rewriter.set_pref_service_for_testing(&prefs); |
1643 | 1641 |
1644 // Send left control press. | 1642 // Send left control press. |
1645 std::string rewritten_event; | 1643 { |
| 1644 ui::KeyEvent keyevent( |
| 1645 ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, ui::EF_FINAL, false); |
| 1646 scoped_ptr<ui::Event> new_event; |
| 1647 // Control should NOT be remapped to Alt if EF_FINAL is set. |
| 1648 EXPECT_EQ(ui::EVENT_REWRITE_CONTINUE, |
| 1649 rewriter.RewriteEvent(keyevent, &new_event)); |
| 1650 EXPECT_FALSE(new_event); |
| 1651 } |
| 1652 #if defined(USE_X11) |
| 1653 // Send left control press, using XI2 native events. |
1646 { | 1654 { |
1647 ui::ScopedXI2Event xev; | 1655 ui::ScopedXI2Event xev; |
1648 xev.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, 0); | 1656 xev.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_CONTROL, 0); |
1649 XEvent* xevent = xev; | 1657 XEvent* xevent = xev; |
1650 xevent->xkey.keycode = XKeysymToKeycode(gfx::GetXDisplay(), XK_Control_L); | 1658 xevent->xkey.keycode = XKeysymToKeycode(gfx::GetXDisplay(), XK_Control_L); |
1651 xevent->xkey.send_event = True; // XSendEvent() always does this. | 1659 xevent->xkey.send_event = True; // XSendEvent() always does this. |
1652 ui::KeyEvent keyevent(xev, false /* is_char */); | 1660 ui::KeyEvent keyevent(xev, false /* is_char */); |
1653 scoped_ptr<ui::Event> new_event; | 1661 scoped_ptr<ui::Event> new_event; |
1654 // Control should NOT be remapped to Alt if send_event | 1662 // Control should NOT be remapped to Alt if send_event |
1655 // flag in the event is True. | 1663 // flag in the event is True. |
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2391 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2399 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
2392 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2400 EXPECT_TRUE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
2393 | 2401 |
2394 // Turn off AltGr and Mod3. | 2402 // Turn off AltGr and Mod3. |
2395 sticky_keys_controller_->SetModifiersEnabled(false, false); | 2403 sticky_keys_controller_->SetModifiersEnabled(false, false); |
2396 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); | 2404 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_ALTGR_DOWN)); |
2397 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); | 2405 EXPECT_FALSE(overlay_->GetModifierVisible(ui::EF_MOD3_DOWN)); |
2398 } | 2406 } |
2399 | 2407 |
2400 } // namespace chromeos | 2408 } // namespace chromeos |
OLD | NEW |