summaryrefslogtreecommitdiffstats
path: root/content
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 /content
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
Diffstat (limited to 'content')
-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.cc41
-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
12 files changed, 84 insertions, 114 deletions
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/content/browser/renderer_host/native_web_keyboard_event_aura.cc b/content/browser/renderer_host/native_web_keyboard_event_aura.cc
new file mode 100644
index 0000000..fa3d0d6
--- /dev/null
+++ b/content/browser/renderer_host/native_web_keyboard_event_aura.cc
@@ -0,0 +1,41 @@
+// 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.
+
+#include "content/public/browser/native_web_keyboard_event.h"
+
+#include "content/browser/renderer_host/web_input_event_aura.h"
+
+using WebKit::WebKeyboardEvent;
+
+NativeWebKeyboardEvent::NativeWebKeyboardEvent()
+ : 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)
+ : 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() {
+}
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.