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/input/web_input_event_util.h" | 7 #include "content/browser/renderer_host/input/web_input_event_util.h" |
8 #include "content/browser/renderer_host/ui_events_helper.h" | 8 #include "content/browser/renderer_host/ui_events_helper.h" |
9 #include "ui/aura/window.h" | 9 #include "ui/aura/window.h" |
10 #include "ui/events/event.h" | 10 #include "ui/events/event.h" |
11 #include "ui/events/event_utils.h" | 11 #include "ui/events/event_utils.h" |
12 | |
13 #if defined(USE_X11) || defined(USE_OZONE) | |
14 #include "ui/events/keycodes/dom4/keycode_converter.h" | 12 #include "ui/events/keycodes/dom4/keycode_converter.h" |
15 #endif | |
16 | 13 |
17 namespace content { | 14 namespace content { |
18 | 15 |
19 #if defined(OS_WIN) | 16 #if defined(OS_WIN) |
20 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( | 17 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( |
21 const base::NativeEvent& native_event); | 18 const base::NativeEvent& native_event); |
22 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( | 19 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( |
23 const base::NativeEvent& native_event); | 20 const base::NativeEvent& native_event); |
24 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( | 21 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( |
25 const base::NativeEvent& native_event); | 22 const base::NativeEvent& native_event); |
26 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent( | 23 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent( |
27 const base::NativeEvent& native_event); | 24 const base::NativeEvent& native_event); |
28 #endif | 25 #endif |
29 #if defined(USE_X11) || defined(USE_OZONE) | 26 |
30 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( | 27 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( |
31 const ui::KeyEvent& event) { | 28 const ui::KeyEvent& event) { |
32 blink::WebKeyboardEvent webkit_event; | 29 blink::WebKeyboardEvent webkit_event; |
33 | 30 |
34 webkit_event.timeStampSeconds = event.time_stamp().InSecondsF(); | 31 webkit_event.timeStampSeconds = event.time_stamp().InSecondsF(); |
35 webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); | 32 webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
36 | 33 |
37 switch (event.type()) { | 34 switch (event.type()) { |
38 case ui::ET_KEY_PRESSED: | 35 case ui::ET_KEY_PRESSED: |
39 webkit_event.type = event.is_char() ? blink::WebInputEvent::Char : | 36 webkit_event.type = event.is_char() ? blink::WebInputEvent::Char : |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 default: | 109 default: |
113 NOTREACHED() << "Unknown gesture type: " << event.type(); | 110 NOTREACHED() << "Unknown gesture type: " << event.type(); |
114 } | 111 } |
115 | 112 |
116 webkit_event.sourceDevice = blink::WebGestureDeviceTouchpad; | 113 webkit_event.sourceDevice = blink::WebGestureDeviceTouchpad; |
117 webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); | 114 webkit_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
118 webkit_event.timeStampSeconds = event.time_stamp().InSecondsF(); | 115 webkit_event.timeStampSeconds = event.time_stamp().InSecondsF(); |
119 return webkit_event; | 116 return webkit_event; |
120 } | 117 } |
121 | 118 |
122 #endif | |
123 | |
124 blink::WebMouseEvent MakeWebMouseEventFromAuraEvent( | 119 blink::WebMouseEvent MakeWebMouseEventFromAuraEvent( |
125 const ui::MouseEvent& event); | 120 const ui::MouseEvent& event); |
126 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 121 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
127 const ui::MouseWheelEvent& event); | 122 const ui::MouseWheelEvent& event); |
128 | 123 |
129 // General approach: | 124 // General approach: |
130 // | 125 // |
131 // ui::Event only carries a subset of possible event data provided to Aura by | 126 // ui::Event only carries a subset of possible event data provided to Aura by |
132 // the host platform. WebKit utilizes a larger subset of that information than | 127 // the host platform. WebKit utilizes a larger subset of that information than |
133 // Aura itself. WebKit includes some built in cracking functionality that we | 128 // Aura itself. WebKit includes some built in cracking functionality that we |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 } | 219 } |
225 | 220 |
226 blink::WebKeyboardEvent MakeWebKeyboardEvent(const ui::KeyEvent& event) { | 221 blink::WebKeyboardEvent MakeWebKeyboardEvent(const ui::KeyEvent& event) { |
227 // Windows can figure out whether or not to construct a RawKeyDown or a Char | 222 // Windows can figure out whether or not to construct a RawKeyDown or a Char |
228 // WebInputEvent based on the type of message carried in | 223 // WebInputEvent based on the type of message carried in |
229 // event.native_event(). X11 is not so fortunate, there is no separate | 224 // event.native_event(). X11 is not so fortunate, there is no separate |
230 // translated event type, so DesktopHostLinux sends an extra KeyEvent with | 225 // translated event type, so DesktopHostLinux sends an extra KeyEvent with |
231 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function | 226 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function |
232 // to detect this case so the right event type can be constructed. | 227 // to detect this case so the right event type can be constructed. |
233 #if defined(OS_WIN) | 228 #if defined(OS_WIN) |
234 if (!event.HasNativeEvent()) | 229 if (event.HasNativeEvent()) { |
235 return blink::WebKeyboardEvent(); | 230 // Key events require no translation by the aura system. |
236 | 231 return MakeWebKeyboardEventFromNativeEvent(event.native_event()); |
237 // Key events require no translation by the aura system. | 232 } |
238 return MakeWebKeyboardEventFromNativeEvent(event.native_event()); | 233 #endif |
239 #else | |
240 return MakeWebKeyboardEventFromAuraEvent(event); | 234 return MakeWebKeyboardEventFromAuraEvent(event); |
241 #endif | |
242 } | 235 } |
243 | 236 |
244 blink::WebGestureEvent MakeWebGestureEvent(const ui::GestureEvent& event) { | 237 blink::WebGestureEvent MakeWebGestureEvent(const ui::GestureEvent& event) { |
245 blink::WebGestureEvent gesture_event; | 238 blink::WebGestureEvent gesture_event; |
246 #if defined(OS_WIN) | 239 #if defined(OS_WIN) |
247 if (event.HasNativeEvent()) | 240 if (event.HasNativeEvent()) |
248 gesture_event = MakeWebGestureEventFromNativeEvent(event.native_event()); | 241 gesture_event = MakeWebGestureEventFromNativeEvent(event.native_event()); |
249 else | 242 else |
250 gesture_event = MakeWebGestureEventFromUIEvent(event); | 243 gesture_event = MakeWebGestureEventFromUIEvent(event); |
251 #else | 244 #else |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 webkit_event.deltaY = event.y_offset(); | 347 webkit_event.deltaY = event.y_offset(); |
355 } | 348 } |
356 | 349 |
357 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; | 350 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; |
358 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; | 351 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; |
359 | 352 |
360 return webkit_event; | 353 return webkit_event; |
361 } | 354 } |
362 | 355 |
363 } // namespace content | 356 } // namespace content |
OLD | NEW |