Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(844)

Side by Side Diff: content/browser/renderer_host/input/web_input_event_util.cc

Issue 567783002: Add modifier flags to MotionEvent (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove MotionEvent modifiers Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 // MSVC++ requires this to be set before any other includes to get M_PI. 5 // MSVC++ requires this to be set before any other includes to get M_PI.
6 #define _USE_MATH_DEFINES 6 #define _USE_MATH_DEFINES
7 7
8 #include "content/browser/renderer_host/input/web_input_event_util.h" 8 #include "content/browser/renderer_host/input/web_input_event_util.h"
9 9
10 #include <cmath> 10 #include <cmath>
11 11
12 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
13 #include "content/common/input/web_touch_event_traits.h" 13 #include "content/common/input/web_touch_event_traits.h"
14 #include "ui/events/event_constants.h"
14 #include "ui/events/gesture_detection/gesture_event_data.h" 15 #include "ui/events/gesture_detection/gesture_event_data.h"
15 #include "ui/events/gesture_detection/motion_event.h" 16 #include "ui/events/gesture_detection/motion_event.h"
16 17
17 using blink::WebGestureEvent; 18 using blink::WebGestureEvent;
18 using blink::WebInputEvent; 19 using blink::WebInputEvent;
19 using blink::WebTouchEvent; 20 using blink::WebTouchEvent;
20 using blink::WebTouchPoint; 21 using blink::WebTouchPoint;
21 using ui::MotionEvent; 22 using ui::MotionEvent;
22 23
23 namespace { 24 namespace {
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 static_cast<int>(blink::WebTouchEvent::touchesLengthCap), 259 static_cast<int>(blink::WebTouchEvent::touchesLengthCap),
259 inconsistent_maximum_number_of_active_touch_points); 260 inconsistent_maximum_number_of_active_touch_points);
260 261
261 blink::WebTouchEvent result; 262 blink::WebTouchEvent result;
262 263
263 WebTouchEventTraits::ResetType( 264 WebTouchEventTraits::ResetType(
264 ToWebInputEventType(event.GetAction()), 265 ToWebInputEventType(event.GetAction()),
265 (event.GetEventTime() - base::TimeTicks()).InSecondsF(), 266 (event.GetEventTime() - base::TimeTicks()).InSecondsF(),
266 &result); 267 &result);
267 268
269 result.modifiers = EventFlagsToWebEventModifiers(event.GetFlags());
268 result.touchesLength = 270 result.touchesLength =
269 std::min(event.GetPointerCount(), 271 std::min(event.GetPointerCount(),
270 static_cast<size_t>(WebTouchEvent::touchesLengthCap)); 272 static_cast<size_t>(WebTouchEvent::touchesLengthCap));
271 DCHECK_GT(result.touchesLength, 0U); 273 DCHECK_GT(result.touchesLength, 0U);
272 274
273 for (size_t i = 0; i < result.touchesLength; ++i) 275 for (size_t i = 0; i < result.touchesLength; ++i)
274 result.touches[i] = CreateWebTouchPoint(event, i); 276 result.touches[i] = CreateWebTouchPoint(event, i);
275 277
276 return result; 278 return result;
277 } 279 }
278 280
279 WebGestureEvent CreateWebGestureEventFromGestureEventData( 281 WebGestureEvent CreateWebGestureEventFromGestureEventData(
280 const ui::GestureEventData& data) { 282 const ui::GestureEventData& data) {
281 WebGestureEvent gesture; 283 WebGestureEvent gesture;
284 gesture.modifiers = EventFlagsToWebEventModifiers(data.flags);
282 gesture.x = data.x; 285 gesture.x = data.x;
283 gesture.y = data.y; 286 gesture.y = data.y;
284 gesture.globalX = data.raw_x; 287 gesture.globalX = data.raw_x;
285 gesture.globalY = data.raw_y; 288 gesture.globalY = data.raw_y;
286 gesture.timeStampSeconds = (data.time - base::TimeTicks()).InSecondsF(); 289 gesture.timeStampSeconds = (data.time - base::TimeTicks()).InSecondsF();
287 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen; 290 gesture.sourceDevice = blink::WebGestureDeviceTouchscreen;
288 291
289 switch (data.type()) { 292 switch (data.type()) {
290 case ui::ET_GESTURE_SHOW_PRESS: 293 case ui::ET_GESTURE_SHOW_PRESS:
291 gesture.type = WebInputEvent::GestureShowPress; 294 gesture.type = WebInputEvent::GestureShowPress;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 << "in Aura, and should never end up here."; 371 << "in Aura, and should never end up here.";
369 break; 372 break;
370 default: 373 default:
371 NOTREACHED() << "ui::EventType provided wasn't a valid gesture event."; 374 NOTREACHED() << "ui::EventType provided wasn't a valid gesture event.";
372 break; 375 break;
373 } 376 }
374 377
375 return gesture; 378 return gesture;
376 } 379 }
377 380
381 int EventFlagsToWebEventModifiers(int flags) {
382 int modifiers = 0;
383
384 if (flags & ui::EF_SHIFT_DOWN)
385 modifiers |= blink::WebInputEvent::ShiftKey;
386 if (flags & ui::EF_CONTROL_DOWN)
387 modifiers |= blink::WebInputEvent::ControlKey;
388 if (flags & ui::EF_ALT_DOWN)
389 modifiers |= blink::WebInputEvent::AltKey;
390 if (flags & ui::EF_COMMAND_DOWN)
391 modifiers |= blink::WebInputEvent::MetaKey;
392
393 if (flags & ui::EF_LEFT_MOUSE_BUTTON)
394 modifiers |= blink::WebInputEvent::LeftButtonDown;
395 if (flags & ui::EF_MIDDLE_MOUSE_BUTTON)
396 modifiers |= blink::WebInputEvent::MiddleButtonDown;
397 if (flags & ui::EF_RIGHT_MOUSE_BUTTON)
398 modifiers |= blink::WebInputEvent::RightButtonDown;
399 if (flags & ui::EF_CAPS_LOCK_DOWN)
400 modifiers |= blink::WebInputEvent::CapsLockOn;
401 if (flags & ui::EF_IS_REPEAT)
402 modifiers |= blink::WebInputEvent::IsAutoRepeat;
403
404 return modifiers;
405 }
406
407 int WebEventModifiersToEventFlags(int modifiers) {
408 int flags = 0;
409
410 if (modifiers & blink::WebInputEvent::ShiftKey)
411 flags |= ui::EF_SHIFT_DOWN;
412 if (modifiers & blink::WebInputEvent::ControlKey)
413 flags |= ui::EF_CONTROL_DOWN;
414 if (modifiers & blink::WebInputEvent::AltKey)
415 flags |= ui::EF_ALT_DOWN;
416 if (modifiers & blink::WebInputEvent::MetaKey)
417 flags |= ui::EF_COMMAND_DOWN;
418
419 if (modifiers & blink::WebInputEvent::LeftButtonDown)
420 flags |= ui::EF_LEFT_MOUSE_BUTTON;
421 if (modifiers & blink::WebInputEvent::MiddleButtonDown)
422 flags |= ui::EF_MIDDLE_MOUSE_BUTTON;
423 if (modifiers & blink::WebInputEvent::RightButtonDown)
424 flags |= ui::EF_RIGHT_MOUSE_BUTTON;
425 if (modifiers & blink::WebInputEvent::CapsLockOn)
426 flags |= ui::EF_CAPS_LOCK_DOWN;
427 if (modifiers & blink::WebInputEvent::IsAutoRepeat)
428 flags |= ui::EF_IS_REPEAT;
429
430 return flags;
431 }
432
378 } // namespace content 433 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/web_input_event_util.h ('k') | content/browser/renderer_host/ui_events_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698