summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-18 21:29:00 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-18 21:29:00 +0000
commit0b5781a63246fb4abf31f871b445a6d85970b19f (patch)
tree9a60d5eaa75093e26b73ac162dd14b6399c0e473
parent836c4164547c4c2fcb863f74126c47befbeac767 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/external_tab_container_win.cc3
-rw-r--r--chrome/browser/ui/gtk/browser_window_gtk.cc4
-rw-r--r--chrome/browser/ui/gtk/find_bar_gtk.cc2
-rw-r--r--chrome/browser/ui/gtk/html_dialog_gtk.cc2
-rw-r--r--chrome/browser/ui/views/dropdown_bar_host_gtk.cc2
-rw-r--r--chrome/browser/ui/views/dropdown_bar_host_win.cc3
-rw-r--r--chrome/browser/ui/views/unhandled_keyboard_event_handler.cc2
-rw-r--r--chrome/chrome_common.gypi3
-rw-r--r--chrome/common/native_web_keyboard_event_views.cc5
-rw-r--r--content/browser/renderer_host/gtk_im_context_wrapper.cc2
-rw-r--r--content/browser/renderer_host/gtk_key_bindings_handler.cc2
-rw-r--r--content/browser/renderer_host/gtk_key_bindings_handler_unittest.cc2
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event_aura.cc (renamed from chrome/common/native_web_keyboard_event_aura.cc)24
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event_gtk.cc23
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event_mac.mm8
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event_win.cc26
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.cc45
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc4
-rw-r--r--content/content_browser.gypi2
-rw-r--r--content/public/browser/native_web_keyboard_event.h32
-rw-r--r--content/test/render_view_test.cc11
-rw-r--r--ui/gfx/native_widget_types.h12
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)