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

Unified Diff: content/browser/renderer_host/input/web_input_event_util.cc

Issue 712133003: Track whether a scroll sequence has been partially prevented (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Filter swipe explicitly Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/input/web_input_event_util.cc
diff --git a/content/browser/renderer_host/input/web_input_event_util.cc b/content/browser/renderer_host/input/web_input_event_util.cc
index 81fc359e63c6be3f0d8cc079ce8f463f7b06099d..48ad2e8547644854acaf5e92602f81e45c467c70 100644
--- a/content/browser/renderer_host/input/web_input_event_util.cc
+++ b/content/browser/renderer_host/input/web_input_event_util.cc
@@ -14,6 +14,7 @@
#include "ui/events/event_constants.h"
#include "ui/events/gesture_detection/gesture_event_data.h"
#include "ui/events/gesture_detection/motion_event.h"
+#include "ui/gfx/geometry/safe_integer_conversions.h"
using blink::WebGestureEvent;
using blink::WebInputEvent;
@@ -279,71 +280,82 @@ blink::WebTouchEvent CreateWebTouchEventFromMotionEvent(
return result;
}
-WebGestureEvent CreateWebGestureEventFromGestureEventData(
- const ui::GestureEventData& data) {
+WebGestureEvent CreateWebGestureEvent(const ui::GestureEventDetails& details,
+ base::TimeDelta timestamp,
+ const gfx::PointF& location,
+ const gfx::PointF& raw_location,
+ int flags) {
WebGestureEvent gesture;
- gesture.modifiers = EventFlagsToWebEventModifiers(data.flags);
- gesture.x = data.x;
- gesture.y = data.y;
- gesture.globalX = data.raw_x;
- gesture.globalY = data.raw_y;
- gesture.timeStampSeconds = (data.time - base::TimeTicks()).InSecondsF();
+ gesture.timeStampSeconds = timestamp.InSecondsF();
+ gesture.x = gfx::ToFlooredInt(location.x());
+ gesture.y = gfx::ToFlooredInt(location.y());
+ gesture.globalX = gfx::ToFlooredInt(raw_location.x());
+ gesture.globalY = gfx::ToFlooredInt(raw_location.y());
+ gesture.modifiers = EventFlagsToWebEventModifiers(flags);
gesture.sourceDevice = blink::WebGestureDeviceTouchscreen;
- switch (data.type()) {
+ switch (details.type()) {
case ui::ET_GESTURE_SHOW_PRESS:
gesture.type = WebInputEvent::GestureShowPress;
- gesture.data.showPress.width = data.details.bounding_box_f().width();
- gesture.data.showPress.height = data.details.bounding_box_f().height();
+ gesture.data.showPress.width = details.bounding_box_f().width();
+ gesture.data.showPress.height = details.bounding_box_f().height();
break;
case ui::ET_GESTURE_DOUBLE_TAP:
gesture.type = WebInputEvent::GestureDoubleTap;
- DCHECK_EQ(1, data.details.tap_count());
- gesture.data.tap.tapCount = data.details.tap_count();
- gesture.data.tap.width = data.details.bounding_box_f().width();
- gesture.data.tap.height = data.details.bounding_box_f().height();
+ DCHECK_EQ(1, details.tap_count());
+ gesture.data.tap.tapCount = details.tap_count();
+ gesture.data.tap.width = details.bounding_box_f().width();
+ gesture.data.tap.height = details.bounding_box_f().height();
break;
case ui::ET_GESTURE_TAP:
gesture.type = WebInputEvent::GestureTap;
- DCHECK_EQ(1, data.details.tap_count());
- gesture.data.tap.tapCount = data.details.tap_count();
- gesture.data.tap.width = data.details.bounding_box_f().width();
- gesture.data.tap.height = data.details.bounding_box_f().height();
+ DCHECK_EQ(1, details.tap_count());
+ gesture.data.tap.tapCount = details.tap_count();
+ gesture.data.tap.width = details.bounding_box_f().width();
+ gesture.data.tap.height = details.bounding_box_f().height();
break;
case ui::ET_GESTURE_TAP_UNCONFIRMED:
gesture.type = WebInputEvent::GestureTapUnconfirmed;
- DCHECK_EQ(1, data.details.tap_count());
- gesture.data.tap.tapCount = data.details.tap_count();
- gesture.data.tap.width = data.details.bounding_box_f().width();
- gesture.data.tap.height = data.details.bounding_box_f().height();
+ DCHECK_EQ(1, details.tap_count());
+ gesture.data.tap.tapCount = details.tap_count();
+ gesture.data.tap.width = details.bounding_box_f().width();
+ gesture.data.tap.height = details.bounding_box_f().height();
break;
case ui::ET_GESTURE_LONG_PRESS:
gesture.type = WebInputEvent::GestureLongPress;
- gesture.data.longPress.width = data.details.bounding_box_f().width();
- gesture.data.longPress.height = data.details.bounding_box_f().height();
+ gesture.data.longPress.width = details.bounding_box_f().width();
+ gesture.data.longPress.height = details.bounding_box_f().height();
break;
case ui::ET_GESTURE_LONG_TAP:
gesture.type = WebInputEvent::GestureLongTap;
- gesture.data.longPress.width = data.details.bounding_box_f().width();
- gesture.data.longPress.height = data.details.bounding_box_f().height();
+ gesture.data.longPress.width = details.bounding_box_f().width();
+ gesture.data.longPress.height = details.bounding_box_f().height();
+ break;
+ case ui::ET_GESTURE_TWO_FINGER_TAP:
+ gesture.type = blink::WebInputEvent::GestureTwoFingerTap;
+ gesture.data.twoFingerTap.firstFingerWidth = details.first_finger_width();
+ gesture.data.twoFingerTap.firstFingerHeight =
+ details.first_finger_height();
break;
case ui::ET_GESTURE_SCROLL_BEGIN:
gesture.type = WebInputEvent::GestureScrollBegin;
- gesture.data.scrollBegin.deltaXHint = data.details.scroll_x_hint();
- gesture.data.scrollBegin.deltaYHint = data.details.scroll_y_hint();
+ gesture.data.scrollBegin.deltaXHint = details.scroll_x_hint();
+ gesture.data.scrollBegin.deltaYHint = details.scroll_y_hint();
break;
case ui::ET_GESTURE_SCROLL_UPDATE:
gesture.type = WebInputEvent::GestureScrollUpdate;
- gesture.data.scrollUpdate.deltaX = data.details.scroll_x();
- gesture.data.scrollUpdate.deltaY = data.details.scroll_y();
+ gesture.data.scrollUpdate.deltaX = details.scroll_x();
+ gesture.data.scrollUpdate.deltaY = details.scroll_y();
+ gesture.data.scrollUpdate.previousUpdateInSequencePrevented =
+ details.previous_scroll_update_in_sequence_prevented();
break;
case ui::ET_GESTURE_SCROLL_END:
gesture.type = WebInputEvent::GestureScrollEnd;
break;
case ui::ET_SCROLL_FLING_START:
gesture.type = WebInputEvent::GestureFlingStart;
- gesture.data.flingStart.velocityX = data.details.velocity_x();
- gesture.data.flingStart.velocityY = data.details.velocity_y();
+ gesture.data.flingStart.velocityX = details.velocity_x();
+ gesture.data.flingStart.velocityY = details.velocity_y();
break;
case ui::ET_SCROLL_FLING_CANCEL:
gesture.type = WebInputEvent::GestureFlingCancel;
@@ -353,7 +365,7 @@ WebGestureEvent CreateWebGestureEventFromGestureEventData(
break;
case ui::ET_GESTURE_PINCH_UPDATE:
gesture.type = WebInputEvent::GesturePinchUpdate;
- gesture.data.pinchUpdate.scale = data.details.scale();
+ gesture.data.pinchUpdate.scale = details.scale();
break;
case ui::ET_GESTURE_PINCH_END:
gesture.type = WebInputEvent::GesturePinchEnd;
@@ -363,14 +375,18 @@ WebGestureEvent CreateWebGestureEventFromGestureEventData(
break;
case ui::ET_GESTURE_TAP_DOWN:
gesture.type = WebInputEvent::GestureTapDown;
- gesture.data.tapDown.width = data.details.bounding_box_f().width();
- gesture.data.tapDown.height = data.details.bounding_box_f().height();
+ gesture.data.tapDown.width = details.bounding_box_f().width();
+ gesture.data.tapDown.height = details.bounding_box_f().height();
break;
case ui::ET_GESTURE_BEGIN:
case ui::ET_GESTURE_END:
NOTREACHED() << "ET_GESTURE_BEGIN and ET_GESTURE_END are only produced "
<< "in Aura, and should never end up here.";
break;
+ case ui::ET_GESTURE_SWIPE:
+ NOTREACHED() << "ET_GESTURE_SWIPE events are only produced in Aura, and "
+ << "should never end up here.";
+ break;
default:
NOTREACHED() << "ui::EventType provided wasn't a valid gesture event.";
break;
@@ -379,6 +395,15 @@ WebGestureEvent CreateWebGestureEventFromGestureEventData(
return gesture;
}
+WebGestureEvent CreateWebGestureEventFromGestureEventData(
+ const ui::GestureEventData& data) {
+ return CreateWebGestureEvent(data.details,
+ data.time - base::TimeTicks(),
+ gfx::PointF(data.x, data.y),
+ gfx::PointF(data.raw_x, data.raw_y),
+ data.flags);
+}
+
int EventFlagsToWebEventModifiers(int flags) {
int modifiers = 0;

Powered by Google App Engine
This is Rietveld 408576698