| Index: third_party/WebKit/Source/core/input/PointerEventManager.cpp
|
| diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.cpp b/third_party/WebKit/Source/core/input/PointerEventManager.cpp
|
| index 51501f37e039a2bf257d43cb321a63cd0b8543d6..fe244f31ed0a4738cab40fe98fbfb637dbba6220 100644
|
| --- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp
|
| +++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp
|
| @@ -33,15 +33,18 @@ bool IsInDocument(EventTarget* n) {
|
| return n && n->ToNode() && n->ToNode()->isConnected();
|
| }
|
|
|
| -Vector<WebTouchPoint> GetCoalescedPoints(
|
| +Vector<std::pair<WebTouchPoint, TimeTicks>> GetCoalescedPoints(
|
| const Vector<WebTouchEvent>& coalesced_events,
|
| int id) {
|
| - Vector<WebTouchPoint> related_points;
|
| + Vector<std::pair<WebTouchPoint, TimeTicks>> related_points;
|
| for (const auto& touch_event : coalesced_events) {
|
| for (unsigned i = 0; i < touch_event.touches_length; ++i) {
|
| if (touch_event.touches[i].id == id &&
|
| - touch_event.touches[i].state != WebTouchPoint::kStateStationary)
|
| - related_points.push_back(touch_event.TouchPointInRootFrame(i));
|
| + touch_event.touches[i].state != WebTouchPoint::kStateStationary) {
|
| + related_points.push_back(std::pair<WebTouchPoint, TimeTicks>(
|
| + touch_event.TouchPointInRootFrame(i),
|
| + TimeTicks::FromSeconds(touch_event.TimeStampSeconds())));
|
| + }
|
| }
|
| }
|
| return related_points;
|
| @@ -236,7 +239,7 @@ void PointerEventManager::SetNodeUnderPointer(PointerEvent* pointer_event,
|
| }
|
| }
|
|
|
| -void PointerEventManager::BlockTouchPointers() {
|
| +void PointerEventManager::BlockTouchPointers(TimeTicks platform_time_stamp) {
|
| if (in_canceled_state_for_pointer_type_touch_)
|
| return;
|
| in_canceled_state_for_pointer_type_touch_ = true;
|
| @@ -247,7 +250,8 @@ void PointerEventManager::BlockTouchPointers() {
|
| for (int pointer_id : touch_pointer_ids) {
|
| PointerEvent* pointer_event =
|
| pointer_event_factory_.CreatePointerCancelEvent(
|
| - pointer_id, WebPointerProperties::PointerType::kTouch);
|
| + pointer_id, WebPointerProperties::PointerType::kTouch,
|
| + platform_time_stamp);
|
|
|
| DCHECK(node_under_pointer_.Contains(pointer_id));
|
| EventTarget* target = node_under_pointer_.at(pointer_id).target;
|
| @@ -280,7 +284,7 @@ WebInputEventResult PointerEventManager::HandleTouchEvents(
|
| const WebTouchEvent& event,
|
| const Vector<WebTouchEvent>& coalesced_events) {
|
| if (event.GetType() == WebInputEvent::kTouchScrollStarted) {
|
| - BlockTouchPointers();
|
| + BlockTouchPointers(TimeTicks::FromSeconds(event.TimeStampSeconds()));
|
| return WebInputEventResult::kHandledSystem;
|
| }
|
|
|
| @@ -392,6 +396,7 @@ void PointerEventManager::DispatchTouchPointerEvents(
|
| PointerEvent* pointer_event = pointer_event_factory_.Create(
|
| touch_point, GetCoalescedPoints(coalesced_events, touch_point.id),
|
| static_cast<WebInputEvent::Modifiers>(event.GetModifiers()),
|
| + TimeTicks::FromSeconds(event.TimeStampSeconds()),
|
| touch_info.target_frame,
|
| touch_info.touch_node
|
| ? touch_info.touch_node->GetDocument().domWindow()
|
|
|