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

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: Rebased, fixed input_router_imp_unittest 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;
307 getEffectiveTargetForPointerEvent(target, pointerEvent->pointerId()),
308 pointerEvent.get());
309 313
310 setNodeUnderPointer(pointerEvent, nullptr); 314 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturi ng vs pointer event capturing
tdresser 2016/03/30 19:19:01 Missing .
mustaq 2016/03/30 20:21:05 Done.
315 target->dispatchEvent(pointerEvent.get());
311 316
312 removePointer(pointerEvent); 317 setNodeUnderPointer(pointerEvent, nullptr);
318 m_pointerEventFactory.remove(pointerId);
319 }
320 }
321
322 void PointerEventManager::unblockTouchPointers()
323 {
324 m_inCanceledStateForPointerTypeTouch = false;
313 } 325 }
314 326
315 WebInputEventResult PointerEventManager::sendTouchPointerEvent( 327 WebInputEventResult PointerEventManager::sendTouchPointerEvent(
316 PassRefPtrWillBeRawPtr<EventTarget> prpTarget, 328 PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
317 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, 329 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers,
318 const double width, const double height, 330 const double width, const double height,
319 const double clientX, const double clientY) 331 const double clientX, const double clientY)
320 { 332 {
333 if (m_inCanceledStateForPointerTypeTouch)
334 return WebInputEventResult::NotHandled;
335
321 RefPtrWillBeRawPtr<EventTarget> target = prpTarget; 336 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
322 337
323 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = 338 RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
324 m_pointerEventFactory.create( 339 m_pointerEventFactory.create(
325 pointerEventNameForTouchPointState(touchPoint.state()), 340 pointerEventNameForTouchPointState(touchPoint.state()),
326 touchPoint, modifiers, width, height, clientX, clientY); 341 touchPoint, modifiers, width, height, clientX, clientY);
327 342
328 processCaptureAndPositionOfPointerEvent(pointerEvent, target); 343 processCaptureAndPositionOfPointerEvent(pointerEvent, target);
329 344
330 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing 345 // 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(); 407 clear();
393 } 408 }
394 409
395 PointerEventManager::~PointerEventManager() 410 PointerEventManager::~PointerEventManager()
396 { 411 {
397 } 412 }
398 413
399 void PointerEventManager::clear() 414 void PointerEventManager::clear()
400 { 415 {
401 m_preventMouseEventForPointerTypeMouse = false; 416 m_preventMouseEventForPointerTypeMouse = false;
417 m_inCanceledStateForPointerTypeTouch = false;
402 m_pointerEventFactory.clear(); 418 m_pointerEventFactory.clear();
403 m_nodeUnderPointer.clear(); 419 m_nodeUnderPointer.clear();
404 } 420 }
405 421
406 void PointerEventManager::processCaptureAndPositionOfPointerEvent( 422 void PointerEventManager::processCaptureAndPositionOfPointerEvent(
407 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent, 423 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
408 const PassRefPtrWillBeRawPtr<EventTarget> prpHitTestTarget, 424 const PassRefPtrWillBeRawPtr<EventTarget> prpHitTestTarget,
409 const PassRefPtrWillBeRawPtr<EventTarget> lastNodeUnderMouse, 425 const PassRefPtrWillBeRawPtr<EventTarget> lastNodeUnderMouse,
410 const PlatformMouseEvent& mouseEvent, 426 const PlatformMouseEvent& mouseEvent,
411 bool sendMouseEvent, bool setPointerPosition) 427 bool sendMouseEvent, bool setPointerPosition)
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 { 540 {
525 if (m_pointerCaptureTarget.contains(pointerId)) 541 if (m_pointerCaptureTarget.contains(pointerId))
526 return m_pointerCaptureTarget.get(pointerId); 542 return m_pointerCaptureTarget.get(pointerId);
527 return nullptr; 543 return nullptr;
528 } 544 }
529 545
530 void PointerEventManager::removePointer( 546 void PointerEventManager::removePointer(
531 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent) 547 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent)
532 { 548 {
533 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent; 549 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
534 if (m_pointerEventFactory.remove(pointerEvent)) { 550 int pointerId = pointerEvent->pointerId();
535 int pointerId = pointerEvent->pointerId(); 551 if (m_pointerEventFactory.remove(pointerId)) {
536 m_pendingPointerCaptureTarget.remove(pointerId); 552 m_pendingPointerCaptureTarget.remove(pointerId);
537 m_pointerCaptureTarget.remove(pointerId); 553 m_pointerCaptureTarget.remove(pointerId);
538 m_nodeUnderPointer.remove(pointerId); 554 m_nodeUnderPointer.remove(pointerId);
539 } 555 }
540 } 556 }
541 557
542 void PointerEventManager::elementRemoved(EventTarget* target) 558 void PointerEventManager::elementRemoved(EventTarget* target)
543 { 559 {
544 removeTargetFromPointerCapturingMapping(m_pendingPointerCaptureTarget, targe t); 560 removeTargetFromPointerCapturingMapping(m_pendingPointerCaptureTarget, targe t);
545 } 561 }
(...skipping 24 matching lines...) Expand all
570 { 586 {
571 #if ENABLE(OILPAN) 587 #if ENABLE(OILPAN)
572 visitor->trace(m_nodeUnderPointer); 588 visitor->trace(m_nodeUnderPointer);
573 visitor->trace(m_pointerCaptureTarget); 589 visitor->trace(m_pointerCaptureTarget);
574 visitor->trace(m_pendingPointerCaptureTarget); 590 visitor->trace(m_pendingPointerCaptureTarget);
575 #endif 591 #endif
576 } 592 }
577 593
578 594
579 } // namespace blink 595 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698