Index: third_party/WebKit/Source/core/input/PointerEventManager.cpp |
diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.cpp b/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
index 21ce995d0f67a222d0160e4a6e62a6fa861c49a5..faae397f7c28449cbf92be3555ce00cf0a27f84b 100644 |
--- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
+++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
@@ -655,6 +655,24 @@ bool PointerEventManager::isActive(const int pointerId) const { |
return m_pointerEventFactory.isActive(pointerId); |
} |
+// This function checks the type of the pointer event to be touch as touch |
+// pointer events are the only ones that are directly dispatched from the main |
+// page managers to their target (event if target is in an iframe) and only |
+// those managers will keep track of these pointer events. |
+bool PointerEventManager::isTouchPointerIdActiveOnFrame( |
+ int pointerId, |
+ LocalFrame* frame) const { |
+ if (m_pointerEventFactory.getPointerType(pointerId) != |
+ WebPointerProperties::PointerType::Touch) |
+ return false; |
+ Node* lastNodeReceivingEvent = |
+ m_nodeUnderPointer.contains(pointerId) |
+ ? m_nodeUnderPointer.get(pointerId).target->toNode() |
+ : nullptr; |
+ return lastNodeReceivingEvent && |
+ lastNodeReceivingEvent->document().frame() == frame; |
+} |
+ |
bool PointerEventManager::isAnyTouchActive() const { |
return m_touchEventManager->isAnyTouchActive(); |
} |