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

Unified Diff: third_party/WebKit/Source/core/input/PointerEventManager.h

Issue 1635863006: Pointerevent capture APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/input/PointerEventManager.h
diff --git a/third_party/WebKit/Source/core/input/PointerEventManager.h b/third_party/WebKit/Source/core/input/PointerEventManager.h
index 093f739b9ec63339e35f1191907e3c4d1bc3c50c..8845521bb879a9847a2e63e3aa15869d6d50bb21 100644
--- a/third_party/WebKit/Source/core/input/PointerEventManager.h
+++ b/third_party/WebKit/Source/core/input/PointerEventManager.h
@@ -54,11 +54,29 @@ public:
// https://w3c.github.io/pointerevents/#compatibility-mapping-with-mouse-events
void conditionallyEnableMouseEventForPointerTypeMouse(unsigned);
+ void elementRemoved(EventTarget*);
+ void setPointerCapture(int, EventTarget*);
+ void releasePointerCapture(int, EventTarget*);
+ bool isActive(const int);
private:
- PassRefPtrWillBeRawPtr<Node> getEffectiveTargetForPointerEvent(
- PassRefPtrWillBeRawPtr<Node>,
- PassRefPtrWillBeRawPtr<PointerEvent>);
+ typedef WillBeHeapHashMap<int, RefPtrWillBeMember<EventTarget>> PointerCapturingMap;
+ class EventTargetAttributes {
+ DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
+ public:
+ DEFINE_INLINE_TRACE()
+ {
+ visitor->trace(target);
+ }
+ RefPtrWillBeMember<EventTarget> target;
+ bool hasRecievedOverEvent;
+ EventTargetAttributes() {}
+ EventTargetAttributes(PassRefPtrWillBeRawPtr<EventTarget> target,
+ bool hasRecievedOverEvent)
+ : target(target)
+ , hasRecievedOverEvent(hasRecievedOverEvent) {}
+ };
+
void sendNodeTransitionEvents(
PassRefPtrWillBeRawPtr<EventTarget> exitedTarget,
PassRefPtrWillBeRawPtr<EventTarget> enteredTarget,
@@ -67,6 +85,22 @@ private:
bool sendMouseEvent = false);
void setNodeUnderPointer(PassRefPtrWillBeRawPtr<PointerEvent>,
PassRefPtrWillBeRawPtr<EventTarget>);
+ void processPendingPointerCapture(
+ const PassRefPtrWillBeRawPtr<PointerEvent>,
+ const PassRefPtrWillBeRawPtr<EventTarget>,
+ const PlatformMouseEvent& = PlatformMouseEvent(),
+ bool sendMouseEvent = false);
+ void removeTargetFromPointerCapturingMapping(
+ PointerCapturingMap&, const EventTarget*);
+ PassRefPtrWillBeRawPtr<EventTarget> getEffectiveTargetForPointerEvent(
+ PassRefPtrWillBeRawPtr<EventTarget>, int);
+ EventTarget* getCapturingNode(int);
+ void removePointer(const PassRefPtrWillBeRawPtr<PointerEvent>);
+ WebInputEventResult dispatchPointerEvent(
+ PassRefPtrWillBeRawPtr<EventTarget>,
+ PassRefPtrWillBeRawPtr<PointerEvent>,
+ bool checkForListener = false);
+ void releasePointerCapture(int);
// Prevents firing mousedown, mousemove & mouseup in-between a canceled pointerdown and next pointerup/pointercancel.
// See "PREVENT MOUSE EVENT flag" in the spec:
@@ -77,8 +111,10 @@ private:
// which might be different than m_nodeUnderMouse in EventHandler. That one
// keeps track of any compatibility mouse event positions but this map for
// the pointer with id=1 is only taking care of true mouse related events.
- WillBeHeapHashMap<int, RefPtrWillBeMember<EventTarget>> m_nodeUnderPointer;
+ WillBeHeapHashMap<int, EventTargetAttributes> m_nodeUnderPointer;
+ PointerCapturingMap m_pointerCaptureTarget;
+ PointerCapturingMap m_pendingPointerCaptureTarget;
PointerEventFactory m_pointerEventFactory;
};
« no previous file with comments | « third_party/WebKit/Source/core/input/EventHandler.cpp ('k') | third_party/WebKit/Source/core/input/PointerEventManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698