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 |