| Index: ui/views/controls/webview/unhandled_keyboard_event_handler_linux.cc
|
| diff --git a/ui/views/controls/webview/unhandled_keyboard_event_handler_linux.cc b/ui/views/controls/webview/unhandled_keyboard_event_handler_linux.cc
|
| index 45c51ad61a6fbf546dc94140f33bde9370cb8f49..8d30e36ad8ad0629fb6f5377da19dc520833835b 100644
|
| --- a/ui/views/controls/webview/unhandled_keyboard_event_handler_linux.cc
|
| +++ b/ui/views/controls/webview/unhandled_keyboard_event_handler_linux.cc
|
| @@ -4,60 +4,16 @@
|
|
|
| #include "ui/views/controls/webview/unhandled_keyboard_event_handler.h"
|
|
|
| -#include "base/logging.h"
|
| -#include "content/public/browser/native_web_keyboard_event.h"
|
| #include "ui/events/event.h"
|
| #include "ui/views/focus/focus_manager.h"
|
|
|
| -using content::NativeWebKeyboardEvent;
|
| -
|
| namespace views {
|
|
|
| -UnhandledKeyboardEventHandler::UnhandledKeyboardEventHandler()
|
| - : ignore_next_char_event_(false) {
|
| -}
|
| -
|
| -void UnhandledKeyboardEventHandler::HandleKeyboardEvent(
|
| - const NativeWebKeyboardEvent& event,
|
| +// static
|
| +void UnhandledKeyboardEventHandler::HandleNativeKeyboardEvent(
|
| + gfx::NativeEvent event,
|
| FocusManager* focus_manager) {
|
| - if (!focus_manager) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| - // Previous calls to TranslateMessage can generate Char events as well as
|
| - // RawKeyDown events, even if the latter triggered an accelerator. In these
|
| - // cases, we discard the Char events.
|
| - if (event.type == blink::WebInputEvent::Char && ignore_next_char_event_) {
|
| - ignore_next_char_event_ = false;
|
| - return;
|
| - }
|
| - // It's necessary to reset this flag, because a RawKeyDown event may not
|
| - // always generate a Char event.
|
| - ignore_next_char_event_ = false;
|
| -
|
| - if (event.type == blink::WebInputEvent::RawKeyDown) {
|
| - ui::Accelerator accelerator(
|
| - static_cast<ui::KeyboardCode>(event.windowsKeyCode),
|
| - content::GetModifiersFromNativeWebKeyboardEvent(event));
|
| -
|
| - // This is tricky: we want to set ignore_next_char_event_ if
|
| - // ProcessAccelerator returns true. But ProcessAccelerator might delete
|
| - // |this| if the accelerator is a "close tab" one. So we speculatively
|
| - // set the flag and fix it if no event was handled.
|
| - ignore_next_char_event_ = true;
|
| -
|
| - if (focus_manager->ProcessAccelerator(accelerator)) {
|
| - return;
|
| - }
|
| -
|
| - // ProcessAccelerator didn't handle the accelerator, so we know both
|
| - // that |this| is still valid, and that we didn't want to set the flag.
|
| - ignore_next_char_event_ = false;
|
| - }
|
| -
|
| - if (event.os_event && !event.skip_in_browser)
|
| - focus_manager->OnKeyEvent(*static_cast<ui::KeyEvent*>(event.os_event));
|
| + focus_manager->OnKeyEvent(*static_cast<ui::KeyEvent*>(event));
|
| }
|
|
|
| } // namespace views
|
|
|