summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authortiago.vignatti@intel.com <tiago.vignatti@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-13 16:23:33 +0000
committertiago.vignatti@intel.com <tiago.vignatti@intel.com@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-13 16:23:33 +0000
commit3c783fdefcb9dee6c734c35f4568c07f044fce1c (patch)
tree76dd1d11ed67920a07b1d60d36cfb371bebda3a4 /content
parent38ef5018776ab633f1b2fcafaf456b453a6be8f6 (diff)
downloadchromium_src-3c783fdefcb9dee6c734c35f4568c07f044fce1c.zip
chromium_src-3c783fdefcb9dee6c734c35f4568c07f044fce1c.tar.gz
chromium_src-3c783fdefcb9dee6c734c35f4568c07f044fce1c.tar.bz2
Implement fake input method key event conversion from pure Aura to Webkit.
In particular, this patch adds Ozone support using the "pure" event type (ui::Event) conversion. BUG=none Review URL: https://chromiumcodereview.appspot.com/22381004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223055 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/web_input_event_aura.cc142
-rw-r--r--content/browser/renderer_host/web_input_event_aura.h4
-rw-r--r--content/browser/renderer_host/web_input_event_aurax11.cc98
3 files changed, 136 insertions, 108 deletions
diff --git a/content/browser/renderer_host/web_input_event_aura.cc b/content/browser/renderer_host/web_input_event_aura.cc
index 8931f1f..832a108 100644
--- a/content/browser/renderer_host/web_input_event_aura.cc
+++ b/content/browser/renderer_host/web_input_event_aura.cc
@@ -11,6 +11,52 @@
namespace content {
+#if defined(USE_X11) || defined(USE_OZONE)
+// From third_party/WebKit/Source/web/gtk/WebInputEventFactory.cpp:
+WebKit::WebUChar GetControlCharacter(int windows_key_code, bool shift) {
+ if (windows_key_code >= ui::VKEY_A &&
+ windows_key_code <= ui::VKEY_Z) {
+ // ctrl-A ~ ctrl-Z map to \x01 ~ \x1A
+ return windows_key_code - ui::VKEY_A + 1;
+ }
+ if (shift) {
+ // following graphics chars require shift key to input.
+ switch (windows_key_code) {
+ // ctrl-@ maps to \x00 (Null byte)
+ case ui::VKEY_2:
+ return 0;
+ // ctrl-^ maps to \x1E (Record separator, Information separator two)
+ case ui::VKEY_6:
+ return 0x1E;
+ // ctrl-_ maps to \x1F (Unit separator, Information separator one)
+ case ui::VKEY_OEM_MINUS:
+ return 0x1F;
+ // Returns 0 for all other keys to avoid inputting unexpected chars.
+ default:
+ break;
+ }
+ } else {
+ switch (windows_key_code) {
+ // ctrl-[ maps to \x1B (Escape)
+ case ui::VKEY_OEM_4:
+ return 0x1B;
+ // ctrl-\ maps to \x1C (File separator, Information separator four)
+ case ui::VKEY_OEM_5:
+ return 0x1C;
+ // ctrl-] maps to \x1D (Group separator, Information separator three)
+ case ui::VKEY_OEM_6:
+ return 0x1D;
+ // ctrl-Enter maps to \x0A (Line feed)
+ case ui::VKEY_RETURN:
+ return 0x0A;
+ // Returns 0 for all other keys to avoid inputting unexpected chars.
+ default:
+ break;
+ }
+ }
+ return 0;
+}
+#endif
#if defined(OS_WIN)
WebKit::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent(
base::NativeEvent native_event);
@@ -21,28 +67,104 @@ WebKit::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent(
WebKit::WebGestureEvent MakeWebGestureEventFromNativeEvent(
base::NativeEvent native_event);
#elif defined(USE_X11)
-WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
- ui::ScrollEvent* event);
WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
ui::KeyEvent* event);
-WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent(
- ui::ScrollEvent* event);
-#else
+#elif defined(USE_OZONE)
+WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
+ ui::KeyEvent* event) {
+ base::NativeEvent native_event = event->native_event();
+ ui::EventType type = ui::EventTypeFromNative(native_event);
+ WebKit::WebKeyboardEvent webkit_event;
+
+ webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
+ webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
+
+ switch (type) {
+ case ui::ET_KEY_PRESSED:
+ webkit_event.type = event->is_char() ? WebKit::WebInputEvent::Char :
+ WebKit::WebInputEvent::RawKeyDown;
+ break;
+ case ui::ET_KEY_RELEASED:
+ webkit_event.type = WebKit::WebInputEvent::KeyUp;
+ break;
+ default:
+ NOTREACHED();
+ }
+
+ if (webkit_event.modifiers & WebKit::WebInputEvent::AltKey)
+ webkit_event.isSystemKey = true;
+
+ wchar_t character = ui::KeyboardCodeFromNative(native_event);
+ webkit_event.windowsKeyCode = character;
+ webkit_event.nativeKeyCode = character;
+
+ if (webkit_event.windowsKeyCode == ui::VKEY_RETURN)
+ webkit_event.unmodifiedText[0] = '\r';
+ else
+ webkit_event.unmodifiedText[0] = character;
+
+ if (webkit_event.modifiers & WebKit::WebInputEvent::ControlKey) {
+ webkit_event.text[0] =
+ GetControlCharacter(
+ webkit_event.windowsKeyCode,
+ webkit_event.modifiers & WebKit::WebInputEvent::ShiftKey);
+ } else {
+ webkit_event.text[0] = webkit_event.unmodifiedText[0];
+ }
+
+ webkit_event.setKeyIdentifierFromWindowsKeyCode();
+
+ return webkit_event;
+}
+#endif
+#if defined(USE_X11) || defined(USE_OZONE)
WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
ui::ScrollEvent* event) {
WebKit::WebMouseWheelEvent webkit_event;
- return webkit_event;
-}
-WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
- ui::KeyEvent* event) {
- WebKit::WebKeyboardEvent webkit_event;
+ webkit_event.type = WebKit::WebInputEvent::MouseWheel;
+ webkit_event.button = WebKit::WebMouseEvent::ButtonNone;
+ webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
+ webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
+ webkit_event.hasPreciseScrollingDeltas = true;
+ webkit_event.deltaX = event->x_offset();
+ if (event->x_offset_ordinal() != 0.f && event->x_offset() != 0.f) {
+ webkit_event.accelerationRatioX =
+ event->x_offset_ordinal() / event->x_offset();
+ }
+ webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick;
+ webkit_event.deltaY = event->y_offset();
+ webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
+ if (event->y_offset_ordinal() != 0.f && event->y_offset() != 0.f) {
+ webkit_event.accelerationRatioY =
+ event->y_offset_ordinal() / event->y_offset();
+ }
return webkit_event;
}
WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent(
ui::ScrollEvent* event) {
WebKit::WebGestureEvent webkit_event;
+
+ switch (event->type()) {
+ case ui::ET_SCROLL_FLING_START:
+ webkit_event.type = WebKit::WebInputEvent::GestureFlingStart;
+ webkit_event.data.flingStart.velocityX = event->x_offset();
+ webkit_event.data.flingStart.velocityY = event->y_offset();
+ break;
+ case ui::ET_SCROLL_FLING_CANCEL:
+ webkit_event.type = WebKit::WebInputEvent::GestureFlingCancel;
+ break;
+ case ui::ET_SCROLL:
+ NOTREACHED() << "Invalid gesture type: " << event->type();
+ break;
+ default:
+ NOTREACHED() << "Unknown gesture type: " << event->type();
+ }
+
+ webkit_event.sourceDevice = WebKit::WebGestureEvent::Touchpad;
+ webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
+ webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
return webkit_event;
}
diff --git a/content/browser/renderer_host/web_input_event_aura.h b/content/browser/renderer_host/web_input_event_aura.h
index ddc59e0..3c4c894 100644
--- a/content/browser/renderer_host/web_input_event_aura.h
+++ b/content/browser/renderer_host/web_input_event_aura.h
@@ -22,6 +22,10 @@ namespace content {
// Used for scrolling. This matches Firefox behavior.
const int kPixelsPerTick = 53;
+#if defined(USE_X11) || defined(USE_OZONE)
+CONTENT_EXPORT WebKit::WebUChar GetControlCharacter(
+ int windows_key_code, bool shift);
+#endif
CONTENT_EXPORT WebKit::WebMouseEvent MakeWebMouseEvent(
ui::MouseEvent* event);
CONTENT_EXPORT WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(
diff --git a/content/browser/renderer_host/web_input_event_aurax11.cc b/content/browser/renderer_host/web_input_event_aurax11.cc
index fdde17e..d892c44 100644
--- a/content/browser/renderer_host/web_input_event_aurax11.cc
+++ b/content/browser/renderer_host/web_input_event_aurax11.cc
@@ -87,106 +87,8 @@ int XKeyEventToWindowsKeyCode(XKeyEvent* event) {
return windows_key_code;
}
-// From third_party/WebKit/Source/web/gtk/WebInputEventFactory.cpp:
-WebKit::WebUChar GetControlCharacter(int windows_key_code, bool shift) {
- if (windows_key_code >= ui::VKEY_A &&
- windows_key_code <= ui::VKEY_Z) {
- // ctrl-A ~ ctrl-Z map to \x01 ~ \x1A
- return windows_key_code - ui::VKEY_A + 1;
- }
- if (shift) {
- // following graphics chars require shift key to input.
- switch (windows_key_code) {
- // ctrl-@ maps to \x00 (Null byte)
- case ui::VKEY_2:
- return 0;
- // ctrl-^ maps to \x1E (Record separator, Information separator two)
- case ui::VKEY_6:
- return 0x1E;
- // ctrl-_ maps to \x1F (Unit separator, Information separator one)
- case ui::VKEY_OEM_MINUS:
- return 0x1F;
- // Returns 0 for all other keys to avoid inputting unexpected chars.
- default:
- break;
- }
- } else {
- switch (windows_key_code) {
- // ctrl-[ maps to \x1B (Escape)
- case ui::VKEY_OEM_4:
- return 0x1B;
- // ctrl-\ maps to \x1C (File separator, Information separator four)
- case ui::VKEY_OEM_5:
- return 0x1C;
- // ctrl-] maps to \x1D (Group separator, Information separator three)
- case ui::VKEY_OEM_6:
- return 0x1D;
- // ctrl-Enter maps to \x0A (Line feed)
- case ui::VKEY_RETURN:
- return 0x0A;
- // Returns 0 for all other keys to avoid inputting unexpected chars.
- default:
- break;
- }
- }
- return 0;
-}
-
} // namespace
-WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent(
- ui::ScrollEvent* event) {
- WebKit::WebMouseWheelEvent webkit_event;
-
- webkit_event.type = WebKit::WebInputEvent::MouseWheel;
- webkit_event.button = WebKit::WebMouseEvent::ButtonNone;
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
- webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
- webkit_event.hasPreciseScrollingDeltas = true;
- webkit_event.deltaX = event->x_offset();
- if (event->x_offset_ordinal() != 0.f && event->x_offset() != 0.f) {
- webkit_event.accelerationRatioX =
- event->x_offset_ordinal() / event->x_offset();
- }
- webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick;
- webkit_event.deltaY = event->y_offset();
- webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
- if (event->y_offset_ordinal() != 0.f && event->y_offset() != 0.f) {
- webkit_event.accelerationRatioY =
- event->y_offset_ordinal() / event->y_offset();
- }
-
- return webkit_event;
-}
-
-// NOTE: ui::ScrollEvent instances come from the touchpad.
-WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent(
- ui::ScrollEvent* event) {
- WebKit::WebGestureEvent webkit_event;
-
- switch (event->type()) {
- case ui::ET_SCROLL_FLING_START:
- webkit_event.type = WebKit::WebInputEvent::GestureFlingStart;
- webkit_event.data.flingStart.velocityX = event->x_offset();
- webkit_event.data.flingStart.velocityY = event->y_offset();
- break;
- case ui::ET_SCROLL_FLING_CANCEL:
- webkit_event.type = WebKit::WebInputEvent::GestureFlingCancel;
- break;
- case ui::ET_SCROLL:
- NOTREACHED() << "Invalid gesture type: " << event->type();
- break;
- default:
- NOTREACHED() << "Unknown gesture type: " << event->type();
- }
-
- webkit_event.sourceDevice = WebKit::WebGestureEvent::Touchpad;
- webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
- webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
-
- return webkit_event;
-}
-
WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent(
ui::KeyEvent* event) {
base::NativeEvent native_event = event->native_event();