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 3008398da7fec124070ee00ff75e309bcb4053fd..e9e0f4a3aeac9e8011e9dcb583f77e35e8dc49dc 100644 |
--- a/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
+++ b/third_party/WebKit/Source/core/input/PointerEventManager.cpp |
@@ -607,6 +607,25 @@ void PointerEventManager::ProcessPendingPointerCapture( |
} |
} |
+void PointerEventManager::DispatchLostPointerCaptureEvent( |
+ const WebMouseEvent& mouse_event, |
+ const Vector<WebMouseEvent>& coalesced_events) { |
+ PointerEvent* pointer_event = pointer_event_factory_.Create( |
+ EventTypeNames::mousemove, mouse_event, coalesced_events, |
+ frame_->GetDocument()->domWindow()); |
+ if (EventTarget* capturing_target = |
+ GetCapturingNode(pointer_event->pointerId())) { |
+ if (capturing_target->ToNode() && |
+ !capturing_target->ToNode()->isConnected()) { |
+ capturing_target = capturing_target->ToNode()->ownerDocument(); |
+ } |
+ DispatchPointerEvent( |
+ capturing_target, |
+ pointer_event_factory_.CreatePointerCaptureEvent( |
+ pointer_event, EventTypeNames::lostpointercapture)); |
+ } |
+} |
+ |
void PointerEventManager::RemoveTargetFromPointerCapturingMapping( |
PointerCapturingMap& map, |
const EventTarget* target) { |
@@ -666,6 +685,10 @@ void PointerEventManager::ReleasePointerCapture(int pointer_id, |
ReleasePointerCapture(pointer_id); |
} |
+void PointerEventManager::ReleaseMousePointerCapture() { |
+ ReleasePointerCapture(PointerEventFactory::kMouseId); |
+} |
+ |
bool PointerEventManager::HasPointerCapture(int pointer_id, |
const EventTarget* target) const { |
return pending_pointer_capture_target_.at(pointer_id) == target; |