diff options
author | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-10 01:50:02 +0000 |
---|---|---|
committer | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-10 01:50:02 +0000 |
commit | 5e2cb7cd5a794974e8a59266cd25d090e002fcc5 (patch) | |
tree | cf3c254a900b36a1b040003c24f6ad51f5a5ebdc /content | |
parent | e7af1c094d8c9c202d751699f4382b90ee479f95 (diff) | |
download | chromium_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.cc | 73 | ||||
-rw-r--r-- | content/content_browser.gypi | 1 | ||||
-rw-r--r-- | content/public/browser/native_web_keyboard_event.h | 17 |
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); |