| 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 |