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

Side by Side Diff: third_party/WebKit/Source/core/input/PointerEventManager.cpp

Issue 1800143002: Notify Blink about start of gesture scroll through a queued event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed touch_event_stream_validator Created 4 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/input/PointerEventManager.h" 5 #include "core/input/PointerEventManager.h"
6 6
7 #include "core/dom/shadow/FlatTreeTraversal.h" 7 #include "core/dom/shadow/FlatTreeTraversal.h"
8 #include "core/events/MouseEvent.h" 8 #include "core/events/MouseEvent.h"
9 #include "core/input/EventHandler.h" 9 #include "core/input/EventHandler.h"
10 10
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 if (sendEvent) 287 if (sendEvent)
288 sendNodeTransitionEvents(node.target, target, pointerEvent); 288 sendNodeTransitionEvents(node.target, target, pointerEvent);
289 } else if (target) { 289 } else if (target) {
290 m_nodeUnderPointer.add(pointerEvent->pointerId(), 290 m_nodeUnderPointer.add(pointerEvent->pointerId(),
291 EventTargetAttributes(target, false)); 291 EventTargetAttributes(target, false));
292 if (sendEvent) 292 if (sendEvent)
293 sendNodeTransitionEvents(nullptr, target, pointerEvent); 293 sendNodeTransitionEvents(nullptr, target, pointerEvent);
294 } 294 }
295 } 295 }
296 296
297 void PointerEventManager::sendTouchCancelPointerEvent(PassRefPtrWillBeRawPtr<Eve ntTarget> prpTarget, const PlatformTouchPoint& point) 297 void PointerEventManager::blockTouchPointers()
298 { 298 {
299 RefPtrWillBeRawPtr<EventTarget> target = prpTarget; 299 if (m_inCanceledStateForPointerTypeTouch)
300 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventFactory.create PointerCancelEvent(point); 300 return;
301 m_inCanceledStateForPointerTypeTouch = true;
301 302
303 WillBeHeapVector<int> touchPointerIds
304 = m_pointerEventFactory.getPointerIdsOfType(WebPointerProperties::Pointe rType::Touch);
302 305
303 processCaptureAndPositionOfPointerEvent(pointerEvent, target); 306 for (int pointerId : touchPointerIds) {
307 RefPtrWillBeRawPtr<PointerEvent> pointerEvent
308 = m_pointerEventFactory.createPointerCancelEvent(
309 pointerId, WebPointerProperties::PointerType::Touch);
304 310
305 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing 311 ASSERT(m_nodeUnderPointer.contains(pointerId));
306 dispatchPointerEvent( 312 RefPtrWillBeRawPtr<EventTarget> target = m_nodeUnderPointer.get(pointerI d).target;
tdresser 2016/04/01 14:50:24 Don't need WillBe types.
mustaq 2016/04/01 18:31:05 Done. Didn't touch old code though.
307 getEffectiveTargetForPointerEvent(target, pointerEvent->pointerId()),
308 pointerEvent.get());
309 313
310 setNodeUnderPointer(pointerEvent, nullptr); 314 // TODO(crbug.com/579553): This event follows implicit TE capture. The a ctual target
315 // would depend on PE capturing. Perhaps need to split TE/PE event path upstream?
316 target->dispatchEvent(pointerEvent.get());
311 317
312 removePointer(pointerEvent); 318 setNodeUnderPointer(pointerEvent, nullptr);
319 m_pointerEventFactory.remove(pointerId);
320 }
321 }
322
323 void PointerEventManager::unblockTouchPointers()
324 {
325 m_inCanceledStateForPointerTypeTouch = false;
313 } 326 }
314 327
315 WebInputEventResult PointerEventManager::sendTouchPointerEvent( 328 WebInputEventResult PointerEventManager::sendTouchPointerEvent(
316 PassRefPtrWillBeRawPtr<EventTarget> prpTarget, 329 PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
317 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, 330 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers,
318 const double width, const double height, 331 const double width, const double height,
319 const double clientX, const double clientY) 332 const double clientX, const double clientY)
320 { 333 {
334 if (m_inCanceledStateForPointerTypeTouch)
335 return WebInputEventResult::NotHandled;
336
321 RefPtrWillBeRawPtr<EventTarget> target = prpTarget; 337 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
322 338
323 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = 339 RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
324 m_pointerEventFactory.create( 340 m_pointerEventFactory.create(
325 pointerEventNameForTouchPointState(touchPoint.state()), 341 pointerEventNameForTouchPointState(touchPoint.state()),
326 touchPoint, modifiers, width, height, clientX, clientY); 342 touchPoint, modifiers, width, height, clientX, clientY);
327 343
328 processCaptureAndPositionOfPointerEvent(pointerEvent, target); 344 processCaptureAndPositionOfPointerEvent(pointerEvent, target);
329 345
330 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing 346 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 clear(); 408 clear();
393 } 409 }
394 410
395 PointerEventManager::~PointerEventManager() 411 PointerEventManager::~PointerEventManager()
396 { 412 {
397 } 413 }
398 414
399 void PointerEventManager::clear() 415 void PointerEventManager::clear()
400 { 416 {
401 m_preventMouseEventForPointerTypeMouse = false; 417 m_preventMouseEventForPointerTypeMouse = false;
418 m_inCanceledStateForPointerTypeTouch = false;
402 m_pointerEventFactory.clear(); 419 m_pointerEventFactory.clear();
403 m_nodeUnderPointer.clear(); 420 m_nodeUnderPointer.clear();
404 } 421 }
405 422
406 void PointerEventManager::processCaptureAndPositionOfPointerEvent( 423 void PointerEventManager::processCaptureAndPositionOfPointerEvent(
407 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent, 424 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
408 const PassRefPtrWillBeRawPtr<EventTarget> prpHitTestTarget, 425 const PassRefPtrWillBeRawPtr<EventTarget> prpHitTestTarget,
409 const PassRefPtrWillBeRawPtr<EventTarget> lastNodeUnderMouse, 426 const PassRefPtrWillBeRawPtr<EventTarget> lastNodeUnderMouse,
410 const PlatformMouseEvent& mouseEvent, 427 const PlatformMouseEvent& mouseEvent,
411 bool sendMouseEvent, bool setPointerPosition) 428 bool sendMouseEvent, bool setPointerPosition)
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 { 541 {
525 if (m_pointerCaptureTarget.contains(pointerId)) 542 if (m_pointerCaptureTarget.contains(pointerId))
526 return m_pointerCaptureTarget.get(pointerId); 543 return m_pointerCaptureTarget.get(pointerId);
527 return nullptr; 544 return nullptr;
528 } 545 }
529 546
530 void PointerEventManager::removePointer( 547 void PointerEventManager::removePointer(
531 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent) 548 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent)
532 { 549 {
533 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent; 550 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
534 if (m_pointerEventFactory.remove(pointerEvent)) { 551 int pointerId = pointerEvent->pointerId();
535 int pointerId = pointerEvent->pointerId(); 552 if (m_pointerEventFactory.remove(pointerId)) {
536 m_pendingPointerCaptureTarget.remove(pointerId); 553 m_pendingPointerCaptureTarget.remove(pointerId);
537 m_pointerCaptureTarget.remove(pointerId); 554 m_pointerCaptureTarget.remove(pointerId);
538 m_nodeUnderPointer.remove(pointerId); 555 m_nodeUnderPointer.remove(pointerId);
539 } 556 }
540 } 557 }
541 558
542 void PointerEventManager::elementRemoved(EventTarget* target) 559 void PointerEventManager::elementRemoved(EventTarget* target)
543 { 560 {
544 removeTargetFromPointerCapturingMapping(m_pendingPointerCaptureTarget, targe t); 561 removeTargetFromPointerCapturingMapping(m_pendingPointerCaptureTarget, targe t);
545 } 562 }
(...skipping 24 matching lines...) Expand all
570 { 587 {
571 #if ENABLE(OILPAN) 588 #if ENABLE(OILPAN)
572 visitor->trace(m_nodeUnderPointer); 589 visitor->trace(m_nodeUnderPointer);
573 visitor->trace(m_pointerCaptureTarget); 590 visitor->trace(m_pointerCaptureTarget);
574 visitor->trace(m_pendingPointerCaptureTarget); 591 visitor->trace(m_pendingPointerCaptureTarget);
575 #endif 592 #endif
576 } 593 }
577 594
578 595
579 } // namespace blink 596 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698