summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorsatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-10 01:50:02 +0000
committersatish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-10 01:50:02 +0000
commit5e2cb7cd5a794974e8a59266cd25d090e002fcc5 (patch)
treecf3c254a900b36a1b040003c24f6ad51f5a5ebdc /content
parente7af1c094d8c9c202d751699f4382b90ee479f95 (diff)
downloadchromium_src-5e2cb7cd5a794974e8a59266cd25d090e002fcc5.zip
chromium_src-5e2cb7cd5a794974e8a59266cd25d090e002fcc5.tar.gz
chromium_src-5e2cb7cd5a794974e8a59266cd25d090e002fcc5.tar.bz2
Adds NativeWebKeyboardEvent for android along with associated types.
This is a step towards getting content_browsertests to link on android. BUG=None TEST= Review URL: http://codereview.chromium.org/9360030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121372 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/native_web_keyboard_event_android.cc73
-rw-r--r--content/content_browser.gypi1
-rw-r--r--content/public/browser/native_web_keyboard_event.h17
3 files changed, 90 insertions, 1 deletions
diff --git a/content/browser/renderer_host/native_web_keyboard_event_android.cc b/content/browser/renderer_host/native_web_keyboard_event_android.cc
new file mode 100644
index 0000000..2dfb7f2
--- /dev/null
+++ b/content/browser/renderer_host/native_web_keyboard_event_android.cc
@@ -0,0 +1,73 @@
+// Copyright (c) 2012 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 "base/android/jni_android.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/android/WebInputEventFactory.h"
+#include "ui/gfx/native_widget_types.h"
+
+using WebKit::WebInputEventFactory;
+
+namespace {
+
+jobject NewGlobalRefForKeyEvent(jobject key_event) {
+ if (key_event == NULL) return NULL;
+ return base::android::AttachCurrentThread()->NewGlobalRef(key_event);
+}
+
+void DeleteGlobalRefForKeyEvent(jobject key_event) {
+ if (key_event != NULL)
+ base::android::AttachCurrentThread()->DeleteGlobalRef(key_event);
+}
+
+}
+
+NativeWebKeyboardEvent::NativeWebKeyboardEvent()
+ : os_event(NULL),
+ skip_in_browser(false) {
+}
+
+NativeWebKeyboardEvent::NativeWebKeyboardEvent(
+ WebKit::WebInputEvent::Type type,
+ int modifiers, double time_secs, int keycode, int unicode_character,
+ bool is_system_key)
+ : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(
+ type, modifiers, time_secs, keycode, unicode_character,
+ is_system_key)) {
+ os_event = NULL;
+ skip_in_browser = false;
+}
+
+NativeWebKeyboardEvent::NativeWebKeyboardEvent(
+ jobject android_key_event, WebKit::WebInputEvent::Type type,
+ int modifiers, double time_secs, int keycode, int unicode_character,
+ bool is_system_key)
+ : WebKeyboardEvent(WebInputEventFactory::keyboardEvent(
+ type, modifiers, time_secs, keycode, unicode_character,
+ is_system_key)) {
+ os_event = NewGlobalRefForKeyEvent(android_key_event);
+ skip_in_browser = false;
+}
+
+NativeWebKeyboardEvent::NativeWebKeyboardEvent(
+ const NativeWebKeyboardEvent& other)
+ : WebKeyboardEvent(other),
+ os_event(NewGlobalRefForKeyEvent(other.os_event)),
+ skip_in_browser(other.skip_in_browser) {
+}
+
+NativeWebKeyboardEvent& NativeWebKeyboardEvent::operator=(
+ const NativeWebKeyboardEvent& other) {
+ WebKeyboardEvent::operator=(other);
+
+ os_event = NewGlobalRefForKeyEvent(other.os_event);
+ skip_in_browser = other.skip_in_browser;
+
+ return *this;
+}
+
+NativeWebKeyboardEvent::~NativeWebKeyboardEvent() {
+ DeleteGlobalRefForKeyEvent(os_event);
+}
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 49e46af..fa2aa26 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -497,6 +497,7 @@
'browser/renderer_host/media/video_capture_host.h',
'browser/renderer_host/media/video_capture_manager.cc',
'browser/renderer_host/media/video_capture_manager.h',
+ 'browser/renderer_host/native_web_keyboard_event_android.cc',
'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',
diff --git a/content/public/browser/native_web_keyboard_event.h b/content/public/browser/native_web_keyboard_event.h
index 41926d3..4cb2c67 100644
--- a/content/public/browser/native_web_keyboard_event.h
+++ b/content/public/browser/native_web_keyboard_event.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -35,6 +35,21 @@ struct CONTENT_EXPORT NativeWebKeyboardEvent :
NativeWebKeyboardEvent(wchar_t character,
int state,
double time_stamp_seconds);
+#elif defined(OS_ANDROID)
+ NativeWebKeyboardEvent(WebKit::WebInputEvent::Type type,
+ int modifiers,
+ double time_secs,
+ int keycode,
+ int unicode_character,
+ bool is_system_key);
+ // Takes ownership of android_key_event.
+ NativeWebKeyboardEvent(jobject android_key_event,
+ WebKit::WebInputEvent::Type type,
+ int modifiers,
+ double time_secs,
+ int keycode,
+ int unicode_character,
+ bool is_system_key);
#endif
NativeWebKeyboardEvent(const NativeWebKeyboardEvent& event);