Index: third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
diff --git a/third_party/WebKit/Source/core/events/PointerEventFactory.cpp b/third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
index bc61fa0144967df16b5877f6d5af9f881cad5951..b485ba09f799b5ff73ee02713ba72c7a361d61e1 100644 |
--- a/third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
+++ b/third_party/WebKit/Source/core/events/PointerEventFactory.cpp |
@@ -286,8 +286,9 @@ PointerEvent* PointerEventFactory::Create( |
coalesced_event_init.setBubbles(false); |
UpdateMousePointerEventInit(coalesced_mouse_event, view, |
&coalesced_event_init); |
- PointerEvent* event = |
- PointerEvent::Create(pointer_event_name, coalesced_event_init); |
+ PointerEvent* event = PointerEvent::Create( |
+ pointer_event_name, coalesced_event_init, |
+ TimeTicks::FromSeconds(coalesced_mouse_event.TimeStampSeconds())); |
// Set the trusted flag for the coalesced events at the creation time |
// as oppose to the normal events which is done at the dispatch time. This |
// is because we don't want to go over all the coalesced events at every |
@@ -299,13 +300,16 @@ PointerEvent* PointerEventFactory::Create( |
pointer_event_init.setCoalescedEvents(coalesced_pointer_events); |
} |
- return PointerEvent::Create(pointer_event_name, pointer_event_init); |
+ return PointerEvent::Create( |
+ pointer_event_name, pointer_event_init, |
+ TimeTicks::FromSeconds(mouse_event.TimeStampSeconds())); |
} |
PointerEvent* PointerEventFactory::Create( |
const WebTouchPoint& touch_point, |
- const Vector<WebTouchPoint>& coalesced_points, |
+ const Vector<std::pair<WebTouchPoint, TimeTicks>>& coalesced_points, |
WebInputEvent::Modifiers modifiers, |
+ TimeTicks event_platform_time_stamp, |
LocalFrame* target_frame, |
DOMWindow* view) { |
const WebTouchPoint::State point_state = touch_point.state; |
@@ -338,15 +342,18 @@ PointerEvent* PointerEventFactory::Create( |
if (type == EventTypeNames::pointermove) { |
HeapVector<Member<PointerEvent>> coalesced_pointer_events; |
for (const auto& coalesced_touch_point : coalesced_points) { |
- DCHECK_EQ(touch_point.state, coalesced_touch_point.state); |
- DCHECK_EQ(touch_point.id, coalesced_touch_point.id); |
- DCHECK_EQ(touch_point.pointer_type, coalesced_touch_point.pointer_type); |
+ const auto& coalesced_point = coalesced_touch_point.first; |
+ const auto& coalesced_point_time_stamp = coalesced_touch_point.second; |
+ DCHECK_EQ(touch_point.state, coalesced_point.state); |
+ DCHECK_EQ(touch_point.id, coalesced_point.id); |
+ DCHECK_EQ(touch_point.pointer_type, coalesced_point.pointer_type); |
PointerEventInit coalesced_event_init = pointer_event_init; |
coalesced_event_init.setCancelable(false); |
coalesced_event_init.setBubbles(false); |
- UpdateTouchPointerEventInit(coalesced_touch_point, target_frame, |
+ UpdateTouchPointerEventInit(coalesced_point, target_frame, |
&coalesced_event_init); |
- PointerEvent* event = PointerEvent::Create(type, coalesced_event_init); |
+ PointerEvent* event = PointerEvent::Create(type, coalesced_event_init, |
+ coalesced_point_time_stamp); |
// Set the trusted flag for the coalesced events at the creation time |
// as oppose to the normal events which is done at the dispatch time. This |
// is because we don't want to go over all the coalesced events at every |
@@ -358,12 +365,14 @@ PointerEvent* PointerEventFactory::Create( |
pointer_event_init.setCoalescedEvents(coalesced_pointer_events); |
} |
- return PointerEvent::Create(type, pointer_event_init); |
+ return PointerEvent::Create(type, pointer_event_init, |
+ event_platform_time_stamp); |
} |
PointerEvent* PointerEventFactory::CreatePointerCancelEvent( |
const int pointer_id, |
- const WebPointerProperties::PointerType pointer_type) { |
+ const WebPointerProperties::PointerType pointer_type, |
+ TimeTicks platfrom_time_stamp) { |
DCHECK(pointer_id_mapping_.Contains(pointer_id)); |
pointer_id_mapping_.Set( |
pointer_id, |
@@ -378,8 +387,8 @@ PointerEvent* PointerEventFactory::CreatePointerCancelEvent( |
SetEventSpecificFields(pointer_event_init, EventTypeNames::pointercancel); |
- return PointerEvent::Create(EventTypeNames::pointercancel, |
- pointer_event_init); |
+ return PointerEvent::Create(EventTypeNames::pointercancel, pointer_event_init, |
+ platfrom_time_stamp); |
} |
PointerEvent* PointerEventFactory::CreatePointerEventFrom( |
@@ -411,7 +420,8 @@ PointerEvent* PointerEventFactory::CreatePointerEventFrom( |
if (related_target) |
pointer_event_init.setRelatedTarget(related_target); |
- return PointerEvent::Create(type, pointer_event_init); |
+ return PointerEvent::Create(type, pointer_event_init, |
+ pointer_event->PlatformTimeStamp()); |
} |
PointerEvent* PointerEventFactory::CreatePointerCaptureEvent( |