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/ui_events_helper.h" | 5 #include "content/browser/renderer_host/ui_events_helper.h" |
6 | 6 |
7 #include "third_party/WebKit/public/web/WebInputEvent.h" | 7 #include "third_party/WebKit/public/web/WebInputEvent.h" |
8 #include "ui/events/event.h" | 8 #include "ui/events/event.h" |
9 #include "ui/events/event_constants.h" | 9 #include "ui/events/event_constants.h" |
10 | 10 |
11 namespace { | 11 namespace { |
12 | 12 |
13 int WebModifiersToUIFlags(int modifiers) { | 13 int WebModifiersToUIFlags(int modifiers) { |
14 int flags = ui::EF_NONE; | 14 int flags = ui::EF_NONE; |
15 | 15 |
16 if (modifiers & WebKit::WebInputEvent::ShiftKey) | 16 if (modifiers & blink::WebInputEvent::ShiftKey) |
17 flags |= ui::EF_SHIFT_DOWN; | 17 flags |= ui::EF_SHIFT_DOWN; |
18 if (modifiers & WebKit::WebInputEvent::ControlKey) | 18 if (modifiers & blink::WebInputEvent::ControlKey) |
19 flags |= ui::EF_CONTROL_DOWN; | 19 flags |= ui::EF_CONTROL_DOWN; |
20 if (modifiers & WebKit::WebInputEvent::AltKey) | 20 if (modifiers & blink::WebInputEvent::AltKey) |
21 flags |= ui::EF_ALT_DOWN; | 21 flags |= ui::EF_ALT_DOWN; |
22 | 22 |
23 if (modifiers & WebKit::WebInputEvent::LeftButtonDown) | 23 if (modifiers & blink::WebInputEvent::LeftButtonDown) |
24 flags |= ui::EF_LEFT_MOUSE_BUTTON; | 24 flags |= ui::EF_LEFT_MOUSE_BUTTON; |
25 if (modifiers & WebKit::WebInputEvent::RightButtonDown) | 25 if (modifiers & blink::WebInputEvent::RightButtonDown) |
26 flags |= ui::EF_RIGHT_MOUSE_BUTTON; | 26 flags |= ui::EF_RIGHT_MOUSE_BUTTON; |
27 if (modifiers & WebKit::WebInputEvent::MiddleButtonDown) | 27 if (modifiers & blink::WebInputEvent::MiddleButtonDown) |
28 flags |= ui::EF_MIDDLE_MOUSE_BUTTON; | 28 flags |= ui::EF_MIDDLE_MOUSE_BUTTON; |
29 | 29 |
30 if (modifiers & WebKit::WebInputEvent::CapsLockOn) | 30 if (modifiers & blink::WebInputEvent::CapsLockOn) |
31 flags |= ui::EF_CAPS_LOCK_DOWN; | 31 flags |= ui::EF_CAPS_LOCK_DOWN; |
32 | 32 |
33 return flags; | 33 return flags; |
34 } | 34 } |
35 | 35 |
36 ui::EventType WebTouchPointStateToEventType( | 36 ui::EventType WebTouchPointStateToEventType( |
37 WebKit::WebTouchPoint::State state) { | 37 blink::WebTouchPoint::State state) { |
38 switch (state) { | 38 switch (state) { |
39 case WebKit::WebTouchPoint::StateReleased: | 39 case blink::WebTouchPoint::StateReleased: |
40 return ui::ET_TOUCH_RELEASED; | 40 return ui::ET_TOUCH_RELEASED; |
41 | 41 |
42 case WebKit::WebTouchPoint::StatePressed: | 42 case blink::WebTouchPoint::StatePressed: |
43 return ui::ET_TOUCH_PRESSED; | 43 return ui::ET_TOUCH_PRESSED; |
44 | 44 |
45 case WebKit::WebTouchPoint::StateMoved: | 45 case blink::WebTouchPoint::StateMoved: |
46 return ui::ET_TOUCH_MOVED; | 46 return ui::ET_TOUCH_MOVED; |
47 | 47 |
48 case WebKit::WebTouchPoint::StateCancelled: | 48 case blink::WebTouchPoint::StateCancelled: |
49 return ui::ET_TOUCH_CANCELLED; | 49 return ui::ET_TOUCH_CANCELLED; |
50 | 50 |
51 default: | 51 default: |
52 return ui::ET_UNKNOWN; | 52 return ui::ET_UNKNOWN; |
53 } | 53 } |
54 } | 54 } |
55 | 55 |
56 WebKit::WebTouchPoint::State TouchPointStateFromEvent( | 56 blink::WebTouchPoint::State TouchPointStateFromEvent( |
57 const ui::TouchEvent& event) { | 57 const ui::TouchEvent& event) { |
58 switch (event.type()) { | 58 switch (event.type()) { |
59 case ui::ET_TOUCH_PRESSED: | 59 case ui::ET_TOUCH_PRESSED: |
60 return WebKit::WebTouchPoint::StatePressed; | 60 return blink::WebTouchPoint::StatePressed; |
61 case ui::ET_TOUCH_RELEASED: | 61 case ui::ET_TOUCH_RELEASED: |
62 return WebKit::WebTouchPoint::StateReleased; | 62 return blink::WebTouchPoint::StateReleased; |
63 case ui::ET_TOUCH_MOVED: | 63 case ui::ET_TOUCH_MOVED: |
64 return WebKit::WebTouchPoint::StateMoved; | 64 return blink::WebTouchPoint::StateMoved; |
65 case ui::ET_TOUCH_CANCELLED: | 65 case ui::ET_TOUCH_CANCELLED: |
66 return WebKit::WebTouchPoint::StateCancelled; | 66 return blink::WebTouchPoint::StateCancelled; |
67 default: | 67 default: |
68 return WebKit::WebTouchPoint::StateUndefined; | 68 return blink::WebTouchPoint::StateUndefined; |
69 } | 69 } |
70 } | 70 } |
71 | 71 |
72 WebKit::WebInputEvent::Type TouchEventTypeFromEvent( | 72 blink::WebInputEvent::Type TouchEventTypeFromEvent( |
73 const ui::TouchEvent& event) { | 73 const ui::TouchEvent& event) { |
74 switch (event.type()) { | 74 switch (event.type()) { |
75 case ui::ET_TOUCH_PRESSED: | 75 case ui::ET_TOUCH_PRESSED: |
76 return WebKit::WebInputEvent::TouchStart; | 76 return blink::WebInputEvent::TouchStart; |
77 case ui::ET_TOUCH_RELEASED: | 77 case ui::ET_TOUCH_RELEASED: |
78 return WebKit::WebInputEvent::TouchEnd; | 78 return blink::WebInputEvent::TouchEnd; |
79 case ui::ET_TOUCH_MOVED: | 79 case ui::ET_TOUCH_MOVED: |
80 return WebKit::WebInputEvent::TouchMove; | 80 return blink::WebInputEvent::TouchMove; |
81 case ui::ET_TOUCH_CANCELLED: | 81 case ui::ET_TOUCH_CANCELLED: |
82 return WebKit::WebInputEvent::TouchCancel; | 82 return blink::WebInputEvent::TouchCancel; |
83 default: | 83 default: |
84 return WebKit::WebInputEvent::Undefined; | 84 return blink::WebInputEvent::Undefined; |
85 } | 85 } |
86 } | 86 } |
87 | 87 |
88 } // namespace | 88 } // namespace |
89 | 89 |
90 namespace content { | 90 namespace content { |
91 | 91 |
92 bool MakeUITouchEventsFromWebTouchEvents( | 92 bool MakeUITouchEventsFromWebTouchEvents( |
93 const TouchEventWithLatencyInfo& touch_with_latency, | 93 const TouchEventWithLatencyInfo& touch_with_latency, |
94 ScopedVector<ui::TouchEvent>* list, | 94 ScopedVector<ui::TouchEvent>* list, |
95 TouchEventCoordinateSystem coordinate_system) { | 95 TouchEventCoordinateSystem coordinate_system) { |
96 const WebKit::WebTouchEvent& touch = touch_with_latency.event; | 96 const blink::WebTouchEvent& touch = touch_with_latency.event; |
97 ui::EventType type = ui::ET_UNKNOWN; | 97 ui::EventType type = ui::ET_UNKNOWN; |
98 switch (touch.type) { | 98 switch (touch.type) { |
99 case WebKit::WebInputEvent::TouchStart: | 99 case blink::WebInputEvent::TouchStart: |
100 type = ui::ET_TOUCH_PRESSED; | 100 type = ui::ET_TOUCH_PRESSED; |
101 break; | 101 break; |
102 case WebKit::WebInputEvent::TouchEnd: | 102 case blink::WebInputEvent::TouchEnd: |
103 type = ui::ET_TOUCH_RELEASED; | 103 type = ui::ET_TOUCH_RELEASED; |
104 break; | 104 break; |
105 case WebKit::WebInputEvent::TouchMove: | 105 case blink::WebInputEvent::TouchMove: |
106 type = ui::ET_TOUCH_MOVED; | 106 type = ui::ET_TOUCH_MOVED; |
107 break; | 107 break; |
108 case WebKit::WebInputEvent::TouchCancel: | 108 case blink::WebInputEvent::TouchCancel: |
109 type = ui::ET_TOUCH_CANCELLED; | 109 type = ui::ET_TOUCH_CANCELLED; |
110 break; | 110 break; |
111 default: | 111 default: |
112 NOTREACHED(); | 112 NOTREACHED(); |
113 return false; | 113 return false; |
114 } | 114 } |
115 | 115 |
116 int flags = WebModifiersToUIFlags(touch.modifiers); | 116 int flags = WebModifiersToUIFlags(touch.modifiers); |
117 base::TimeDelta timestamp = base::TimeDelta::FromMicroseconds( | 117 base::TimeDelta timestamp = base::TimeDelta::FromMicroseconds( |
118 static_cast<int64>(touch.timeStampSeconds * 1000000)); | 118 static_cast<int64>(touch.timeStampSeconds * 1000000)); |
119 for (unsigned i = 0; i < touch.touchesLength; ++i) { | 119 for (unsigned i = 0; i < touch.touchesLength; ++i) { |
120 const WebKit::WebTouchPoint& point = touch.touches[i]; | 120 const blink::WebTouchPoint& point = touch.touches[i]; |
121 if (WebTouchPointStateToEventType(point.state) != type) | 121 if (WebTouchPointStateToEventType(point.state) != type) |
122 continue; | 122 continue; |
123 // In aura, the touch-event needs to be in the screen coordinate, since the | 123 // In aura, the touch-event needs to be in the screen coordinate, since the |
124 // touch-event is routed to RootWindow first. In Windows, on the other hand, | 124 // touch-event is routed to RootWindow first. In Windows, on the other hand, |
125 // the touch-event is dispatched directly to the gesture-recognizer, so the | 125 // the touch-event is dispatched directly to the gesture-recognizer, so the |
126 // location needs to be in the local coordinate space. | 126 // location needs to be in the local coordinate space. |
127 #if defined(USE_AURA) | 127 #if defined(USE_AURA) |
128 gfx::Point location; | 128 gfx::Point location; |
129 if (coordinate_system == LOCAL_COORDINATES) | 129 if (coordinate_system == LOCAL_COORDINATES) |
130 location = gfx::Point(point.position.x, point.position.y); | 130 location = gfx::Point(point.position.x, point.position.y); |
(...skipping 10 matching lines...) Expand all Loading... |
141 point.radiusX, | 141 point.radiusX, |
142 point.radiusY, | 142 point.radiusY, |
143 point.rotationAngle, | 143 point.rotationAngle, |
144 point.force); | 144 point.force); |
145 uievent->set_latency(touch_with_latency.latency); | 145 uievent->set_latency(touch_with_latency.latency); |
146 list->push_back(uievent); | 146 list->push_back(uievent); |
147 } | 147 } |
148 return true; | 148 return true; |
149 } | 149 } |
150 | 150 |
151 WebKit::WebGestureEvent MakeWebGestureEventFromUIEvent( | 151 blink::WebGestureEvent MakeWebGestureEventFromUIEvent( |
152 const ui::GestureEvent& event) { | 152 const ui::GestureEvent& event) { |
153 WebKit::WebGestureEvent gesture_event; | 153 blink::WebGestureEvent gesture_event; |
154 | 154 |
155 switch (event.type()) { | 155 switch (event.type()) { |
156 case ui::ET_GESTURE_TAP: | 156 case ui::ET_GESTURE_TAP: |
157 gesture_event.type = WebKit::WebInputEvent::GestureTap; | 157 gesture_event.type = blink::WebInputEvent::GestureTap; |
158 gesture_event.data.tap.tapCount = event.details().tap_count(); | 158 gesture_event.data.tap.tapCount = event.details().tap_count(); |
159 gesture_event.data.tap.width = event.details().bounding_box().width(); | 159 gesture_event.data.tap.width = event.details().bounding_box().width(); |
160 gesture_event.data.tap.height = event.details().bounding_box().height(); | 160 gesture_event.data.tap.height = event.details().bounding_box().height(); |
161 break; | 161 break; |
162 case ui::ET_GESTURE_TAP_DOWN: | 162 case ui::ET_GESTURE_TAP_DOWN: |
163 gesture_event.type = WebKit::WebInputEvent::GestureTapDown; | 163 gesture_event.type = blink::WebInputEvent::GestureTapDown; |
164 gesture_event.data.tapDown.width = | 164 gesture_event.data.tapDown.width = |
165 event.details().bounding_box().width(); | 165 event.details().bounding_box().width(); |
166 gesture_event.data.tapDown.height = | 166 gesture_event.data.tapDown.height = |
167 event.details().bounding_box().height(); | 167 event.details().bounding_box().height(); |
168 break; | 168 break; |
169 case ui::ET_GESTURE_SHOW_PRESS: | 169 case ui::ET_GESTURE_SHOW_PRESS: |
170 gesture_event.type = WebKit::WebInputEvent::GestureShowPress; | 170 gesture_event.type = blink::WebInputEvent::GestureShowPress; |
171 gesture_event.data.showPress.width = | 171 gesture_event.data.showPress.width = |
172 event.details().bounding_box().width(); | 172 event.details().bounding_box().width(); |
173 gesture_event.data.showPress.height = | 173 gesture_event.data.showPress.height = |
174 event.details().bounding_box().height(); | 174 event.details().bounding_box().height(); |
175 break; | 175 break; |
176 case ui::ET_GESTURE_TAP_CANCEL: | 176 case ui::ET_GESTURE_TAP_CANCEL: |
177 gesture_event.type = WebKit::WebInputEvent::GestureTapCancel; | 177 gesture_event.type = blink::WebInputEvent::GestureTapCancel; |
178 break; | 178 break; |
179 case ui::ET_GESTURE_SCROLL_BEGIN: | 179 case ui::ET_GESTURE_SCROLL_BEGIN: |
180 gesture_event.type = WebKit::WebInputEvent::GestureScrollBegin; | 180 gesture_event.type = blink::WebInputEvent::GestureScrollBegin; |
181 break; | 181 break; |
182 case ui::ET_GESTURE_SCROLL_UPDATE: | 182 case ui::ET_GESTURE_SCROLL_UPDATE: |
183 gesture_event.type = WebKit::WebInputEvent::GestureScrollUpdate; | 183 gesture_event.type = blink::WebInputEvent::GestureScrollUpdate; |
184 gesture_event.data.scrollUpdate.deltaX = event.details().scroll_x(); | 184 gesture_event.data.scrollUpdate.deltaX = event.details().scroll_x(); |
185 gesture_event.data.scrollUpdate.deltaY = event.details().scroll_y(); | 185 gesture_event.data.scrollUpdate.deltaY = event.details().scroll_y(); |
186 break; | 186 break; |
187 case ui::ET_GESTURE_SCROLL_END: | 187 case ui::ET_GESTURE_SCROLL_END: |
188 gesture_event.type = WebKit::WebInputEvent::GestureScrollEnd; | 188 gesture_event.type = blink::WebInputEvent::GestureScrollEnd; |
189 break; | 189 break; |
190 case ui::ET_GESTURE_PINCH_BEGIN: | 190 case ui::ET_GESTURE_PINCH_BEGIN: |
191 gesture_event.type = WebKit::WebInputEvent::GesturePinchBegin; | 191 gesture_event.type = blink::WebInputEvent::GesturePinchBegin; |
192 break; | 192 break; |
193 case ui::ET_GESTURE_PINCH_UPDATE: | 193 case ui::ET_GESTURE_PINCH_UPDATE: |
194 gesture_event.type = WebKit::WebInputEvent::GesturePinchUpdate; | 194 gesture_event.type = blink::WebInputEvent::GesturePinchUpdate; |
195 gesture_event.data.pinchUpdate.scale = event.details().scale(); | 195 gesture_event.data.pinchUpdate.scale = event.details().scale(); |
196 break; | 196 break; |
197 case ui::ET_GESTURE_PINCH_END: | 197 case ui::ET_GESTURE_PINCH_END: |
198 gesture_event.type = WebKit::WebInputEvent::GesturePinchEnd; | 198 gesture_event.type = blink::WebInputEvent::GesturePinchEnd; |
199 break; | 199 break; |
200 case ui::ET_SCROLL_FLING_START: | 200 case ui::ET_SCROLL_FLING_START: |
201 gesture_event.type = WebKit::WebInputEvent::GestureFlingStart; | 201 gesture_event.type = blink::WebInputEvent::GestureFlingStart; |
202 gesture_event.data.flingStart.velocityX = event.details().velocity_x(); | 202 gesture_event.data.flingStart.velocityX = event.details().velocity_x(); |
203 gesture_event.data.flingStart.velocityY = event.details().velocity_y(); | 203 gesture_event.data.flingStart.velocityY = event.details().velocity_y(); |
204 break; | 204 break; |
205 case ui::ET_SCROLL_FLING_CANCEL: | 205 case ui::ET_SCROLL_FLING_CANCEL: |
206 gesture_event.type = WebKit::WebInputEvent::GestureFlingCancel; | 206 gesture_event.type = blink::WebInputEvent::GestureFlingCancel; |
207 break; | 207 break; |
208 case ui::ET_GESTURE_LONG_PRESS: | 208 case ui::ET_GESTURE_LONG_PRESS: |
209 gesture_event.type = WebKit::WebInputEvent::GestureLongPress; | 209 gesture_event.type = blink::WebInputEvent::GestureLongPress; |
210 gesture_event.data.longPress.width = | 210 gesture_event.data.longPress.width = |
211 event.details().bounding_box().width(); | 211 event.details().bounding_box().width(); |
212 gesture_event.data.longPress.height = | 212 gesture_event.data.longPress.height = |
213 event.details().bounding_box().height(); | 213 event.details().bounding_box().height(); |
214 break; | 214 break; |
215 case ui::ET_GESTURE_LONG_TAP: | 215 case ui::ET_GESTURE_LONG_TAP: |
216 gesture_event.type = WebKit::WebInputEvent::GestureLongTap; | 216 gesture_event.type = blink::WebInputEvent::GestureLongTap; |
217 gesture_event.data.longPress.width = | 217 gesture_event.data.longPress.width = |
218 event.details().bounding_box().width(); | 218 event.details().bounding_box().width(); |
219 gesture_event.data.longPress.height = | 219 gesture_event.data.longPress.height = |
220 event.details().bounding_box().height(); | 220 event.details().bounding_box().height(); |
221 break; | 221 break; |
222 case ui::ET_GESTURE_TWO_FINGER_TAP: | 222 case ui::ET_GESTURE_TWO_FINGER_TAP: |
223 gesture_event.type = WebKit::WebInputEvent::GestureTwoFingerTap; | 223 gesture_event.type = blink::WebInputEvent::GestureTwoFingerTap; |
224 gesture_event.data.twoFingerTap.firstFingerWidth = | 224 gesture_event.data.twoFingerTap.firstFingerWidth = |
225 event.details().first_finger_width(); | 225 event.details().first_finger_width(); |
226 gesture_event.data.twoFingerTap.firstFingerHeight = | 226 gesture_event.data.twoFingerTap.firstFingerHeight = |
227 event.details().first_finger_height(); | 227 event.details().first_finger_height(); |
228 break; | 228 break; |
229 case ui::ET_GESTURE_BEGIN: | 229 case ui::ET_GESTURE_BEGIN: |
230 case ui::ET_GESTURE_END: | 230 case ui::ET_GESTURE_END: |
231 case ui::ET_GESTURE_MULTIFINGER_SWIPE: | 231 case ui::ET_GESTURE_MULTIFINGER_SWIPE: |
232 gesture_event.type = WebKit::WebInputEvent::Undefined; | 232 gesture_event.type = blink::WebInputEvent::Undefined; |
233 break; | 233 break; |
234 default: | 234 default: |
235 NOTREACHED() << "Unknown gesture type: " << event.type(); | 235 NOTREACHED() << "Unknown gesture type: " << event.type(); |
236 } | 236 } |
237 | 237 |
238 gesture_event.sourceDevice = WebKit::WebGestureEvent::Touchscreen; | 238 gesture_event.sourceDevice = blink::WebGestureEvent::Touchscreen; |
239 gesture_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); | 239 gesture_event.modifiers = EventFlagsToWebEventModifiers(event.flags()); |
240 gesture_event.timeStampSeconds = event.time_stamp().InSecondsF(); | 240 gesture_event.timeStampSeconds = event.time_stamp().InSecondsF(); |
241 | 241 |
242 return gesture_event; | 242 return gesture_event; |
243 } | 243 } |
244 | 244 |
245 int EventFlagsToWebEventModifiers(int flags) { | 245 int EventFlagsToWebEventModifiers(int flags) { |
246 int modifiers = 0; | 246 int modifiers = 0; |
247 | 247 |
248 if (flags & ui::EF_SHIFT_DOWN) | 248 if (flags & ui::EF_SHIFT_DOWN) |
249 modifiers |= WebKit::WebInputEvent::ShiftKey; | 249 modifiers |= blink::WebInputEvent::ShiftKey; |
250 if (flags & ui::EF_CONTROL_DOWN) | 250 if (flags & ui::EF_CONTROL_DOWN) |
251 modifiers |= WebKit::WebInputEvent::ControlKey; | 251 modifiers |= blink::WebInputEvent::ControlKey; |
252 if (flags & ui::EF_ALT_DOWN) | 252 if (flags & ui::EF_ALT_DOWN) |
253 modifiers |= WebKit::WebInputEvent::AltKey; | 253 modifiers |= blink::WebInputEvent::AltKey; |
254 // TODO(beng): MetaKey/META_MASK | 254 // TODO(beng): MetaKey/META_MASK |
255 if (flags & ui::EF_LEFT_MOUSE_BUTTON) | 255 if (flags & ui::EF_LEFT_MOUSE_BUTTON) |
256 modifiers |= WebKit::WebInputEvent::LeftButtonDown; | 256 modifiers |= blink::WebInputEvent::LeftButtonDown; |
257 if (flags & ui::EF_MIDDLE_MOUSE_BUTTON) | 257 if (flags & ui::EF_MIDDLE_MOUSE_BUTTON) |
258 modifiers |= WebKit::WebInputEvent::MiddleButtonDown; | 258 modifiers |= blink::WebInputEvent::MiddleButtonDown; |
259 if (flags & ui::EF_RIGHT_MOUSE_BUTTON) | 259 if (flags & ui::EF_RIGHT_MOUSE_BUTTON) |
260 modifiers |= WebKit::WebInputEvent::RightButtonDown; | 260 modifiers |= blink::WebInputEvent::RightButtonDown; |
261 if (flags & ui::EF_CAPS_LOCK_DOWN) | 261 if (flags & ui::EF_CAPS_LOCK_DOWN) |
262 modifiers |= WebKit::WebInputEvent::CapsLockOn; | 262 modifiers |= blink::WebInputEvent::CapsLockOn; |
263 return modifiers; | 263 return modifiers; |
264 } | 264 } |
265 | 265 |
266 WebKit::WebTouchPoint* UpdateWebTouchEventFromUIEvent( | 266 blink::WebTouchPoint* UpdateWebTouchEventFromUIEvent( |
267 const ui::TouchEvent& event, | 267 const ui::TouchEvent& event, |
268 WebKit::WebTouchEvent* web_event) { | 268 blink::WebTouchEvent* web_event) { |
269 WebKit::WebTouchPoint* point = NULL; | 269 blink::WebTouchPoint* point = NULL; |
270 switch (event.type()) { | 270 switch (event.type()) { |
271 case ui::ET_TOUCH_PRESSED: | 271 case ui::ET_TOUCH_PRESSED: |
272 // Add a new touch point. | 272 // Add a new touch point. |
273 if (web_event->touchesLength < WebKit::WebTouchEvent::touchesLengthCap) { | 273 if (web_event->touchesLength < blink::WebTouchEvent::touchesLengthCap) { |
274 point = &web_event->touches[web_event->touchesLength++]; | 274 point = &web_event->touches[web_event->touchesLength++]; |
275 point->id = event.touch_id(); | 275 point->id = event.touch_id(); |
276 } | 276 } |
277 break; | 277 break; |
278 case ui::ET_TOUCH_RELEASED: | 278 case ui::ET_TOUCH_RELEASED: |
279 case ui::ET_TOUCH_CANCELLED: | 279 case ui::ET_TOUCH_CANCELLED: |
280 case ui::ET_TOUCH_MOVED: { | 280 case ui::ET_TOUCH_MOVED: { |
281 // The touch point should have been added to the event from an earlier | 281 // The touch point should have been added to the event from an earlier |
282 // _PRESSED event. So find that. | 282 // _PRESSED event. So find that. |
283 // At the moment, only a maximum of 4 touch-points are allowed. So a | 283 // At the moment, only a maximum of 4 touch-points are allowed. So a |
(...skipping 15 matching lines...) Expand all Loading... |
299 return NULL; | 299 return NULL; |
300 | 300 |
301 // The spec requires the radii values to be positive (and 1 when unknown). | 301 // The spec requires the radii values to be positive (and 1 when unknown). |
302 point->radiusX = std::max(1.f, event.radius_x()); | 302 point->radiusX = std::max(1.f, event.radius_x()); |
303 point->radiusY = std::max(1.f, event.radius_y()); | 303 point->radiusY = std::max(1.f, event.radius_y()); |
304 point->rotationAngle = event.rotation_angle(); | 304 point->rotationAngle = event.rotation_angle(); |
305 point->force = event.force(); | 305 point->force = event.force(); |
306 | 306 |
307 // Update the location and state of the point. | 307 // Update the location and state of the point. |
308 point->state = TouchPointStateFromEvent(event); | 308 point->state = TouchPointStateFromEvent(event); |
309 if (point->state == WebKit::WebTouchPoint::StateMoved) { | 309 if (point->state == blink::WebTouchPoint::StateMoved) { |
310 // It is possible for badly written touch drivers to emit Move events even | 310 // It is possible for badly written touch drivers to emit Move events even |
311 // when the touch location hasn't changed. In such cases, consume the event | 311 // when the touch location hasn't changed. In such cases, consume the event |
312 // and pretend nothing happened. | 312 // and pretend nothing happened. |
313 if (point->position.x == event.x() && point->position.y == event.y()) | 313 if (point->position.x == event.x() && point->position.y == event.y()) |
314 return NULL; | 314 return NULL; |
315 } | 315 } |
316 point->position.x = event.x(); | 316 point->position.x = event.x(); |
317 point->position.y = event.y(); | 317 point->position.y = event.y(); |
318 | 318 |
319 const gfx::Point root_point = event.root_location(); | 319 const gfx::Point root_point = event.root_location(); |
320 point->screenPosition.x = root_point.x(); | 320 point->screenPosition.x = root_point.x(); |
321 point->screenPosition.y = root_point.y(); | 321 point->screenPosition.y = root_point.y(); |
322 | 322 |
323 // Mark the rest of the points as stationary. | 323 // Mark the rest of the points as stationary. |
324 for (unsigned i = 0; i < web_event->touchesLength; ++i) { | 324 for (unsigned i = 0; i < web_event->touchesLength; ++i) { |
325 WebKit::WebTouchPoint* iter = web_event->touches + i; | 325 blink::WebTouchPoint* iter = web_event->touches + i; |
326 if (iter != point) | 326 if (iter != point) |
327 iter->state = WebKit::WebTouchPoint::StateStationary; | 327 iter->state = blink::WebTouchPoint::StateStationary; |
328 } | 328 } |
329 | 329 |
330 // Update the type of the touch event. | 330 // Update the type of the touch event. |
331 web_event->type = TouchEventTypeFromEvent(event); | 331 web_event->type = TouchEventTypeFromEvent(event); |
332 web_event->timeStampSeconds = event.time_stamp().InSecondsF(); | 332 web_event->timeStampSeconds = event.time_stamp().InSecondsF(); |
333 web_event->modifiers = EventFlagsToWebEventModifiers(event.flags()); | 333 web_event->modifiers = EventFlagsToWebEventModifiers(event.flags()); |
334 | 334 |
335 return point; | 335 return point; |
336 } | 336 } |
337 | 337 |
338 } // namespace content | 338 } // namespace content |
OLD | NEW |