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

Side by Side Diff: third_party/WebKit/Source/core/events/PointerEventFactory.cpp

Issue 2834183002: Add time stamp to the constructor of the events (Closed)
Patch Set: Fix typos Created 3 years, 8 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "core/events/PointerEventFactory.h" 5 #include "core/events/PointerEventFactory.h"
6 6
7 #include "core/frame/FrameView.h" 7 #include "core/frame/FrameView.h"
8 #include "platform/geometry/FloatSize.h" 8 #include "platform/geometry/FloatSize.h"
9 9
10 namespace blink { 10 namespace blink {
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // TODO(crbug.com/694742): We will set the id from low-level OS events 279 // TODO(crbug.com/694742): We will set the id from low-level OS events
280 // and enable this DCHECK again. 280 // and enable this DCHECK again.
281 // DCHECK_EQ(mouseEvent.id, coalescedMouseEvent.id); 281 // DCHECK_EQ(mouseEvent.id, coalescedMouseEvent.id);
282 282
283 DCHECK_EQ(mouse_event.pointer_type, coalesced_mouse_event.pointer_type); 283 DCHECK_EQ(mouse_event.pointer_type, coalesced_mouse_event.pointer_type);
284 PointerEventInit coalesced_event_init = pointer_event_init; 284 PointerEventInit coalesced_event_init = pointer_event_init;
285 coalesced_event_init.setCancelable(false); 285 coalesced_event_init.setCancelable(false);
286 coalesced_event_init.setBubbles(false); 286 coalesced_event_init.setBubbles(false);
287 UpdateMousePointerEventInit(coalesced_mouse_event, view, 287 UpdateMousePointerEventInit(coalesced_mouse_event, view,
288 &coalesced_event_init); 288 &coalesced_event_init);
289 PointerEvent* event = 289 PointerEvent* event = PointerEvent::Create(
290 PointerEvent::Create(pointer_event_name, coalesced_event_init); 290 pointer_event_name, coalesced_event_init,
291 TimeTicks::FromSeconds(coalesced_mouse_event.TimeStampSeconds()));
291 // Set the trusted flag for the coalesced events at the creation time 292 // Set the trusted flag for the coalesced events at the creation time
292 // as oppose to the normal events which is done at the dispatch time. This 293 // as oppose to the normal events which is done at the dispatch time. This
293 // is because we don't want to go over all the coalesced events at every 294 // is because we don't want to go over all the coalesced events at every
294 // dispatch and add the implementation complexity while it has no sensible 295 // dispatch and add the implementation complexity while it has no sensible
295 // usecase at this time. 296 // usecase at this time.
296 event->SetTrusted(true); 297 event->SetTrusted(true);
297 coalesced_pointer_events.push_back(event); 298 coalesced_pointer_events.push_back(event);
298 } 299 }
299 pointer_event_init.setCoalescedEvents(coalesced_pointer_events); 300 pointer_event_init.setCoalescedEvents(coalesced_pointer_events);
300 } 301 }
301 302
302 return PointerEvent::Create(pointer_event_name, pointer_event_init); 303 return PointerEvent::Create(
304 pointer_event_name, pointer_event_init,
305 TimeTicks::FromSeconds(mouse_event.TimeStampSeconds()));
303 } 306 }
304 307
305 PointerEvent* PointerEventFactory::Create( 308 PointerEvent* PointerEventFactory::Create(
306 const WebTouchPoint& touch_point, 309 const WebTouchPoint& touch_point,
307 const Vector<WebTouchPoint>& coalesced_points, 310 const Vector<std::pair<WebTouchPoint, TimeTicks>>& coalesced_points,
308 WebInputEvent::Modifiers modifiers, 311 WebInputEvent::Modifiers modifiers,
312 TimeTicks event_platform_time_stamp,
309 LocalFrame* target_frame, 313 LocalFrame* target_frame,
310 DOMWindow* view) { 314 DOMWindow* view) {
311 const WebTouchPoint::State point_state = touch_point.state; 315 const WebTouchPoint::State point_state = touch_point.state;
312 const AtomicString& type = 316 const AtomicString& type =
313 PointerEventNameForTouchPointState(touch_point.state); 317 PointerEventNameForTouchPointState(touch_point.state);
314 318
315 bool pointer_released_or_cancelled = 319 bool pointer_released_or_cancelled =
316 point_state == WebTouchPoint::State::kStateReleased || 320 point_state == WebTouchPoint::State::kStateReleased ||
317 point_state == WebTouchPoint::State::kStateCancelled; 321 point_state == WebTouchPoint::State::kStateCancelled;
318 bool pointer_pressed_or_released = 322 bool pointer_pressed_or_released =
(...skipping 12 matching lines...) Expand all
331 UpdateTouchPointerEventInit(touch_point, target_frame, &pointer_event_init); 335 UpdateTouchPointerEventInit(touch_point, target_frame, &pointer_event_init);
332 336
333 UIEventWithKeyState::SetFromWebInputEventModifiers(pointer_event_init, 337 UIEventWithKeyState::SetFromWebInputEventModifiers(pointer_event_init,
334 modifiers); 338 modifiers);
335 339
336 SetEventSpecificFields(pointer_event_init, type); 340 SetEventSpecificFields(pointer_event_init, type);
337 341
338 if (type == EventTypeNames::pointermove) { 342 if (type == EventTypeNames::pointermove) {
339 HeapVector<Member<PointerEvent>> coalesced_pointer_events; 343 HeapVector<Member<PointerEvent>> coalesced_pointer_events;
340 for (const auto& coalesced_touch_point : coalesced_points) { 344 for (const auto& coalesced_touch_point : coalesced_points) {
341 DCHECK_EQ(touch_point.state, coalesced_touch_point.state); 345 const auto& coalesced_point = coalesced_touch_point.first;
342 DCHECK_EQ(touch_point.id, coalesced_touch_point.id); 346 const auto& coalesced_point_time_stamp = coalesced_touch_point.second;
343 DCHECK_EQ(touch_point.pointer_type, coalesced_touch_point.pointer_type); 347 DCHECK_EQ(touch_point.state, coalesced_point.state);
348 DCHECK_EQ(touch_point.id, coalesced_point.id);
349 DCHECK_EQ(touch_point.pointer_type, coalesced_point.pointer_type);
344 PointerEventInit coalesced_event_init = pointer_event_init; 350 PointerEventInit coalesced_event_init = pointer_event_init;
345 coalesced_event_init.setCancelable(false); 351 coalesced_event_init.setCancelable(false);
346 coalesced_event_init.setBubbles(false); 352 coalesced_event_init.setBubbles(false);
347 UpdateTouchPointerEventInit(coalesced_touch_point, target_frame, 353 UpdateTouchPointerEventInit(coalesced_point, target_frame,
348 &coalesced_event_init); 354 &coalesced_event_init);
349 PointerEvent* event = PointerEvent::Create(type, coalesced_event_init); 355 PointerEvent* event = PointerEvent::Create(type, coalesced_event_init,
356 coalesced_point_time_stamp);
350 // Set the trusted flag for the coalesced events at the creation time 357 // Set the trusted flag for the coalesced events at the creation time
351 // as oppose to the normal events which is done at the dispatch time. This 358 // as oppose to the normal events which is done at the dispatch time. This
352 // is because we don't want to go over all the coalesced events at every 359 // is because we don't want to go over all the coalesced events at every
353 // dispatch and add the implementation complexity while it has no sensible 360 // dispatch and add the implementation complexity while it has no sensible
354 // usecase at this time. 361 // usecase at this time.
355 event->SetTrusted(true); 362 event->SetTrusted(true);
356 coalesced_pointer_events.push_back(event); 363 coalesced_pointer_events.push_back(event);
357 } 364 }
358 pointer_event_init.setCoalescedEvents(coalesced_pointer_events); 365 pointer_event_init.setCoalescedEvents(coalesced_pointer_events);
359 } 366 }
360 367
361 return PointerEvent::Create(type, pointer_event_init); 368 return PointerEvent::Create(type, pointer_event_init,
369 event_platform_time_stamp);
362 } 370 }
363 371
364 PointerEvent* PointerEventFactory::CreatePointerCancelEvent( 372 PointerEvent* PointerEventFactory::CreatePointerCancelEvent(
365 const int pointer_id, 373 const int pointer_id,
366 const WebPointerProperties::PointerType pointer_type) { 374 const WebPointerProperties::PointerType pointer_type,
375 TimeTicks platfrom_time_stamp) {
367 DCHECK(pointer_id_mapping_.Contains(pointer_id)); 376 DCHECK(pointer_id_mapping_.Contains(pointer_id));
368 pointer_id_mapping_.Set( 377 pointer_id_mapping_.Set(
369 pointer_id, 378 pointer_id,
370 PointerAttributes(pointer_id_mapping_.at(pointer_id).incoming_id, false)); 379 PointerAttributes(pointer_id_mapping_.at(pointer_id).incoming_id, false));
371 380
372 PointerEventInit pointer_event_init; 381 PointerEventInit pointer_event_init;
373 382
374 pointer_event_init.setPointerId(pointer_id); 383 pointer_event_init.setPointerId(pointer_id);
375 pointer_event_init.setPointerType( 384 pointer_event_init.setPointerType(
376 PointerTypeNameForWebPointPointerType(pointer_type)); 385 PointerTypeNameForWebPointPointerType(pointer_type));
377 pointer_event_init.setIsPrimary(IsPrimary(pointer_id)); 386 pointer_event_init.setIsPrimary(IsPrimary(pointer_id));
378 387
379 SetEventSpecificFields(pointer_event_init, EventTypeNames::pointercancel); 388 SetEventSpecificFields(pointer_event_init, EventTypeNames::pointercancel);
380 389
381 return PointerEvent::Create(EventTypeNames::pointercancel, 390 return PointerEvent::Create(EventTypeNames::pointercancel, pointer_event_init,
382 pointer_event_init); 391 platfrom_time_stamp);
383 } 392 }
384 393
385 PointerEvent* PointerEventFactory::CreatePointerEventFrom( 394 PointerEvent* PointerEventFactory::CreatePointerEventFrom(
386 PointerEvent* pointer_event, 395 PointerEvent* pointer_event,
387 const AtomicString& type, 396 const AtomicString& type,
388 EventTarget* related_target) { 397 EventTarget* related_target) {
389 PointerEventInit pointer_event_init; 398 PointerEventInit pointer_event_init;
390 399
391 pointer_event_init.setPointerId(pointer_event->pointerId()); 400 pointer_event_init.setPointerId(pointer_event->pointerId());
392 pointer_event_init.setPointerType(pointer_event->pointerType()); 401 pointer_event_init.setPointerType(pointer_event->pointerType());
(...skipping 11 matching lines...) Expand all
404 pointer_event_init.setTiltY(pointer_event->tiltY()); 413 pointer_event_init.setTiltY(pointer_event->tiltY());
405 pointer_event_init.setTangentialPressure(pointer_event->tangentialPressure()); 414 pointer_event_init.setTangentialPressure(pointer_event->tangentialPressure());
406 pointer_event_init.setTwist(pointer_event->twist()); 415 pointer_event_init.setTwist(pointer_event->twist());
407 pointer_event_init.setView(pointer_event->view()); 416 pointer_event_init.setView(pointer_event->view());
408 417
409 SetEventSpecificFields(pointer_event_init, type); 418 SetEventSpecificFields(pointer_event_init, type);
410 419
411 if (related_target) 420 if (related_target)
412 pointer_event_init.setRelatedTarget(related_target); 421 pointer_event_init.setRelatedTarget(related_target);
413 422
414 return PointerEvent::Create(type, pointer_event_init); 423 return PointerEvent::Create(type, pointer_event_init,
424 pointer_event->PlatformTimeStamp());
415 } 425 }
416 426
417 PointerEvent* PointerEventFactory::CreatePointerCaptureEvent( 427 PointerEvent* PointerEventFactory::CreatePointerCaptureEvent(
418 PointerEvent* pointer_event, 428 PointerEvent* pointer_event,
419 const AtomicString& type) { 429 const AtomicString& type) {
420 DCHECK(type == EventTypeNames::gotpointercapture || 430 DCHECK(type == EventTypeNames::gotpointercapture ||
421 type == EventTypeNames::lostpointercapture); 431 type == EventTypeNames::lostpointercapture);
422 432
423 return CreatePointerEventFrom(pointer_event, type, 433 return CreatePointerEventFrom(pointer_event, type,
424 pointer_event->relatedTarget()); 434 pointer_event->relatedTarget());
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 const WebPointerProperties& properties) const { 559 const WebPointerProperties& properties) const {
550 if (properties.pointer_type == WebPointerProperties::PointerType::kMouse) 560 if (properties.pointer_type == WebPointerProperties::PointerType::kMouse)
551 return PointerEventFactory::kMouseId; 561 return PointerEventFactory::kMouseId;
552 IncomingId id(properties.pointer_type, properties.id); 562 IncomingId id(properties.pointer_type, properties.id);
553 if (pointer_incoming_id_mapping_.Contains(id)) 563 if (pointer_incoming_id_mapping_.Contains(id))
554 return pointer_incoming_id_mapping_.at(id); 564 return pointer_incoming_id_mapping_.at(id);
555 return PointerEventFactory::kInvalidId; 565 return PointerEventFactory::kInvalidId;
556 } 566 }
557 567
558 } // namespace blink 568 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698