| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/renderer_host/web_input_event_aura.h" | 5 #include "content/browser/renderer_host/web_input_event_aura.h" |
| 6 | 6 |
| 7 #include "content/browser/renderer_host/ui_events_helper.h" | 7 #include "content/browser/renderer_host/ui_events_helper.h" |
| 8 #include "ui/aura/window.h" | 8 #include "ui/aura/window.h" |
| 9 #include "ui/events/event.h" | 9 #include "ui/events/event.h" |
| 10 #include "ui/events/event_utils.h" | 10 #include "ui/events/event_utils.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 #endif | 63 #endif |
| 64 #if defined(OS_WIN) | 64 #if defined(OS_WIN) |
| 65 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( | 65 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( |
| 66 const base::NativeEvent& native_event); | 66 const base::NativeEvent& native_event); |
| 67 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( | 67 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( |
| 68 const base::NativeEvent& native_event); | 68 const base::NativeEvent& native_event); |
| 69 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( | 69 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( |
| 70 const base::NativeEvent& native_event); | 70 const base::NativeEvent& native_event); |
| 71 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent( | 71 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent( |
| 72 const base::NativeEvent& native_event); | 72 const base::NativeEvent& native_event); |
| 73 #elif defined(USE_X11) | 73 #endif |
| 74 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( | 74 #if defined(USE_X11) || defined(USE_OZONE) |
| 75 ui::KeyEvent* event); | |
| 76 #elif defined(USE_OZONE) | |
| 77 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( | 75 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( |
| 78 ui::KeyEvent* event) { | 76 ui::KeyEvent* event) { |
| 79 const base::NativeEvent& native_event = event->native_event(); | |
| 80 ui::EventType type = ui::EventTypeFromNative(native_event); | |
| 81 blink::WebKeyboardEvent webkit_event; | 77 blink::WebKeyboardEvent webkit_event; |
| 82 | 78 |
| 83 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 79 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 84 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 80 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 85 | 81 |
| 86 switch (type) { | 82 switch (event->type()) { |
| 87 case ui::ET_KEY_PRESSED: | 83 case ui::ET_KEY_PRESSED: |
| 88 webkit_event.type = event->is_char() ? blink::WebInputEvent::Char : | 84 webkit_event.type = event->is_char() ? blink::WebInputEvent::Char : |
| 89 blink::WebInputEvent::RawKeyDown; | 85 blink::WebInputEvent::RawKeyDown; |
| 90 break; | 86 break; |
| 91 case ui::ET_KEY_RELEASED: | 87 case ui::ET_KEY_RELEASED: |
| 92 webkit_event.type = blink::WebInputEvent::KeyUp; | 88 webkit_event.type = blink::WebInputEvent::KeyUp; |
| 93 break; | 89 break; |
| 94 default: | 90 default: |
| 95 NOTREACHED(); | 91 NOTREACHED(); |
| 96 } | 92 } |
| 97 | 93 |
| 98 if (webkit_event.modifiers & blink::WebInputEvent::AltKey) | 94 if (webkit_event.modifiers & blink::WebInputEvent::AltKey) |
| 99 webkit_event.isSystemKey = true; | 95 webkit_event.isSystemKey = true; |
| 100 | 96 |
| 101 wchar_t character = ui::KeyboardCodeFromNative(native_event); | 97 webkit_event.windowsKeyCode = event->GetLocatedWindowsKeyboardCode(); |
| 102 webkit_event.windowsKeyCode = character; | 98 webkit_event.nativeKeyCode = event->platform_keycode(); |
| 103 webkit_event.nativeKeyCode = character; | |
| 104 | 99 |
| 105 if (webkit_event.windowsKeyCode == ui::VKEY_RETURN) | 100 if (webkit_event.windowsKeyCode == ui::VKEY_RETURN) |
| 106 webkit_event.unmodifiedText[0] = '\r'; | 101 webkit_event.unmodifiedText[0] = '\r'; |
| 107 else | 102 else |
| 108 webkit_event.unmodifiedText[0] = ui::GetCharacterFromKeyCode( | 103 webkit_event.unmodifiedText[0] = event->GetCharacter(); |
| 109 ui::KeyboardCodeFromNative(native_event), | |
| 110 ui::EventFlagsFromNative(native_event)); | |
| 111 | 104 |
| 112 if (webkit_event.modifiers & blink::WebInputEvent::ControlKey) { | 105 if (webkit_event.modifiers & blink::WebInputEvent::ControlKey) { |
| 113 webkit_event.text[0] = | 106 webkit_event.text[0] = |
| 114 GetControlCharacter( | 107 GetControlCharacter( |
| 115 webkit_event.windowsKeyCode, | 108 webkit_event.windowsKeyCode, |
| 116 webkit_event.modifiers & blink::WebInputEvent::ShiftKey); | 109 webkit_event.modifiers & blink::WebInputEvent::ShiftKey); |
| 117 } else { | 110 } else { |
| 118 webkit_event.text[0] = webkit_event.unmodifiedText[0]; | 111 webkit_event.text[0] = webkit_event.unmodifiedText[0]; |
| 119 } | 112 } |
| 120 | 113 |
| 121 webkit_event.setKeyIdentifierFromWindowsKeyCode(); | 114 webkit_event.setKeyIdentifierFromWindowsKeyCode(); |
| 122 | 115 |
| 123 return webkit_event; | 116 return webkit_event; |
| 124 } | 117 } |
| 125 #endif | 118 |
| 126 #if defined(USE_X11) || defined(USE_OZONE) | |
| 127 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 119 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
| 128 ui::ScrollEvent* event) { | 120 ui::ScrollEvent* event) { |
| 129 blink::WebMouseWheelEvent webkit_event; | 121 blink::WebMouseWheelEvent webkit_event; |
| 130 | 122 |
| 131 webkit_event.type = blink::WebInputEvent::MouseWheel; | 123 webkit_event.type = blink::WebInputEvent::MouseWheel; |
| 132 webkit_event.button = blink::WebMouseEvent::ButtonNone; | 124 webkit_event.button = blink::WebMouseEvent::ButtonNone; |
| 133 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 125 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 134 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 126 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 135 webkit_event.hasPreciseScrollingDeltas = true; | 127 webkit_event.hasPreciseScrollingDeltas = true; |
| 136 | 128 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 webkit_event.windowY = webkit_event.y = event->y(); | 272 webkit_event.windowY = webkit_event.y = event->y(); |
| 281 | 273 |
| 282 const gfx::Point root_point = event->root_location(); | 274 const gfx::Point root_point = event->root_location(); |
| 283 webkit_event.globalX = root_point.x(); | 275 webkit_event.globalX = root_point.x(); |
| 284 webkit_event.globalY = root_point.y(); | 276 webkit_event.globalY = root_point.y(); |
| 285 | 277 |
| 286 return webkit_event; | 278 return webkit_event; |
| 287 } | 279 } |
| 288 | 280 |
| 289 blink::WebKeyboardEvent MakeWebKeyboardEvent(ui::KeyEvent* event) { | 281 blink::WebKeyboardEvent MakeWebKeyboardEvent(ui::KeyEvent* event) { |
| 290 if (!event->HasNativeEvent()) | |
| 291 return blink::WebKeyboardEvent(); | |
| 292 | |
| 293 // Windows can figure out whether or not to construct a RawKeyDown or a Char | 282 // Windows can figure out whether or not to construct a RawKeyDown or a Char |
| 294 // WebInputEvent based on the type of message carried in | 283 // WebInputEvent based on the type of message carried in |
| 295 // event->native_event(). X11 is not so fortunate, there is no separate | 284 // event->native_event(). X11 is not so fortunate, there is no separate |
| 296 // translated event type, so DesktopHostLinux sends an extra KeyEvent with | 285 // translated event type, so DesktopHostLinux sends an extra KeyEvent with |
| 297 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function | 286 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function |
| 298 // to detect this case so the right event type can be constructed. | 287 // to detect this case so the right event type can be constructed. |
| 299 #if defined(OS_WIN) | 288 #if defined(OS_WIN) |
| 289 if (!event->HasNativeEvent()) |
| 290 return blink::WebKeyboardEvent(); |
| 291 |
| 300 // Key events require no translation by the aura system. | 292 // Key events require no translation by the aura system. |
| 301 return MakeWebKeyboardEventFromNativeEvent(event->native_event()); | 293 return MakeWebKeyboardEventFromNativeEvent(event->native_event()); |
| 302 #else | 294 #else |
| 303 return MakeWebKeyboardEventFromAuraEvent(event); | 295 return MakeWebKeyboardEventFromAuraEvent(event); |
| 304 #endif | 296 #endif |
| 305 } | 297 } |
| 306 | 298 |
| 307 blink::WebGestureEvent MakeWebGestureEvent(ui::GestureEvent* event) { | 299 blink::WebGestureEvent MakeWebGestureEvent(ui::GestureEvent* event) { |
| 308 blink::WebGestureEvent gesture_event; | 300 blink::WebGestureEvent gesture_event; |
| 309 #if defined(OS_WIN) | 301 #if defined(OS_WIN) |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 webkit_event.deltaY = event->y_offset(); | 399 webkit_event.deltaY = event->y_offset(); |
| 408 } | 400 } |
| 409 | 401 |
| 410 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; | 402 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; |
| 411 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; | 403 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; |
| 412 | 404 |
| 413 return webkit_event; | 405 return webkit_event; |
| 414 } | 406 } |
| 415 | 407 |
| 416 } // namespace content | 408 } // namespace content |
| OLD | NEW |