summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-27 18:09:06 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-27 18:09:06 +0000
commit666900e16050b1469e1e21376a5e0cae6d668945 (patch)
tree877ba3b0ea379fff655c1203fbaf75aada5603fc /chrome
parente1249b3fb4d47da09a36469bbe9c9fc94250d042 (diff)
downloadchromium_src-666900e16050b1469e1e21376a5e0cae6d668945.zip
chromium_src-666900e16050b1469e1e21376a5e0cae6d668945.tar.gz
chromium_src-666900e16050b1469e1e21376a5e0cae6d668945.tar.bz2
Move native_web_keyboard_event_views.cc to chrome, so that we don't have any views code in content. Although this is now away from the other NativeWebKeyboardEvent implementations, it's at least in the same module as the rest of the views related implementations like RenderWidgetHostViewViews and TabContentViewViews which use it.
Review URL: http://codereview.chromium.org/7766012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98570 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_views.cc12
-rw-r--r--chrome/chrome_common.gypi6
-rw-r--r--chrome/common/native_web_keyboard_event_views.cc91
-rw-r--r--chrome/common/native_web_keyboard_event_views.h33
4 files changed, 136 insertions, 6 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host_view_views.cc b/chrome/browser/renderer_host/render_widget_host_view_views.cc
index 9b6a7af..53f1aed 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_views.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_views.cc
@@ -14,10 +14,10 @@
#include "base/task.h"
#include "base/time.h"
#include "base/utf_string_conversions.h"
+#include "chrome/common/native_web_keyboard_event_views.h"
#include "chrome/common/render_messages.h"
#include "content/browser/renderer_host/backing_store_skia.h"
#include "content/browser/renderer_host/render_widget_host.h"
-#include "content/common/native_web_keyboard_event.h"
#include "content/common/result_codes.h"
#include "content/common/view_messages.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
@@ -488,14 +488,14 @@ bool RenderWidgetHostViewViews::OnKeyPressed(const views::KeyEvent& event) {
// TODO(suzhe): Support editor key bindings.
if (!host_)
return false;
- host_->ForwardKeyboardEvent(NativeWebKeyboardEvent(event));
+ host_->ForwardKeyboardEvent(NativeWebKeyboardEventViews(event));
return true;
}
bool RenderWidgetHostViewViews::OnKeyReleased(const views::KeyEvent& event) {
if (!host_)
return false;
- host_->ForwardKeyboardEvent(NativeWebKeyboardEvent(event));
+ host_->ForwardKeyboardEvent(NativeWebKeyboardEventViews(event));
return true;
}
@@ -578,9 +578,9 @@ void RenderWidgetHostViewViews::InsertText(const string16& text) {
void RenderWidgetHostViewViews::InsertChar(char16 ch, int flags) {
if (host_) {
- NativeWebKeyboardEvent::FromViewsEvent from_views_event;
- NativeWebKeyboardEvent wke(ch, flags, base::Time::Now().ToDoubleT(),
- from_views_event);
+ NativeWebKeyboardEventViews::FromViewsEvent from_views_event;
+ NativeWebKeyboardEventViews wke(ch, flags, base::Time::Now().ToDoubleT(),
+ from_views_event);
host_->ForwardKeyboardEvent(wke);
}
}
diff --git a/chrome/chrome_common.gypi b/chrome/chrome_common.gypi
index f1553a3..a5110d6 100644
--- a/chrome/chrome_common.gypi
+++ b/chrome/chrome_common.gypi
@@ -265,6 +265,12 @@
],
},
},],
+ ['toolkit_views==1', {
+ 'sources': [
+ 'common/native_web_keyboard_event_views.cc',
+ 'common/native_web_keyboard_event_views.h',
+ ],
+ }],
['os_posix == 1 and OS != "mac"', {
'include_dirs': [
'<(SHARED_INTERMEDIATE_DIR)',
diff --git a/chrome/common/native_web_keyboard_event_views.cc b/chrome/common/native_web_keyboard_event_views.cc
new file mode 100644
index 0000000..21e23cd
--- /dev/null
+++ b/chrome/common/native_web_keyboard_event_views.cc
@@ -0,0 +1,91 @@
+// 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 "chrome/common/native_web_keyboard_event_views.h"
+
+#if defined(TOOLKIT_USES_GTK)
+#include <gdk/gdk.h>
+#endif
+
+#include "base/logging.h"
+#include "views/events/event.h"
+
+namespace {
+
+int ViewsFlagsToWebInputEventModifiers(int flags) {
+ return
+ (flags & ui::EF_SHIFT_DOWN ? WebKit::WebInputEvent::ShiftKey : 0) |
+ (flags & ui::EF_CONTROL_DOWN ? WebKit::WebInputEvent::ControlKey : 0) |
+ (flags & ui::EF_CAPS_LOCK_DOWN ? WebKit::WebInputEvent::CapsLockOn : 0) |
+ (flags & ui::EF_ALT_DOWN ? WebKit::WebInputEvent::AltKey : 0);
+}
+
+} // namespace
+
+NativeWebKeyboardEventViews::NativeWebKeyboardEventViews(
+ const views::KeyEvent& event) {
+ skip_in_browser = false;
+ DCHECK(event.type() == ui::ET_KEY_PRESSED ||
+ event.type() == ui::ET_KEY_RELEASED);
+
+ if (event.type() == ui::ET_KEY_PRESSED)
+ type = WebKit::WebInputEvent::RawKeyDown;
+ else
+ type = WebKit::WebInputEvent::KeyUp;
+
+ modifiers = ViewsFlagsToWebInputEventModifiers(event.flags());
+ timeStampSeconds = event.time_stamp().ToDoubleT();
+ windowsKeyCode = event.key_code();
+ nativeKeyCode = windowsKeyCode;
+ text[0] = event.GetCharacter();
+ unmodifiedText[0] = event.GetUnmodifiedCharacter();
+ setKeyIdentifierFromWindowsKeyCode();
+
+#if defined(OS_WIN)
+ // |os_event| is a MSG struct, so we can copy it directly.
+ os_event = event.native_event();
+#elif defined(TOOLKIT_USES_GTK)
+ if (event.native_event()) {
+ os_event =
+ reinterpret_cast<GdkEventKey*>(gdk_event_copy(event.native_event()));
+ nativeKeyCode = os_event->keyval;
+ } else {
+ os_event = NULL;
+ }
+#endif
+
+#if defined(TOOLKIT_USES_GTK)
+ match_edit_command = false;
+#endif
+}
+
+NativeWebKeyboardEventViews::NativeWebKeyboardEventViews(
+ uint16 character,
+ int flags,
+ double time_stamp_seconds,
+ FromViewsEvent) {
+ skip_in_browser = true;
+
+ type = WebKit::WebInputEvent::Char;
+ modifiers = ViewsFlagsToWebInputEventModifiers(flags);
+ timeStampSeconds = time_stamp_seconds;
+ windowsKeyCode = character;
+ nativeKeyCode = character;
+ text[0] = character;
+ unmodifiedText[0] = character;
+ isSystemKey = (flags & ui::EF_ALT_DOWN) != 0;
+
+#if defined(OS_WIN)
+ memset(&os_event, 0, sizeof(os_event));
+#elif defined(TOOLKIT_USES_GTK)
+ os_event = NULL;
+#endif
+
+#if defined(TOOLKIT_USES_GTK)
+ match_edit_command = false;
+#endif
+}
+
+NativeWebKeyboardEventViews::~NativeWebKeyboardEventViews() {
+}
diff --git a/chrome/common/native_web_keyboard_event_views.h b/chrome/common/native_web_keyboard_event_views.h
new file mode 100644
index 0000000..2c33511
--- /dev/null
+++ b/chrome/common/native_web_keyboard_event_views.h
@@ -0,0 +1,33 @@
+// 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.
+
+#ifndef CHROME_COMMON_NATIVE_WEB_KEYBOARD_EVENT_VIEWS_H_
+#define CHROME_COMMON_NATIVE_WEB_KEYBOARD_EVENT_VIEWS_H_
+#pragma once
+
+#include "content/common/native_web_keyboard_event.h"
+
+namespace views {
+class KeyEvent;
+}
+
+// A views implementation of NativeWebKeyboardEvent.
+struct NativeWebKeyboardEventViews : public NativeWebKeyboardEvent {
+ // TODO(suzhe): remove once we get rid of Gtk from Views.
+ struct FromViewsEvent {};
+ // These two constructors are shared between Windows and Linux Views ports.
+ explicit NativeWebKeyboardEventViews(const views::KeyEvent& event);
+ // TODO(suzhe): Sadly, we need to add a meanless FromViewsEvent parameter to
+ // distinguish between this contructor and above Gtk one, because they use
+ // different modifier flags. We can remove this extra parameter as soon as we
+ // disable above Gtk constructor in Linux Views port.
+ NativeWebKeyboardEventViews(uint16 character,
+ int flags,
+ double time_stamp_seconds,
+ FromViewsEvent);
+
+ ~NativeWebKeyboardEventViews();
+};
+
+#endif // CHROME_COMMON_NATIVE_WEB_KEYBOARD_EVENT_VIEWS_H_