| 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" |
| 11 | 11 |
| 12 namespace content { | 12 namespace content { |
| 13 | 13 |
| 14 #if defined(USE_X11) || defined(USE_OZONE) | 14 #if defined(USE_X11) || defined(USE_OZONE) |
| 15 // From third_party/WebKit/Source/web/gtk/WebInputEventFactory.cpp: | 15 // From third_party/WebKit/Source/web/gtk/WebInputEventFactory.cpp: |
| 16 WebKit::WebUChar GetControlCharacter(int windows_key_code, bool shift) { | 16 blink::WebUChar GetControlCharacter(int windows_key_code, bool shift) { |
| 17 if (windows_key_code >= ui::VKEY_A && | 17 if (windows_key_code >= ui::VKEY_A && |
| 18 windows_key_code <= ui::VKEY_Z) { | 18 windows_key_code <= ui::VKEY_Z) { |
| 19 // ctrl-A ~ ctrl-Z map to \x01 ~ \x1A | 19 // ctrl-A ~ ctrl-Z map to \x01 ~ \x1A |
| 20 return windows_key_code - ui::VKEY_A + 1; | 20 return windows_key_code - ui::VKEY_A + 1; |
| 21 } | 21 } |
| 22 if (shift) { | 22 if (shift) { |
| 23 // following graphics chars require shift key to input. | 23 // following graphics chars require shift key to input. |
| 24 switch (windows_key_code) { | 24 switch (windows_key_code) { |
| 25 // ctrl-@ maps to \x00 (Null byte) | 25 // ctrl-@ maps to \x00 (Null byte) |
| 26 case ui::VKEY_2: | 26 case ui::VKEY_2: |
| (...skipping 24 matching lines...) Expand all Loading... |
| 51 return 0x0A; | 51 return 0x0A; |
| 52 // Returns 0 for all other keys to avoid inputting unexpected chars. | 52 // Returns 0 for all other keys to avoid inputting unexpected chars. |
| 53 default: | 53 default: |
| 54 break; | 54 break; |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 return 0; | 57 return 0; |
| 58 } | 58 } |
| 59 #endif | 59 #endif |
| 60 #if defined(OS_WIN) | 60 #if defined(OS_WIN) |
| 61 WebKit::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( | 61 blink::WebMouseEvent MakeUntranslatedWebMouseEventFromNativeEvent( |
| 62 base::NativeEvent native_event); | 62 base::NativeEvent native_event); |
| 63 WebKit::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( | 63 blink::WebMouseWheelEvent MakeUntranslatedWebMouseWheelEventFromNativeEvent( |
| 64 base::NativeEvent native_event); | 64 base::NativeEvent native_event); |
| 65 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( | 65 blink::WebKeyboardEvent MakeWebKeyboardEventFromNativeEvent( |
| 66 base::NativeEvent native_event); | 66 base::NativeEvent native_event); |
| 67 WebKit::WebGestureEvent MakeWebGestureEventFromNativeEvent( | 67 blink::WebGestureEvent MakeWebGestureEventFromNativeEvent( |
| 68 base::NativeEvent native_event); | 68 base::NativeEvent native_event); |
| 69 #elif defined(USE_X11) | 69 #elif defined(USE_X11) |
| 70 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( | 70 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( |
| 71 ui::KeyEvent* event); | 71 ui::KeyEvent* event); |
| 72 #elif defined(USE_OZONE) | 72 #elif defined(USE_OZONE) |
| 73 WebKit::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( | 73 blink::WebKeyboardEvent MakeWebKeyboardEventFromAuraEvent( |
| 74 ui::KeyEvent* event) { | 74 ui::KeyEvent* event) { |
| 75 base::NativeEvent native_event = event->native_event(); | 75 base::NativeEvent native_event = event->native_event(); |
| 76 ui::EventType type = ui::EventTypeFromNative(native_event); | 76 ui::EventType type = ui::EventTypeFromNative(native_event); |
| 77 WebKit::WebKeyboardEvent webkit_event; | 77 blink::WebKeyboardEvent webkit_event; |
| 78 | 78 |
| 79 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 79 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 80 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 80 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 81 | 81 |
| 82 switch (type) { | 82 switch (type) { |
| 83 case ui::ET_KEY_PRESSED: | 83 case ui::ET_KEY_PRESSED: |
| 84 webkit_event.type = event->is_char() ? WebKit::WebInputEvent::Char : | 84 webkit_event.type = event->is_char() ? blink::WebInputEvent::Char : |
| 85 WebKit::WebInputEvent::RawKeyDown; | 85 blink::WebInputEvent::RawKeyDown; |
| 86 break; | 86 break; |
| 87 case ui::ET_KEY_RELEASED: | 87 case ui::ET_KEY_RELEASED: |
| 88 webkit_event.type = WebKit::WebInputEvent::KeyUp; | 88 webkit_event.type = blink::WebInputEvent::KeyUp; |
| 89 break; | 89 break; |
| 90 default: | 90 default: |
| 91 NOTREACHED(); | 91 NOTREACHED(); |
| 92 } | 92 } |
| 93 | 93 |
| 94 if (webkit_event.modifiers & WebKit::WebInputEvent::AltKey) | 94 if (webkit_event.modifiers & blink::WebInputEvent::AltKey) |
| 95 webkit_event.isSystemKey = true; | 95 webkit_event.isSystemKey = true; |
| 96 | 96 |
| 97 wchar_t character = ui::KeyboardCodeFromNative(native_event); | 97 wchar_t character = ui::KeyboardCodeFromNative(native_event); |
| 98 webkit_event.windowsKeyCode = character; | 98 webkit_event.windowsKeyCode = character; |
| 99 webkit_event.nativeKeyCode = character; | 99 webkit_event.nativeKeyCode = character; |
| 100 | 100 |
| 101 if (webkit_event.windowsKeyCode == ui::VKEY_RETURN) | 101 if (webkit_event.windowsKeyCode == ui::VKEY_RETURN) |
| 102 webkit_event.unmodifiedText[0] = '\r'; | 102 webkit_event.unmodifiedText[0] = '\r'; |
| 103 else | 103 else |
| 104 webkit_event.unmodifiedText[0] = character; | 104 webkit_event.unmodifiedText[0] = character; |
| 105 | 105 |
| 106 if (webkit_event.modifiers & WebKit::WebInputEvent::ControlKey) { | 106 if (webkit_event.modifiers & blink::WebInputEvent::ControlKey) { |
| 107 webkit_event.text[0] = | 107 webkit_event.text[0] = |
| 108 GetControlCharacter( | 108 GetControlCharacter( |
| 109 webkit_event.windowsKeyCode, | 109 webkit_event.windowsKeyCode, |
| 110 webkit_event.modifiers & WebKit::WebInputEvent::ShiftKey); | 110 webkit_event.modifiers & blink::WebInputEvent::ShiftKey); |
| 111 } else { | 111 } else { |
| 112 webkit_event.text[0] = webkit_event.unmodifiedText[0]; | 112 webkit_event.text[0] = webkit_event.unmodifiedText[0]; |
| 113 } | 113 } |
| 114 | 114 |
| 115 webkit_event.setKeyIdentifierFromWindowsKeyCode(); | 115 webkit_event.setKeyIdentifierFromWindowsKeyCode(); |
| 116 | 116 |
| 117 return webkit_event; | 117 return webkit_event; |
| 118 } | 118 } |
| 119 #endif | 119 #endif |
| 120 #if defined(USE_X11) || defined(USE_OZONE) | 120 #if defined(USE_X11) || defined(USE_OZONE) |
| 121 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 121 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
| 122 ui::ScrollEvent* event) { | 122 ui::ScrollEvent* event) { |
| 123 WebKit::WebMouseWheelEvent webkit_event; | 123 blink::WebMouseWheelEvent webkit_event; |
| 124 | 124 |
| 125 webkit_event.type = WebKit::WebInputEvent::MouseWheel; | 125 webkit_event.type = blink::WebInputEvent::MouseWheel; |
| 126 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; | 126 webkit_event.button = blink::WebMouseEvent::ButtonNone; |
| 127 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 127 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 128 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 128 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 129 webkit_event.hasPreciseScrollingDeltas = true; | 129 webkit_event.hasPreciseScrollingDeltas = true; |
| 130 webkit_event.deltaX = event->x_offset(); | 130 webkit_event.deltaX = event->x_offset(); |
| 131 if (event->x_offset_ordinal() != 0.f && event->x_offset() != 0.f) { | 131 if (event->x_offset_ordinal() != 0.f && event->x_offset() != 0.f) { |
| 132 webkit_event.accelerationRatioX = | 132 webkit_event.accelerationRatioX = |
| 133 event->x_offset_ordinal() / event->x_offset(); | 133 event->x_offset_ordinal() / event->x_offset(); |
| 134 } | 134 } |
| 135 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; | 135 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; |
| 136 webkit_event.deltaY = event->y_offset(); | 136 webkit_event.deltaY = event->y_offset(); |
| 137 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; | 137 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; |
| 138 if (event->y_offset_ordinal() != 0.f && event->y_offset() != 0.f) { | 138 if (event->y_offset_ordinal() != 0.f && event->y_offset() != 0.f) { |
| 139 webkit_event.accelerationRatioY = | 139 webkit_event.accelerationRatioY = |
| 140 event->y_offset_ordinal() / event->y_offset(); | 140 event->y_offset_ordinal() / event->y_offset(); |
| 141 } | 141 } |
| 142 return webkit_event; | 142 return webkit_event; |
| 143 } | 143 } |
| 144 | 144 |
| 145 WebKit::WebGestureEvent MakeWebGestureEventFromAuraEvent( | 145 blink::WebGestureEvent MakeWebGestureEventFromAuraEvent( |
| 146 ui::ScrollEvent* event) { | 146 ui::ScrollEvent* event) { |
| 147 WebKit::WebGestureEvent webkit_event; | 147 blink::WebGestureEvent webkit_event; |
| 148 | 148 |
| 149 switch (event->type()) { | 149 switch (event->type()) { |
| 150 case ui::ET_SCROLL_FLING_START: | 150 case ui::ET_SCROLL_FLING_START: |
| 151 webkit_event.type = WebKit::WebInputEvent::GestureFlingStart; | 151 webkit_event.type = blink::WebInputEvent::GestureFlingStart; |
| 152 webkit_event.data.flingStart.velocityX = event->x_offset(); | 152 webkit_event.data.flingStart.velocityX = event->x_offset(); |
| 153 webkit_event.data.flingStart.velocityY = event->y_offset(); | 153 webkit_event.data.flingStart.velocityY = event->y_offset(); |
| 154 break; | 154 break; |
| 155 case ui::ET_SCROLL_FLING_CANCEL: | 155 case ui::ET_SCROLL_FLING_CANCEL: |
| 156 webkit_event.type = WebKit::WebInputEvent::GestureFlingCancel; | 156 webkit_event.type = blink::WebInputEvent::GestureFlingCancel; |
| 157 break; | 157 break; |
| 158 case ui::ET_SCROLL: | 158 case ui::ET_SCROLL: |
| 159 NOTREACHED() << "Invalid gesture type: " << event->type(); | 159 NOTREACHED() << "Invalid gesture type: " << event->type(); |
| 160 break; | 160 break; |
| 161 default: | 161 default: |
| 162 NOTREACHED() << "Unknown gesture type: " << event->type(); | 162 NOTREACHED() << "Unknown gesture type: " << event->type(); |
| 163 } | 163 } |
| 164 | 164 |
| 165 webkit_event.sourceDevice = WebKit::WebGestureEvent::Touchpad; | 165 webkit_event.sourceDevice = blink::WebGestureEvent::Touchpad; |
| 166 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 166 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 167 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 167 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 168 return webkit_event; | 168 return webkit_event; |
| 169 } | 169 } |
| 170 | 170 |
| 171 #endif | 171 #endif |
| 172 | 172 |
| 173 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent( | 173 blink::WebMouseEvent MakeWebMouseEventFromAuraEvent( |
| 174 ui::MouseEvent* event); | 174 ui::MouseEvent* event); |
| 175 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 175 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
| 176 ui::MouseWheelEvent* event); | 176 ui::MouseWheelEvent* event); |
| 177 | 177 |
| 178 // General approach: | 178 // General approach: |
| 179 // | 179 // |
| 180 // ui::Event only carries a subset of possible event data provided to Aura by | 180 // ui::Event only carries a subset of possible event data provided to Aura by |
| 181 // the host platform. WebKit utilizes a larger subset of that information than | 181 // the host platform. WebKit utilizes a larger subset of that information than |
| 182 // Aura itself. WebKit includes some built in cracking functionality that we | 182 // Aura itself. WebKit includes some built in cracking functionality that we |
| 183 // rely on to obtain this information cleanly and consistently. | 183 // rely on to obtain this information cleanly and consistently. |
| 184 // | 184 // |
| 185 // The only place where an ui::Event's data differs from what the underlying | 185 // The only place where an ui::Event's data differs from what the underlying |
| 186 // base::NativeEvent would provide is position data, since we would like to | 186 // base::NativeEvent would provide is position data, since we would like to |
| 187 // provide coordinates relative to the aura::Window that is hosting the | 187 // provide coordinates relative to the aura::Window that is hosting the |
| 188 // renderer, not the top level platform window. | 188 // renderer, not the top level platform window. |
| 189 // | 189 // |
| 190 // The approach is to fully construct a WebKit::WebInputEvent from the | 190 // The approach is to fully construct a blink::WebInputEvent from the |
| 191 // ui::Event's base::NativeEvent, and then replace the coordinate fields with | 191 // ui::Event's base::NativeEvent, and then replace the coordinate fields with |
| 192 // the translated values from the ui::Event. | 192 // the translated values from the ui::Event. |
| 193 // | 193 // |
| 194 // The exception is mouse events on linux. The ui::MouseEvent contains enough | 194 // The exception is mouse events on linux. The ui::MouseEvent contains enough |
| 195 // necessary information to construct a WebMouseEvent. So instead of extracting | 195 // necessary information to construct a WebMouseEvent. So instead of extracting |
| 196 // the information from the XEvent, which can be tricky when supporting both | 196 // the information from the XEvent, which can be tricky when supporting both |
| 197 // XInput2 and XInput, the WebMouseEvent is constructed from the | 197 // XInput2 and XInput, the WebMouseEvent is constructed from the |
| 198 // ui::MouseEvent. This will not be necessary once only XInput2 is supported. | 198 // ui::MouseEvent. This will not be necessary once only XInput2 is supported. |
| 199 // | 199 // |
| 200 | 200 |
| 201 WebKit::WebMouseEvent MakeWebMouseEvent(ui::MouseEvent* event) { | 201 blink::WebMouseEvent MakeWebMouseEvent(ui::MouseEvent* event) { |
| 202 // Construct an untranslated event from the platform event data. | 202 // Construct an untranslated event from the platform event data. |
| 203 WebKit::WebMouseEvent webkit_event = | 203 blink::WebMouseEvent webkit_event = |
| 204 #if defined(OS_WIN) | 204 #if defined(OS_WIN) |
| 205 // On Windows we have WM_ events comming from desktop and pure aura | 205 // On Windows we have WM_ events comming from desktop and pure aura |
| 206 // events comming from metro mode. | 206 // events comming from metro mode. |
| 207 event->native_event().message ? | 207 event->native_event().message ? |
| 208 MakeUntranslatedWebMouseEventFromNativeEvent(event->native_event()) : | 208 MakeUntranslatedWebMouseEventFromNativeEvent(event->native_event()) : |
| 209 MakeWebMouseEventFromAuraEvent(event); | 209 MakeWebMouseEventFromAuraEvent(event); |
| 210 #else | 210 #else |
| 211 MakeWebMouseEventFromAuraEvent(event); | 211 MakeWebMouseEventFromAuraEvent(event); |
| 212 #endif | 212 #endif |
| 213 // Replace the event's coordinate fields with translated position data from | 213 // Replace the event's coordinate fields with translated position data from |
| 214 // |event|. | 214 // |event|. |
| 215 webkit_event.windowX = webkit_event.x = event->x(); | 215 webkit_event.windowX = webkit_event.x = event->x(); |
| 216 webkit_event.windowY = webkit_event.y = event->y(); | 216 webkit_event.windowY = webkit_event.y = event->y(); |
| 217 | 217 |
| 218 #if defined(OS_WIN) | 218 #if defined(OS_WIN) |
| 219 if (event->native_event().message) | 219 if (event->native_event().message) |
| 220 return webkit_event; | 220 return webkit_event; |
| 221 #endif | 221 #endif |
| 222 const gfx::Point root_point = event->root_location(); | 222 const gfx::Point root_point = event->root_location(); |
| 223 webkit_event.globalX = root_point.x(); | 223 webkit_event.globalX = root_point.x(); |
| 224 webkit_event.globalY = root_point.y(); | 224 webkit_event.globalY = root_point.y(); |
| 225 | 225 |
| 226 return webkit_event; | 226 return webkit_event; |
| 227 } | 227 } |
| 228 | 228 |
| 229 WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(ui::MouseWheelEvent* event) { | 229 blink::WebMouseWheelEvent MakeWebMouseWheelEvent(ui::MouseWheelEvent* event) { |
| 230 #if defined(OS_WIN) | 230 #if defined(OS_WIN) |
| 231 // Construct an untranslated event from the platform event data. | 231 // Construct an untranslated event from the platform event data. |
| 232 WebKit::WebMouseWheelEvent webkit_event = event->native_event().message ? | 232 blink::WebMouseWheelEvent webkit_event = event->native_event().message ? |
| 233 MakeUntranslatedWebMouseWheelEventFromNativeEvent(event->native_event()) : | 233 MakeUntranslatedWebMouseWheelEventFromNativeEvent(event->native_event()) : |
| 234 MakeWebMouseWheelEventFromAuraEvent(event); | 234 MakeWebMouseWheelEventFromAuraEvent(event); |
| 235 #else | 235 #else |
| 236 WebKit::WebMouseWheelEvent webkit_event = | 236 blink::WebMouseWheelEvent webkit_event = |
| 237 MakeWebMouseWheelEventFromAuraEvent(event); | 237 MakeWebMouseWheelEventFromAuraEvent(event); |
| 238 #endif | 238 #endif |
| 239 | 239 |
| 240 // Replace the event's coordinate fields with translated position data from | 240 // Replace the event's coordinate fields with translated position data from |
| 241 // |event|. | 241 // |event|. |
| 242 webkit_event.windowX = webkit_event.x = event->x(); | 242 webkit_event.windowX = webkit_event.x = event->x(); |
| 243 webkit_event.windowY = webkit_event.y = event->y(); | 243 webkit_event.windowY = webkit_event.y = event->y(); |
| 244 | 244 |
| 245 const gfx::Point root_point = event->root_location(); | 245 const gfx::Point root_point = event->root_location(); |
| 246 webkit_event.globalX = root_point.x(); | 246 webkit_event.globalX = root_point.x(); |
| 247 webkit_event.globalY = root_point.y(); | 247 webkit_event.globalY = root_point.y(); |
| 248 | 248 |
| 249 return webkit_event; | 249 return webkit_event; |
| 250 } | 250 } |
| 251 | 251 |
| 252 WebKit::WebMouseWheelEvent MakeWebMouseWheelEvent(ui::ScrollEvent* event) { | 252 blink::WebMouseWheelEvent MakeWebMouseWheelEvent(ui::ScrollEvent* event) { |
| 253 #if defined(OS_WIN) | 253 #if defined(OS_WIN) |
| 254 // Construct an untranslated event from the platform event data. | 254 // Construct an untranslated event from the platform event data. |
| 255 WebKit::WebMouseWheelEvent webkit_event = | 255 blink::WebMouseWheelEvent webkit_event = |
| 256 MakeUntranslatedWebMouseWheelEventFromNativeEvent(event->native_event()); | 256 MakeUntranslatedWebMouseWheelEventFromNativeEvent(event->native_event()); |
| 257 #else | 257 #else |
| 258 WebKit::WebMouseWheelEvent webkit_event = | 258 blink::WebMouseWheelEvent webkit_event = |
| 259 MakeWebMouseWheelEventFromAuraEvent(event); | 259 MakeWebMouseWheelEventFromAuraEvent(event); |
| 260 #endif | 260 #endif |
| 261 | 261 |
| 262 // Replace the event's coordinate fields with translated position data from | 262 // Replace the event's coordinate fields with translated position data from |
| 263 // |event|. | 263 // |event|. |
| 264 webkit_event.windowX = webkit_event.x = event->x(); | 264 webkit_event.windowX = webkit_event.x = event->x(); |
| 265 webkit_event.windowY = webkit_event.y = event->y(); | 265 webkit_event.windowY = webkit_event.y = event->y(); |
| 266 | 266 |
| 267 const gfx::Point root_point = event->root_location(); | 267 const gfx::Point root_point = event->root_location(); |
| 268 webkit_event.globalX = root_point.x(); | 268 webkit_event.globalX = root_point.x(); |
| 269 webkit_event.globalY = root_point.y(); | 269 webkit_event.globalY = root_point.y(); |
| 270 | 270 |
| 271 return webkit_event; | 271 return webkit_event; |
| 272 } | 272 } |
| 273 | 273 |
| 274 WebKit::WebKeyboardEvent MakeWebKeyboardEvent(ui::KeyEvent* event) { | 274 blink::WebKeyboardEvent MakeWebKeyboardEvent(ui::KeyEvent* event) { |
| 275 // Windows can figure out whether or not to construct a RawKeyDown or a Char | 275 // Windows can figure out whether or not to construct a RawKeyDown or a Char |
| 276 // WebInputEvent based on the type of message carried in | 276 // WebInputEvent based on the type of message carried in |
| 277 // event->native_event(). X11 is not so fortunate, there is no separate | 277 // event->native_event(). X11 is not so fortunate, there is no separate |
| 278 // translated event type, so DesktopHostLinux sends an extra KeyEvent with | 278 // translated event type, so DesktopHostLinux sends an extra KeyEvent with |
| 279 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function | 279 // is_char() == true. We need to pass the ui::KeyEvent to the X11 function |
| 280 // to detect this case so the right event type can be constructed. | 280 // to detect this case so the right event type can be constructed. |
| 281 #if defined(OS_WIN) | 281 #if defined(OS_WIN) |
| 282 // Key events require no translation by the aura system. | 282 // Key events require no translation by the aura system. |
| 283 return MakeWebKeyboardEventFromNativeEvent(event->native_event()); | 283 return MakeWebKeyboardEventFromNativeEvent(event->native_event()); |
| 284 #else | 284 #else |
| 285 return MakeWebKeyboardEventFromAuraEvent(event); | 285 return MakeWebKeyboardEventFromAuraEvent(event); |
| 286 #endif | 286 #endif |
| 287 } | 287 } |
| 288 | 288 |
| 289 WebKit::WebGestureEvent MakeWebGestureEvent(ui::GestureEvent* event) { | 289 blink::WebGestureEvent MakeWebGestureEvent(ui::GestureEvent* event) { |
| 290 WebKit::WebGestureEvent gesture_event; | 290 blink::WebGestureEvent gesture_event; |
| 291 #if defined(OS_WIN) | 291 #if defined(OS_WIN) |
| 292 if (event->HasNativeEvent()) | 292 if (event->HasNativeEvent()) |
| 293 gesture_event = MakeWebGestureEventFromNativeEvent(event->native_event()); | 293 gesture_event = MakeWebGestureEventFromNativeEvent(event->native_event()); |
| 294 else | 294 else |
| 295 gesture_event = MakeWebGestureEventFromUIEvent(*event); | 295 gesture_event = MakeWebGestureEventFromUIEvent(*event); |
| 296 #else | 296 #else |
| 297 gesture_event = MakeWebGestureEventFromUIEvent(*event); | 297 gesture_event = MakeWebGestureEventFromUIEvent(*event); |
| 298 #endif | 298 #endif |
| 299 | 299 |
| 300 gesture_event.x = event->x(); | 300 gesture_event.x = event->x(); |
| 301 gesture_event.y = event->y(); | 301 gesture_event.y = event->y(); |
| 302 | 302 |
| 303 const gfx::Point root_point = event->root_location(); | 303 const gfx::Point root_point = event->root_location(); |
| 304 gesture_event.globalX = root_point.x(); | 304 gesture_event.globalX = root_point.x(); |
| 305 gesture_event.globalY = root_point.y(); | 305 gesture_event.globalY = root_point.y(); |
| 306 | 306 |
| 307 return gesture_event; | 307 return gesture_event; |
| 308 } | 308 } |
| 309 | 309 |
| 310 WebKit::WebGestureEvent MakeWebGestureEvent(ui::ScrollEvent* event) { | 310 blink::WebGestureEvent MakeWebGestureEvent(ui::ScrollEvent* event) { |
| 311 WebKit::WebGestureEvent gesture_event; | 311 blink::WebGestureEvent gesture_event; |
| 312 | 312 |
| 313 #if defined(OS_WIN) | 313 #if defined(OS_WIN) |
| 314 gesture_event = MakeWebGestureEventFromNativeEvent(event->native_event()); | 314 gesture_event = MakeWebGestureEventFromNativeEvent(event->native_event()); |
| 315 #else | 315 #else |
| 316 gesture_event = MakeWebGestureEventFromAuraEvent(event); | 316 gesture_event = MakeWebGestureEventFromAuraEvent(event); |
| 317 #endif | 317 #endif |
| 318 | 318 |
| 319 gesture_event.x = event->x(); | 319 gesture_event.x = event->x(); |
| 320 gesture_event.y = event->y(); | 320 gesture_event.y = event->y(); |
| 321 | 321 |
| 322 const gfx::Point root_point = event->root_location(); | 322 const gfx::Point root_point = event->root_location(); |
| 323 gesture_event.globalX = root_point.x(); | 323 gesture_event.globalX = root_point.x(); |
| 324 gesture_event.globalY = root_point.y(); | 324 gesture_event.globalY = root_point.y(); |
| 325 | 325 |
| 326 return gesture_event; | 326 return gesture_event; |
| 327 } | 327 } |
| 328 | 328 |
| 329 WebKit::WebGestureEvent MakeWebGestureEventFlingCancel() { | 329 blink::WebGestureEvent MakeWebGestureEventFlingCancel() { |
| 330 WebKit::WebGestureEvent gesture_event; | 330 blink::WebGestureEvent gesture_event; |
| 331 | 331 |
| 332 // All other fields are ignored on a GestureFlingCancel event. | 332 // All other fields are ignored on a GestureFlingCancel event. |
| 333 gesture_event.type = WebKit::WebInputEvent::GestureFlingCancel; | 333 gesture_event.type = blink::WebInputEvent::GestureFlingCancel; |
| 334 gesture_event.sourceDevice = WebKit::WebGestureEvent::Touchpad; | 334 gesture_event.sourceDevice = blink::WebGestureEvent::Touchpad; |
| 335 return gesture_event; | 335 return gesture_event; |
| 336 } | 336 } |
| 337 | 337 |
| 338 WebKit::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event) { | 338 blink::WebMouseEvent MakeWebMouseEventFromAuraEvent(ui::MouseEvent* event) { |
| 339 WebKit::WebMouseEvent webkit_event; | 339 blink::WebMouseEvent webkit_event; |
| 340 | 340 |
| 341 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 341 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 342 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 342 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 343 | 343 |
| 344 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; | 344 webkit_event.button = blink::WebMouseEvent::ButtonNone; |
| 345 if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON) | 345 if (event->flags() & ui::EF_LEFT_MOUSE_BUTTON) |
| 346 webkit_event.button = WebKit::WebMouseEvent::ButtonLeft; | 346 webkit_event.button = blink::WebMouseEvent::ButtonLeft; |
| 347 if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON) | 347 if (event->flags() & ui::EF_MIDDLE_MOUSE_BUTTON) |
| 348 webkit_event.button = WebKit::WebMouseEvent::ButtonMiddle; | 348 webkit_event.button = blink::WebMouseEvent::ButtonMiddle; |
| 349 if (event->flags() & ui::EF_RIGHT_MOUSE_BUTTON) | 349 if (event->flags() & ui::EF_RIGHT_MOUSE_BUTTON) |
| 350 webkit_event.button = WebKit::WebMouseEvent::ButtonRight; | 350 webkit_event.button = blink::WebMouseEvent::ButtonRight; |
| 351 | 351 |
| 352 switch (event->type()) { | 352 switch (event->type()) { |
| 353 case ui::ET_MOUSE_PRESSED: | 353 case ui::ET_MOUSE_PRESSED: |
| 354 webkit_event.type = WebKit::WebInputEvent::MouseDown; | 354 webkit_event.type = blink::WebInputEvent::MouseDown; |
| 355 webkit_event.clickCount = event->GetClickCount(); | 355 webkit_event.clickCount = event->GetClickCount(); |
| 356 break; | 356 break; |
| 357 case ui::ET_MOUSE_RELEASED: | 357 case ui::ET_MOUSE_RELEASED: |
| 358 webkit_event.type = WebKit::WebInputEvent::MouseUp; | 358 webkit_event.type = blink::WebInputEvent::MouseUp; |
| 359 webkit_event.clickCount = event->GetClickCount(); | 359 webkit_event.clickCount = event->GetClickCount(); |
| 360 break; | 360 break; |
| 361 case ui::ET_MOUSE_ENTERED: | 361 case ui::ET_MOUSE_ENTERED: |
| 362 case ui::ET_MOUSE_EXITED: | 362 case ui::ET_MOUSE_EXITED: |
| 363 case ui::ET_MOUSE_MOVED: | 363 case ui::ET_MOUSE_MOVED: |
| 364 case ui::ET_MOUSE_DRAGGED: | 364 case ui::ET_MOUSE_DRAGGED: |
| 365 webkit_event.type = WebKit::WebInputEvent::MouseMove; | 365 webkit_event.type = blink::WebInputEvent::MouseMove; |
| 366 break; | 366 break; |
| 367 default: | 367 default: |
| 368 NOTIMPLEMENTED() << "Received unexpected event: " << event->type(); | 368 NOTIMPLEMENTED() << "Received unexpected event: " << event->type(); |
| 369 break; | 369 break; |
| 370 } | 370 } |
| 371 | 371 |
| 372 return webkit_event; | 372 return webkit_event; |
| 373 } | 373 } |
| 374 | 374 |
| 375 WebKit::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( | 375 blink::WebMouseWheelEvent MakeWebMouseWheelEventFromAuraEvent( |
| 376 ui::MouseWheelEvent* event) { | 376 ui::MouseWheelEvent* event) { |
| 377 WebKit::WebMouseWheelEvent webkit_event; | 377 blink::WebMouseWheelEvent webkit_event; |
| 378 | 378 |
| 379 webkit_event.type = WebKit::WebInputEvent::MouseWheel; | 379 webkit_event.type = blink::WebInputEvent::MouseWheel; |
| 380 webkit_event.button = WebKit::WebMouseEvent::ButtonNone; | 380 webkit_event.button = blink::WebMouseEvent::ButtonNone; |
| 381 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); | 381 webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags()); |
| 382 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); | 382 webkit_event.timeStampSeconds = event->time_stamp().InSecondsF(); |
| 383 webkit_event.deltaX = event->x_offset(); | 383 webkit_event.deltaX = event->x_offset(); |
| 384 webkit_event.deltaY = event->y_offset(); | 384 webkit_event.deltaY = event->y_offset(); |
| 385 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; | 385 webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick; |
| 386 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; | 386 webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick; |
| 387 | 387 |
| 388 return webkit_event; | 388 return webkit_event; |
| 389 } | 389 } |
| 390 | 390 |
| 391 } // namespace content | 391 } // namespace content |
| OLD | NEW |