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 "ui/aura/window.h" | 8 #include "ui/aura/window.h" |
8 #include "ui/base/events/event.h" | 9 #include "ui/base/events/event.h" |
9 | 10 |
10 namespace content { | 11 namespace content { |
11 | 12 |
12 #if defined(OS_WIN) | 13 #if defined(OS_WIN) |
13 WebKit::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( | 14 WebKit::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( |
14 base::NativeEvent native_event); | 15 base::NativeEvent native_event); |
15 WebKit::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( | 16 WebKit::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( |
16 base::NativeEvent native_event); | 17 base::NativeEvent native_event); |
17 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( | 18 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( |
18 base::NativeEvent native_event); | 19 base::NativeEvent native_event); |
19 WebKit::WebGestureEvent MakeWebGestureEventFromNativeEvent( | 20 WebKit::WebGestureEvent MakeWebGestureEventFromNativeEvent( |
20 base::NativeEvent native_event); | 21 base::NativeEvent native_event); |
21 WebKit::WebTouchPoint* UpdateWebTouchEventFromNativeEvent( | |
22 base::NativeEvent native_event, WebKit::WebTouchEvent* web_event); | |
23 #else | 22 #else |
24 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 23 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
25 ui::MouseWheelEvent* event); | 24 ui::MouseWheelEvent* event); |
26 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 25 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
27 ui::ScrollEvent* event); | 26 ui::ScrollEvent* event); |
28 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( | 27 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( |
29 ui::KeyEvent* event); | 28 ui::KeyEvent* event); |
30 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( | 29 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( |
31 ui::GestureEvent* event); | 30 ui::GestureEvent* event); |
32 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( | 31 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( |
33 ui::ScrollEvent* event); | 32 ui::ScrollEvent* event); |
34 WebKit::WebTouchPoint* UpdateWebTouchEventFromAuraEvent( | |
35 ui::TouchEvent* event, WebKit::WebTouchEvent* web_event); | |
36 #endif | 33 #endif |
37 | 34 |
38 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event); | 35 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event); |
39 | 36 |
40 // General approach: | 37 // General approach: |
41 // | 38 // |
42 // ui::Event only carries a subset of possible event data provided to Aura by | 39 // ui::Event only carries a subset of possible event data provided to Aura by |
43 // the host platform. WebKit utilizes a larger subset of that information than | 40 // the host platform. WebKit utilizes a larger subset of that information than |
44 // Aura itself. WebKit includes some built in cracking functionality that we | 41 // Aura itself. WebKit includes some built in cracking functionality that we |
45 // rely on to obtain this information cleanly and consistently. | 42 // rely on to obtain this information cleanly and consistently. |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 } | 178 } |
182 | 179 |
183 WebKit::WebGestureEvent MakeWebGestureEventFlingCancel() { | 180 WebKit::WebGestureEvent MakeWebGestureEventFlingCancel() { |
184 WebKit::WebGestureEvent gesture_event; | 181 WebKit::WebGestureEvent gesture_event; |
185 | 182 |
186 // All other fields are ignored on a GestureFlingCancel event. | 183 // All other fields are ignored on a GestureFlingCancel event. |
187 gesture_event.type = WebKit::WebInputEvent::GestureFlingCancel; | 184 gesture_event.type = WebKit::WebInputEvent::GestureFlingCancel; |
188 return gesture_event; | 185 return gesture_event; |
189 } | 186 } |
190 | 187 |
191 WebKit::WebTouchPoint* UpdateWebTouchEvent(ui::TouchEvent* event, | |
192 WebKit::WebTouchEvent* web_event) { | |
193 #if defined(OS_WIN) | |
194 return UpdateWebTouchEventFromNativeEvent(event->native_event(), web_event); | |
195 #else | |
196 return UpdateWebTouchEventFromAuraEvent(event, web_event); | |
197 #endif | |
198 } | |
199 | |
200 int EventFlagsToWebEventModifiers(int flags) { | |
201 int modifiers = 0; | |
202 if (flags & ui::EF_SHIFT_DOWN) | |
203 modifiers |= WebKit::WebInputEvent::ShiftKey; | |
204 if (flags & ui::EF_CONTROL_DOWN) | |
205 modifiers |= WebKit::WebInputEvent::ControlKey; | |
206 if (flags & ui::EF_ALT_DOWN) | |
207 modifiers |= WebKit::WebInputEvent::AltKey; | |
208 // TODO(beng): MetaKey/META_MASK | |
209 if (flags & ui::EF_LEFT_MOUSE_BUTTON) | |
210 modifiers |= WebKit::WebInputEvent::LeftButtonDown; | |
211 if (flags & ui::EF_MIDDLE_MOUSE_BUTTON) | |
212 modifiers |= WebKit::WebInputEvent::MiddleButtonDown; | |
213 if (flags & ui::EF_RIGHT_MOUSE_BUTTON) | |
214 modifiers |= WebKit::WebInputEvent::RightButtonDown; | |
215 if (flags & ui::EF_CAPS_LOCK_DOWN) | |
216 modifiers |= WebKit::WebInputEvent::CapsLockOn; | |
217 return modifiers; | |
218 } | |
219 | |
220 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event) { | 188 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event) { |
221 WebKit::WebMouseEvent webkit_event; | 189 WebKit::WebMouseEvent webkit_event; |
222 | 190 |
223 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 191 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
224 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 192 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
225 | 193 |
226 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; | 194 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; |
227 if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON) | 195 if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON) |
228 webkit_event.button = WebKit::WebMouseEvent::ButtonLeft; | 196 webkit_event.button = WebKit::WebMouseEvent::ButtonLeft; |
229 if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON) | 197 if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON) |
(...skipping 17 matching lines...) Expand all Loading... |
247 break; | 215 break; |
248 default: | 216 default: |
249 NOTIMPLEMENTED() << "Received unexpected event: " << event->type(); | 217 NOTIMPLEMENTED() << "Received unexpected event: " << event->type(); |
250 break; | 218 break; |
251 } | 219 } |
252 | 220 |
253 return webkit_event; | 221 return webkit_event; |
254 } | 222 } |
255 | 223 |
256 } // namespace content | 224 } // namespace content |
OLD | NEW |