diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 21:29:00 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-18 21:29:00 +0000 |
commit | 0b5781a63246fb4abf31f871b445a6d85970b19f (patch) | |
tree | 9a60d5eaa75093e26b73ac162dd14b6399c0e473 | |
parent | 836c4164547c4c2fcb863f74126c47befbeac767 (diff) | |
download | chromium_src-0b5781a63246fb4abf31f871b445a6d85970b19f.zip chromium_src-0b5781a63246fb4abf31f871b445a6d85970b19f.tar.gz chromium_src-0b5781a63246fb4abf31f871b445a6d85970b19f.tar.bz2 |
Refactors NativeWebKeyboardEvent to be less ugly.
Replaces #ifdefs in the source file with use of a new gfx::NativeEvent typedef.
Adds NativeWebKeyboardEventAura.
http://crbug.com/99757
TEST=none
Review URL: http://codereview.chromium.org/8302013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106135 0039d316-1c4b-4281-b951-d872f2087c98
22 files changed, 84 insertions, 135 deletions
diff --git a/chrome/browser/external_tab_container_win.cc b/chrome/browser/external_tab_container_win.cc index 3f58d2a..a1c896c 100644 --- a/chrome/browser/external_tab_container_win.cc +++ b/chrome/browser/external_tab_container_win.cc @@ -305,8 +305,7 @@ void ExternalTabContainer::SetTabHandle(int handle) { } void ExternalTabContainer::ProcessUnhandledAccelerator(const MSG& msg) { - NativeWebKeyboardEvent keyboard_event(msg.hwnd, msg.message, msg.wParam, - msg.lParam); + NativeWebKeyboardEvent keyboard_event(msg); unhandled_keyboard_event_handler_.HandleKeyboardEvent(keyboard_event, focus_manager_); } diff --git a/chrome/browser/ui/gtk/browser_window_gtk.cc b/chrome/browser/ui/gtk/browser_window_gtk.cc index 859e472..5a2d325 100644 --- a/chrome/browser/ui/gtk/browser_window_gtk.cc +++ b/chrome/browser/ui/gtk/browser_window_gtk.cc @@ -1065,7 +1065,7 @@ void BrowserWindowGtk::ShowAppMenu() { bool BrowserWindowGtk::PreHandleKeyboardEvent( const NativeWebKeyboardEvent& event, bool* is_keyboard_shortcut) { - GdkEventKey* os_event = event.os_event; + GdkEventKey* os_event = &event.os_event->key; if (!os_event || event.type != WebKit::WebInputEvent::RawKeyDown) return false; @@ -1125,7 +1125,7 @@ bool BrowserWindowGtk::PreHandleKeyboardEvent( void BrowserWindowGtk::HandleKeyboardEvent( const NativeWebKeyboardEvent& event) { - GdkEventKey* os_event = event.os_event; + GdkEventKey* os_event = &event.os_event->key; if (!os_event || event.type != WebKit::WebInputEvent::RawKeyDown) return; diff --git a/chrome/browser/ui/gtk/find_bar_gtk.cc b/chrome/browser/ui/gtk/find_bar_gtk.cc index ffc0364..0df4fbd 100644 --- a/chrome/browser/ui/gtk/find_bar_gtk.cc +++ b/chrome/browser/ui/gtk/find_bar_gtk.cc @@ -670,7 +670,7 @@ bool FindBarGtk::MaybeForwardKeyEventToRenderer(GdkEventKey* event) { // input. Otherwise Up and Down arrow key strokes get eaten. "Nom Nom Nom". render_view_host->ClearFocusedNode(); - NativeWebKeyboardEvent wke(event); + NativeWebKeyboardEvent wke(reinterpret_cast<GdkEvent*>(event)); render_view_host->ForwardKeyboardEvent(wke); return true; } diff --git a/chrome/browser/ui/gtk/html_dialog_gtk.cc b/chrome/browser/ui/gtk/html_dialog_gtk.cc index 8277e3c..f2b2884 100644 --- a/chrome/browser/ui/gtk/html_dialog_gtk.cc +++ b/chrome/browser/ui/gtk/html_dialog_gtk.cc @@ -143,7 +143,7 @@ bool HtmlDialogGtk::ShouldShowDialogTitle() const { // We don't handle global keyboard shortcuts here, but that's fine since // they're all browser-specific. (This may change in the future.) void HtmlDialogGtk::HandleKeyboardEvent(const NativeWebKeyboardEvent& event) { - GdkEventKey* os_event = event.os_event; + GdkEventKey* os_event = &event.os_event->key; if (!os_event || event.type == WebKit::WebInputEvent::Char) return; diff --git a/chrome/browser/ui/views/dropdown_bar_host_gtk.cc b/chrome/browser/ui/views/dropdown_bar_host_gtk.cc index 7b89a66..cb53155 100644 --- a/chrome/browser/ui/views/dropdown_bar_host_gtk.cc +++ b/chrome/browser/ui/views/dropdown_bar_host_gtk.cc @@ -50,6 +50,6 @@ NativeWebKeyboardEvent DropdownBarHost::GetKeyboardEvent( return wke; #else - return NativeWebKeyboardEvent(&key_event.gdk_event()->key); + return NativeWebKeyboardEvent(key_event.gdk_event()); #endif } diff --git a/chrome/browser/ui/views/dropdown_bar_host_win.cc b/chrome/browser/ui/views/dropdown_bar_host_win.cc index 2f553df..ad60e4a 100644 --- a/chrome/browser/ui/views/dropdown_bar_host_win.cc +++ b/chrome/browser/ui/views/dropdown_bar_host_win.cc @@ -18,7 +18,8 @@ NativeWebKeyboardEvent DropdownBarHost::GetKeyboardEvent( HWND hwnd = contents->GetContentNativeView(); WORD key = WindowsKeyCodeForKeyboardCode(key_event.key_code()); - return NativeWebKeyboardEvent(hwnd, key_event.native_event().message, key, 0); + MSG msg = { hwnd, key_event.native_event().message, key, 0 }; + return NativeWebKeyboardEvent(msg); } void DropdownBarHost::SetWidgetPositionNative(const gfx::Rect& new_pos, diff --git a/chrome/browser/ui/views/unhandled_keyboard_event_handler.cc b/chrome/browser/ui/views/unhandled_keyboard_event_handler.cc index 02eda65..e748f90 100644 --- a/chrome/browser/ui/views/unhandled_keyboard_event_handler.cc +++ b/chrome/browser/ui/views/unhandled_keyboard_event_handler.cc @@ -57,7 +57,7 @@ void UnhandledKeyboardEventHandler::HandleKeyboardEvent( ignore_next_char_event_ = false; } -#if defined(OS_WIN) +#if defined(OS_WIN) && !defined(USE_AURA) // Any unhandled keyboard/character messages should be defproced. // This allows stuff like F10, etc to work correctly. DefWindowProc(event.os_event.hwnd, event.os_event.message, diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi index 1e0a23e..51abedf 100644 --- a/chrome/chrome_common.gypi +++ b/chrome/chrome_common.gypi @@ -260,9 +260,6 @@ ], }], ['use_aura==1', { - 'sources': [ - 'common/native_web_keyboard_event_aura.cc', - ], 'dependencies!': [ 'default_plugin/default_plugin.gyp:default_plugin', ], diff --git a/chrome/common/native_web_keyboard_event_views.cc b/chrome/common/native_web_keyboard_event_views.cc index f36f668..e419fb1 100644 --- a/chrome/common/native_web_keyboard_event_views.cc +++ b/chrome/common/native_web_keyboard_event_views.cc @@ -50,9 +50,8 @@ NativeWebKeyboardEventViews::NativeWebKeyboardEventViews( os_event = event.native_event(); #elif defined(TOOLKIT_USES_GTK) if (event.gdk_event()) { - os_event = - reinterpret_cast<GdkEventKey*>(gdk_event_copy(event.gdk_event())); - nativeKeyCode = os_event->keyval; + os_event = gdk_event_copy(event.gdk_event()); + nativeKeyCode = os_event->key.keyval; } else { os_event = NULL; } diff --git a/content/browser/renderer_host/gtk_im_context_wrapper.cc b/content/browser/renderer_host/gtk_im_context_wrapper.cc index d2c4332..45ab812 100644 --- a/content/browser/renderer_host/gtk_im_context_wrapper.cc +++ b/content/browser/renderer_host/gtk_im_context_wrapper.cc @@ -154,7 +154,7 @@ void GtkIMContextWrapper::ProcessKeyEvent(GdkEventKey* event) { // Reset this flag here, as it's only used in input method callbacks. is_in_key_event_handler_ = false; - NativeWebKeyboardEvent wke(event); + NativeWebKeyboardEvent wke(reinterpret_cast<GdkEvent*>(event)); // If the key event was handled by the input method, then we need to prevent // RenderView::UnhandledKeyboardEvent() from processing it. diff --git a/content/browser/renderer_host/gtk_key_bindings_handler.cc b/content/browser/renderer_host/gtk_key_bindings_handler.cc index 351ad630..8a18376 100644 --- a/content/browser/renderer_host/gtk_key_bindings_handler.cc +++ b/content/browser/renderer_host/gtk_key_bindings_handler.cc @@ -33,7 +33,7 @@ bool GtkKeyBindingsHandler::Match(const NativeWebKeyboardEvent& wke, edit_commands_.clear(); // If this key event matches a predefined key binding, corresponding signal // will be emitted. - gtk_bindings_activate_event(GTK_OBJECT(handler_.get()), wke.os_event); + gtk_bindings_activate_event(GTK_OBJECT(handler_.get()), &wke.os_event->key); bool matched = !edit_commands_.empty(); if (edit_commands) diff --git a/content/browser/renderer_host/gtk_key_bindings_handler_unittest.cc b/content/browser/renderer_host/gtk_key_bindings_handler_unittest.cc index 5c77e5b..bc0b1fa 100644 --- a/content/browser/renderer_host/gtk_key_bindings_handler_unittest.cc +++ b/content/browser/renderer_host/gtk_key_bindings_handler_unittest.cc @@ -67,7 +67,7 @@ class GtkKeyBindingsHandlerTest : public testing::Test { event.group = keys[0].group; event.is_modifier = 0; g_free(keys); - return NativeWebKeyboardEvent(&event); + return NativeWebKeyboardEvent(reinterpret_cast<GdkEvent*>(&event)); } LOG(ERROR) << "Failed to create key event for keyval:" << keyval; return NativeWebKeyboardEvent(); diff --git a/chrome/common/native_web_keyboard_event_aura.cc b/content/browser/renderer_host/native_web_keyboard_event_aura.cc index 88405e00..fa3d0d6 100644 --- a/chrome/common/native_web_keyboard_event_aura.cc +++ b/content/browser/renderer_host/native_web_keyboard_event_aura.cc @@ -4,24 +4,38 @@ #include "content/public/browser/native_web_keyboard_event.h" -#if !defined(OS_WIN) +#include "content/browser/renderer_host/web_input_event_aura.h" + +using WebKit::WebKeyboardEvent; NativeWebKeyboardEvent::NativeWebKeyboardEvent() - : skip_in_browser(false) { + : os_event(NULL), + skip_in_browser(false) { +} + +NativeWebKeyboardEvent::NativeWebKeyboardEvent(gfx::NativeEvent native_event) + : WebKeyboardEvent(content::MakeWebKeyboardEvent( + reinterpret_cast<aura::KeyEvent*>(native_event))), + os_event(native_event), + skip_in_browser(false) { } NativeWebKeyboardEvent::NativeWebKeyboardEvent( const NativeWebKeyboardEvent& other) - : skip_in_browser(other.skip_in_browser) { + : WebKeyboardEvent(other), + os_event(other.os_event), + skip_in_browser(other.skip_in_browser) { } NativeWebKeyboardEvent& NativeWebKeyboardEvent::operator=( const NativeWebKeyboardEvent& other) { + WebKeyboardEvent::operator=(other); + + os_event = other.os_event; skip_in_browser = other.skip_in_browser; + return *this; } NativeWebKeyboardEvent::~NativeWebKeyboardEvent() { } - -#endif diff --git a/content/browser/renderer_host/native_web_keyboard_event_gtk.cc b/content/browser/renderer_host/native_web_keyboard_event_gtk.cc index 2c8570f..198d92c 100644 --- a/content/browser/renderer_host/native_web_keyboard_event_gtk.cc +++ b/content/browser/renderer_host/native_web_keyboard_event_gtk.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,20 +12,13 @@ using WebKit::WebInputEventFactory; namespace { -void CopyEventTo(const GdkEventKey* in, GdkEventKey** out) { - if (in) { - *out = reinterpret_cast<GdkEventKey*>( - gdk_event_copy( - reinterpret_cast<GdkEvent*>(const_cast<GdkEventKey*>(in)))); - } else { - *out = NULL; - } +void CopyEventTo(gfx::NativeEvent in, gfx::NativeEvent* out) { + *out = in ? gdk_event_copy(in) : NULL; } -void FreeEvent(GdkEventKey* event) { - if (event) { - gdk_event_free(reinterpret_cast<GdkEvent*>(event)); - } +void FreeEvent(gfx::NativeEvent event) { + if (event) + gdk_event_free(event); } } // namespace @@ -37,8 +30,8 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent() match_edit_command(false) { } -NativeWebKeyboardEvent::NativeWebKeyboardEvent(const GdkEventKey* native_event) - : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(native_event)), +NativeWebKeyboardEvent::NativeWebKeyboardEvent(gfx::NativeEvent native_event) + : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(&native_event->key)), skip_in_browser(false), match_edit_command(false) { CopyEventTo(native_event, &os_event); diff --git a/content/browser/renderer_host/native_web_keyboard_event_mac.mm b/content/browser/renderer_host/native_web_keyboard_event_mac.mm index 8db1353..17d7de8 100644 --- a/content/browser/renderer_host/native_web_keyboard_event_mac.mm +++ b/content/browser/renderer_host/native_web_keyboard_event_mac.mm @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,9 +15,9 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent() skip_in_browser(false) { } -NativeWebKeyboardEvent::NativeWebKeyboardEvent(NSEvent* event) - : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(event)), - os_event([event retain]), +NativeWebKeyboardEvent::NativeWebKeyboardEvent(gfx::NativeEvent native_event) + : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(native_event)), + os_event([native_event retain]), skip_in_browser(false) { } diff --git a/content/browser/renderer_host/native_web_keyboard_event_win.cc b/content/browser/renderer_host/native_web_keyboard_event_win.cc index c913d26..d72bb52 100644 --- a/content/browser/renderer_host/native_web_keyboard_event_win.cc +++ b/content/browser/renderer_host/native_web_keyboard_event_win.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -14,36 +14,28 @@ NativeWebKeyboardEvent::NativeWebKeyboardEvent() memset(&os_event, 0, sizeof(os_event)); } -NativeWebKeyboardEvent::NativeWebKeyboardEvent( - HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) +NativeWebKeyboardEvent::NativeWebKeyboardEvent(gfx::NativeEvent native_event) : WebKeyboardEvent( - WebInputEventFactory::keyboardEvent(hwnd, message, wparam, lparam)), + WebInputEventFactory::keyboardEvent(native_event.hwnd, + native_event.message, + native_event.wParam, + native_event.lParam)), + os_event(native_event), skip_in_browser(false) { - os_event.hwnd = hwnd; - os_event.message = message; - os_event.wParam = wparam; - os_event.lParam = lparam; } NativeWebKeyboardEvent::NativeWebKeyboardEvent( const NativeWebKeyboardEvent& other) : WebKeyboardEvent(other), + os_event(other.os_event), skip_in_browser(other.skip_in_browser) { - os_event.hwnd = other.os_event.hwnd; - os_event.message = other.os_event.message; - os_event.wParam = other.os_event.wParam; - os_event.lParam = other.os_event.lParam; } NativeWebKeyboardEvent& NativeWebKeyboardEvent::operator=( const NativeWebKeyboardEvent& other) { WebKeyboardEvent::operator=(other); - os_event.hwnd = other.os_event.hwnd; - os_event.message = other.os_event.message; - os_event.wParam = other.os_event.wParam; - os_event.lParam = other.os_event.lParam; - + os_event = other.os_event; skip_in_browser = other.skip_in_browser; return *this; diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index 8149ba2..7f1014b 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -6,6 +6,7 @@ #include "base/logging.h" #include "content/browser/renderer_host/backing_store_skia.h" +#include "content/browser/renderer_host/web_input_event_aura.h" #include "content/browser/renderer_host/render_widget_host.h" #include "content/public/browser/native_web_keyboard_event.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" @@ -301,15 +302,8 @@ void RenderWidgetHostViewAura::OnBlur() { } bool RenderWidgetHostViewAura::OnKeyEvent(aura::KeyEvent* event) { - host_->ForwardKeyboardEvent( - NativeWebKeyboardEvent( -#if defined(OS_WIN) - event->native_event().hwnd, - event->native_event().message, - event->native_event().wParam, - event->native_event().lParam -#endif - )); + NativeWebKeyboardEvent webkit_event(event); + host_->ForwardKeyboardEvent(webkit_event); return true; } @@ -325,38 +319,7 @@ int RenderWidgetHostViewAura::GetNonClientComponent( } bool RenderWidgetHostViewAura::OnMouseEvent(aura::MouseEvent* event) { - // TODO(beng): replace with construction using WebInputEventFactories for - // Windows/X using |event|'s native_event() field. - - WebKit::WebMouseEvent webkit_event; - webkit_event.timeStampSeconds = base::Time::Now().ToDoubleT(); - webkit_event.modifiers = WebInputEventFlagsFromAuraEvent(*event); - webkit_event.windowX = webkit_event.x = event->x(); - webkit_event.windowY = webkit_event.y = event->y(); - - webkit_event.globalX = webkit_event.x; - webkit_event.globalY = webkit_event.y; - - if (event->type() == ui::ET_MOUSE_PRESSED || - event->type() == ui::ET_MOUSE_RELEASED) { - webkit_event.clickCount = 1; - } - - if (event->flags() & ui::EF_MIDDLE_BUTTON_DOWN) { - webkit_event.modifiers |= WebKit::WebInputEvent::MiddleButtonDown; - webkit_event.button = WebKit::WebMouseEvent::ButtonMiddle; - } - if (event->flags() & ui::EF_LEFT_BUTTON_DOWN) { - webkit_event.modifiers |= WebKit::WebInputEvent::LeftButtonDown; - webkit_event.button = WebKit::WebMouseEvent::ButtonLeft; - } - if (event->flags() & ui::EF_RIGHT_BUTTON_DOWN) { - webkit_event.modifiers |= WebKit::WebInputEvent::RightButtonDown; - webkit_event.button = WebKit::WebMouseEvent::ButtonRight; - } - - webkit_event.type = WebInputEventTypeFromAuraEvent(*event); - host_->ForwardMouseEvent(webkit_event); + host_->ForwardMouseEvent(content::MakeWebMouseEvent(event)); // Return true so that we receive released/drag events. return true; diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc index 056354d..b33bcde 100644 --- a/content/browser/renderer_host/render_widget_host_view_win.cc +++ b/content/browser/renderer_host/render_widget_host_view_win.cc @@ -1378,8 +1378,8 @@ LRESULT RenderWidgetHostViewWin::OnKeyEvent(UINT message, WPARAM wparam, } if (render_widget_host_ && !ignore_keyboard_event) { - render_widget_host_->ForwardKeyboardEvent( - NativeWebKeyboardEvent(m_hWnd, message, wparam, lparam)); + MSG msg = { m_hWnd, message, wparam, lparam }; + render_widget_host_->ForwardKeyboardEvent(NativeWebKeyboardEvent(msg)); } return 0; } diff --git a/content/content_browser.gypi b/content/content_browser.gypi index 5977a39..e6975eb 100644 --- a/content/content_browser.gypi +++ b/content/content_browser.gypi @@ -375,6 +375,7 @@ 'browser/renderer_host/pepper_message_filter.h', 'browser/renderer_host/quota_dispatcher_host.cc', 'browser/renderer_host/quota_dispatcher_host.h', + 'browser/renderer_host/native_web_keyboard_event_aura.cc', 'browser/renderer_host/native_web_keyboard_event_gtk.cc', 'browser/renderer_host/native_web_keyboard_event_mac.mm', 'browser/renderer_host/native_web_keyboard_event_win.cc', @@ -673,6 +674,7 @@ ['exclude', '^browser/accessibility/browser_accessibility_win.h'], ['exclude', '^browser/renderer_host/gtk_im_context_wrapper.cc'], ['exclude', '^browser/renderer_host/gtk_im_context_wrapper.h'], + ['exclude', '^browser/renderer_host/native_web_keyboard_event_win.cc'], ['exclude', '^browser/renderer_host/render_widget_host.h'], ['exclude', '^browser/renderer_host/render_widget_host_view_win.cc'], ['exclude', '^browser/renderer_host/render_widget_host_view_win.h'], diff --git a/content/public/browser/native_web_keyboard_event.h b/content/public/browser/native_web_keyboard_event.h index 6f5e5ac..35cc052 100644 --- a/content/public/browser/native_web_keyboard_event.h +++ b/content/public/browser/native_web_keyboard_event.h @@ -11,18 +11,7 @@ #include "build/build_config.h" #include "content/common/content_export.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" - -#if defined(OS_WIN) -#include <windows.h> -#elif defined(OS_MACOSX) -#ifdef __OBJC__ -@class NSEvent; -#else -class NSEvent; -#endif // __OBJC__ -#elif defined(OS_POSIX) -typedef struct _GdkEventKey GdkEventKey; -#endif +#include "ui/gfx/native_widget_types.h" // Owns a platform specific event; used to pass own and pass event through // platform independent code. @@ -30,19 +19,12 @@ struct CONTENT_EXPORT NativeWebKeyboardEvent : NON_EXPORTED_BASE(public WebKit::WebKeyboardEvent) { NativeWebKeyboardEvent(); -#if defined(OS_WIN) - NativeWebKeyboardEvent(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); -#elif defined(OS_MACOSX) - explicit NativeWebKeyboardEvent(NSEvent *event); - NativeWebKeyboardEvent(wchar_t character, - int state, - double time_stamp_seconds); -#elif defined(TOOLKIT_USES_GTK) + explicit NativeWebKeyboardEvent(gfx::NativeEvent native_event); +#if defined(OS_MACOSX) || defined(TOOLKIT_USES_GTK) // TODO(suzhe): Limit these constructors to Linux native Gtk port. // For Linux Views port, after using RenderWidgetHostViewViews to replace // RenderWidgetHostViewGtk, we can use constructors for TOOLKIT_VIEWS defined // below. - explicit NativeWebKeyboardEvent(const GdkEventKey* event); NativeWebKeyboardEvent(wchar_t character, int state, double time_stamp_seconds); @@ -53,13 +35,7 @@ struct CONTENT_EXPORT NativeWebKeyboardEvent : NativeWebKeyboardEvent& operator=(const NativeWebKeyboardEvent& event); -#if defined(OS_WIN) - MSG os_event; -#elif defined(OS_MACOSX) - NSEvent* os_event; -#elif defined(TOOLKIT_USES_GTK) - GdkEventKey* os_event; -#endif + gfx::NativeEvent os_event; // True if the browser should ignore this event if it's not handled by the // renderer. This happens for RawKeyDown events that are created while IME is diff --git a/content/test/render_view_test.cc b/content/test/render_view_test.cc index e47dcaf..5ac9ff1 100644 --- a/content/test/render_view_test.cc +++ b/content/test/render_view_test.cc @@ -179,13 +179,16 @@ int RenderViewTest::SendKeyEvent(MockKeyboard::Layout layout, // WM_KEYDOWN, WM_CHAR, and WM_KEYUP. // WM_KEYDOWN and WM_KEYUP sends virtual-key codes. On the other hand, // WM_CHAR sends a composed Unicode character. - NativeWebKeyboardEvent keydown_event(NULL, WM_KEYDOWN, key_code, 0); + MSG msg1 = { NULL, WM_KEYDOWN, key_code, 0 }; + NativeWebKeyboardEvent keydown_event(msg1); SendNativeKeyEvent(keydown_event); - NativeWebKeyboardEvent char_event(NULL, WM_CHAR, (*output)[0], 0); + MSG msg2 = { NULL, WM_CHAR, (*output)[0], 0 }; + NativeWebKeyboardEvent char_event(msg2); SendNativeKeyEvent(char_event); - NativeWebKeyboardEvent keyup_event(NULL, WM_KEYUP, key_code, 0); + MSG msg3 = { NULL, WM_KEYUP, key_code, 0 }; + NativeWebKeyboardEvent keyup_event(msg3); SendNativeKeyEvent(keyup_event); return length; @@ -206,7 +209,7 @@ int RenderViewTest::SendKeyEvent(MockKeyboard::Layout layout, // events for the modifier keys). if ((i + 1) == (events.size() / 2) || i == (events.size() / 2)) { unicode_key = gdk_keyval_to_unicode(events[i]->key.keyval); - NativeWebKeyboardEvent webkit_event(&events[i]->key); + NativeWebKeyboardEvent webkit_event(events[i]); SendNativeKeyEvent(webkit_event); // Need to add a char event after the key down. diff --git a/ui/gfx/native_widget_types.h b/ui/gfx/native_widget_types.h index a932309..3c4680d 100644 --- a/ui/gfx/native_widget_types.h +++ b/ui/gfx/native_widget_types.h @@ -39,6 +39,7 @@ #if defined(USE_AURA) class SkRegion; namespace aura { +class Event; class Window; } #endif // defined(USE_AURA) @@ -50,12 +51,14 @@ struct IAccessible; #elif defined(OS_MACOSX) struct CGContext; #ifdef __OBJC__ +@class NSEvent; @class NSFont; @class NSImage; @class NSView; @class NSWindow; @class NSTextField; #else +class NSEvent; class NSFont; class NSImage; class NSView; @@ -79,6 +82,7 @@ class WaylandCursor; typedef struct _GdkRegion GdkRegion; #elif defined(TOOLKIT_USES_GTK) typedef struct _GdkCursor GdkCursor; +typedef union _GdkEvent GdkEvent; typedef struct _GdkPixbuf GdkPixbuf; typedef struct _GdkRegion GdkRegion; typedef struct _GtkWidget GtkWidget; @@ -96,15 +100,18 @@ typedef int NativeCursor; typedef aura::Window* NativeView; typedef aura::Window* NativeWindow; typedef SkRegion* NativeRegion; +typedef aura::Event* NativeEvent; #elif defined(OS_WIN) typedef HCURSOR NativeCursor; typedef HWND NativeView; typedef HWND NativeWindow; typedef HRGN NativeRegion; +typedef MSG NativeEvent; #elif defined(OS_MACOSX) typedef void* NativeCursor; typedef NSView* NativeView; typedef NSWindow* NativeWindow; +typedef NSEvent* NativeEvent; #elif defined(USE_WAYLAND) typedef void* NativeCursor; typedef ui::WaylandWindow* NativeView; @@ -112,16 +119,19 @@ typedef ui::WaylandWindow* NativeWindow; // TODO(dnicoara) This should be replaced with a cairo region or maybe // a Wayland specific region typedef GdkRegion* NativeRegion; -#elif defined(USE_X11) +typedef void* NativeEvent; +#elif defined(TOOLKIT_USES_GTK) typedef GdkCursor* NativeCursor; typedef GtkWidget* NativeView; typedef GtkWindow* NativeWindow; typedef GdkRegion* NativeRegion; +typedef GdkEvent* NativeEvent; #elif defined(OS_ANDROID) typedef void* NativeCursor; typedef ChromeView* NativeView; typedef ChromeView* NativeWindow; typedef void* NativeRegion; +typedef void* NativeEvent; #endif #if defined(OS_WIN) |