| OLD | NEW |
| 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/DocumentUserGestureToken.h" | 7 #include "core/dom/DocumentUserGestureToken.h" |
| 8 #include "core/dom/ElementTraversal.h" | 8 #include "core/dom/ElementTraversal.h" |
| 9 #include "core/dom/shadow/FlatTreeTraversal.h" | 9 #include "core/dom/shadow/FlatTreeTraversal.h" |
| 10 #include "core/events/MouseEvent.h" | 10 #include "core/events/MouseEvent.h" |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 // Re-target lostpointercapture to the document when the element is | 567 // Re-target lostpointercapture to the document when the element is |
| 568 // no longer participating in the tree. | 568 // no longer participating in the tree. |
| 569 EventTarget* target = pointerCaptureTarget; | 569 EventTarget* target = pointerCaptureTarget; |
| 570 if (target->toNode() && !target->toNode()->isConnected()) { | 570 if (target->toNode() && !target->toNode()->isConnected()) { |
| 571 target = target->toNode()->ownerDocument(); | 571 target = target->toNode()->ownerDocument(); |
| 572 } | 572 } |
| 573 dispatchPointerEvent(target, | 573 dispatchPointerEvent(target, |
| 574 m_pointerEventFactory.createPointerCaptureEvent( | 574 m_pointerEventFactory.createPointerCaptureEvent( |
| 575 pointerEvent, EventTypeNames::lostpointercapture)); | 575 pointerEvent, EventTypeNames::lostpointercapture)); |
| 576 } | 576 } |
| 577 // Note that If pendingPointerCaptureTarget is null dispatchPointerEvent | |
| 578 // automatically does nothing. | |
| 579 dispatchPointerEvent(pendingPointerCaptureTarget, | |
| 580 m_pointerEventFactory.createPointerCaptureEvent( | |
| 581 pointerEvent, EventTypeNames::gotpointercapture)); | |
| 582 | 577 |
| 583 if (pendingPointerCaptureTarget) | 578 if (pendingPointerCaptureTarget) { |
| 579 setNodeUnderPointer(pointerEvent, pendingPointerCaptureTarget); |
| 580 dispatchPointerEvent(pendingPointerCaptureTarget, |
| 581 m_pointerEventFactory.createPointerCaptureEvent( |
| 582 pointerEvent, EventTypeNames::gotpointercapture)); |
| 584 m_pointerCaptureTarget.set(pointerId, pendingPointerCaptureTarget); | 583 m_pointerCaptureTarget.set(pointerId, pendingPointerCaptureTarget); |
| 585 else | 584 } else { |
| 586 m_pointerCaptureTarget.remove(pointerId); | 585 m_pointerCaptureTarget.remove(pointerId); |
| 586 } |
| 587 } | 587 } |
| 588 | 588 |
| 589 void PointerEventManager::removeTargetFromPointerCapturingMapping( | 589 void PointerEventManager::removeTargetFromPointerCapturingMapping( |
| 590 PointerCapturingMap& map, | 590 PointerCapturingMap& map, |
| 591 const EventTarget* target) { | 591 const EventTarget* target) { |
| 592 // We could have kept a reverse mapping to make this deletion possibly | 592 // We could have kept a reverse mapping to make this deletion possibly |
| 593 // faster but it adds some code complication which might not be worth of | 593 // faster but it adds some code complication which might not be worth of |
| 594 // the performance improvement considering there might not be a lot of | 594 // the performance improvement considering there might not be a lot of |
| 595 // active pointer or pointer captures at the same time. | 595 // active pointer or pointer captures at the same time. |
| 596 PointerCapturingMap tmp = map; | 596 PointerCapturingMap tmp = map; |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 uint32_t firstId = m_touchIdsForCanceledPointerdowns.first(); | 690 uint32_t firstId = m_touchIdsForCanceledPointerdowns.first(); |
| 691 if (firstId > uniqueTouchEventId) | 691 if (firstId > uniqueTouchEventId) |
| 692 return false; | 692 return false; |
| 693 m_touchIdsForCanceledPointerdowns.takeFirst(); | 693 m_touchIdsForCanceledPointerdowns.takeFirst(); |
| 694 if (firstId == uniqueTouchEventId) | 694 if (firstId == uniqueTouchEventId) |
| 695 return true; | 695 return true; |
| 696 } | 696 } |
| 697 return false; | 697 return false; |
| 698 } | 698 } |
| 699 | 699 |
| 700 EventTarget* PointerEventManager::getMouseCapturingNode() { | |
| 701 return getCapturingNode(PointerEventFactory::s_mouseId); | |
| 702 } | |
| 703 | |
| 704 } // namespace blink | 700 } // namespace blink |
| OLD | NEW |