Chromium Code Reviews| Index: chrome/browser/chromeos/events/keyboard_driven_event_rewriter.cc |
| diff --git a/chrome/browser/chromeos/events/keyboard_driven_event_rewriter.cc b/chrome/browser/chromeos/events/keyboard_driven_event_rewriter.cc |
| index 1934477f6e223f722749103b962e55d77c597190..45c6eb4d1144625e26f83a98ffcc2eae2853a28d 100644 |
| --- a/chrome/browser/chromeos/events/keyboard_driven_event_rewriter.cc |
| +++ b/chrome/browser/chromeos/events/keyboard_driven_event_rewriter.cc |
| @@ -4,10 +4,9 @@ |
| #include "chrome/browser/chromeos/events/keyboard_driven_event_rewriter.h" |
| -#include <X11/Xlib.h> |
| - |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| #include "chrome/browser/chromeos/system/input_device_settings.h" |
| +#include "ui/events/event.h" |
| #include "ui/events/event_utils.h" |
| namespace chromeos { |
| @@ -34,23 +33,39 @@ KeyboardDrivenEventRewriter::KeyboardDrivenEventRewriter() {} |
| KeyboardDrivenEventRewriter::~KeyboardDrivenEventRewriter() {} |
| -bool KeyboardDrivenEventRewriter::RewriteIfKeyboardDrivenOnLoginScreen( |
| - XEvent* event) { |
| +ui::EventRewriteStatus KeyboardDrivenEventRewriter::RewriteForTesting( |
| + const ui::Event& event, |
| + scoped_ptr<ui::Event>* rewritten_event) { |
| + return Rewrite(event, rewritten_event); |
| +} |
| + |
| +ui::EventRewriteStatus KeyboardDrivenEventRewriter::RewriteEvent( |
| + const ui::Event& event, |
| + scoped_ptr<ui::Event>* rewritten_event) { |
| if (!ShouldStripModifiersForArrowKeysAndEnter()) |
| - return false; |
| + return ui::EVENT_REWRITE_CONTINUE; |
| - return RewriteEvent(event); |
| + return Rewrite(event, rewritten_event); |
| } |
| -bool KeyboardDrivenEventRewriter::RewriteForTesting(XEvent* event) { |
| - return RewriteEvent(event); |
| +ui::EventRewriteStatus KeyboardDrivenEventRewriter::NextDispatchEvent( |
| + const ui::Event& last_event, |
| + scoped_ptr<ui::Event>* new_event) { |
| + NOTREACHED(); |
| + return ui::EVENT_REWRITE_CONTINUE; |
| } |
| -bool KeyboardDrivenEventRewriter::RewriteEvent(XEvent* event) { |
| - int flags = ui::EventFlagsFromNative(event); |
| +ui::EventRewriteStatus KeyboardDrivenEventRewriter::Rewrite( |
| + const ui::Event& event, |
| + scoped_ptr<ui::Event>* rewritten_event) { |
| + int flags = event.flags(); |
| if ((flags & kModifierMask) != kModifierMask) |
| - return false; |
| - ui::KeyboardCode key_code = ui::KeyboardCodeFromNative(event); |
| + return ui::EVENT_REWRITE_CONTINUE; |
| + |
| + DCHECK(event.type() == ui::ET_KEY_PRESSED || |
| + event.type() == ui::ET_KEY_RELEASED); |
|
Daniel Erat
2014/04/18 02:50:06
nit: include the unexected event type in an error
|
| + const ui::KeyEvent& key_event = static_cast<const ui::KeyEvent&>(event); |
| + ui::KeyboardCode key_code = key_event.key_code(); |
| if (key_code != ui::VKEY_LEFT && |
| key_code != ui::VKEY_RIGHT && |
| @@ -58,12 +73,13 @@ bool KeyboardDrivenEventRewriter::RewriteEvent(XEvent* event) { |
| key_code != ui::VKEY_DOWN && |
| key_code != ui::VKEY_RETURN && |
| key_code != ui::VKEY_F6) { |
| - return false; |
| + return ui::EVENT_REWRITE_CONTINUE; |
| } |
| - XKeyEvent* xkey = &(event->xkey); |
| - xkey->state &= ~(ControlMask | Mod1Mask | ShiftMask); |
| - return true; |
| + rewritten_event->reset(new ui::KeyEvent(key_event)); |
| + rewritten_event->get()->set_flags( |
|
Daniel Erat
2014/04/18 02:50:06
does (*rewritten_event)->set_flags() work here?
|
| + flags & ~(ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN | ui::EF_SHIFT_DOWN)); |
| + return ui::EVENT_REWRITE_REWRITTEN; |
| } |
| } // namespace chromeos |