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