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

Side by Side Diff: third_party/WebKit/Source/core/input/PointerEventManager.cpp

Issue 1703113003: Fix non-Oilpan PassRefPtr<> usage following r375261. (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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 ASSERT_NOT_REACHED(); 51 ASSERT_NOT_REACHED();
52 return emptyAtom; 52 return emptyAtom;
53 } 53 }
54 54
55 bool isInDocument(PassRefPtrWillBeRawPtr<EventTarget> n) 55 bool isInDocument(PassRefPtrWillBeRawPtr<EventTarget> n)
56 { 56 {
57 return n && n->toNode() && n->toNode()->inDocument(); 57 return n && n->toNode() && n->toNode()->inDocument();
58 } 58 }
59 59
60 WebInputEventResult dispatchPointerEvent( 60 WebInputEventResult dispatchPointerEvent(
61 PassRefPtrWillBeRawPtr<EventTarget> target, 61 PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
62 PassRefPtrWillBeRawPtr<PointerEvent> pointerevent, 62 PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
63 bool checkForListener = false) 63 bool checkForListener = false)
64 { 64 {
65 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
66 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
65 if (!RuntimeEnabledFeatures::pointerEventEnabled()) 67 if (!RuntimeEnabledFeatures::pointerEventEnabled())
66 return WebInputEventResult::NotHandled; 68 return WebInputEventResult::NotHandled;
67 if (!checkForListener || target->hasEventListeners(pointerevent->type())) { 69 if (!checkForListener || target->hasEventListeners(pointerEvent->type())) {
68 bool dispatchResult = target->dispatchEvent(pointerevent); 70 bool dispatchResult = target->dispatchEvent(pointerEvent);
69 return EventHandler::eventToEventResult(pointerevent, dispatchResult); 71 return EventHandler::eventToEventResult(pointerEvent, dispatchResult);
70 } 72 }
71 return WebInputEventResult::NotHandled; 73 return WebInputEventResult::NotHandled;
72 } 74 }
73 75
74 WebInputEventResult dispatchMouseEvent( 76 WebInputEventResult dispatchMouseEvent(
75 PassRefPtrWillBeRawPtr<EventTarget> target, 77 PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
76 const AtomicString& mouseEventType, 78 const AtomicString& mouseEventType,
77 const PlatformMouseEvent& mouseEvent, 79 const PlatformMouseEvent& mouseEvent,
78 PassRefPtrWillBeRawPtr<EventTarget> relatedTarget, 80 PassRefPtrWillBeRawPtr<EventTarget> prpRelatedTarget,
79 int detail = 0, 81 int detail = 0,
80 bool checkForListener = false) 82 bool checkForListener = false)
81 { 83 {
84 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
85 RefPtrWillBeRawPtr<EventTarget> relatedTarget = prpRelatedTarget;
82 if (target->toNode() 86 if (target->toNode()
83 && (!checkForListener || target->hasEventListeners(mouseEventType))) { 87 && (!checkForListener || target->hasEventListeners(mouseEventType))) {
84 RefPtrWillBeRawPtr<Node> targetNode = target->toNode(); 88 RefPtrWillBeRawPtr<Node> targetNode = target->toNode();
85 RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(mouseEventType , 89 RefPtrWillBeRawPtr<MouseEvent> event = MouseEvent::create(mouseEventType ,
86 targetNode->document().domWindow(), mouseEvent, detail, 90 targetNode->document().domWindow(), mouseEvent, detail,
87 relatedTarget ? relatedTarget->toNode() : nullptr); 91 relatedTarget ? relatedTarget->toNode() : nullptr);
88 bool res = target->dispatchEvent(event); 92 bool res = target->dispatchEvent(event);
89 return EventHandler::eventToEventResult(event, res); 93 return EventHandler::eventToEventResult(event, res);
90 } 94 }
91 return WebInputEventResult::NotHandled; 95 return WebInputEventResult::NotHandled;
(...skipping 17 matching lines...) Expand all
109 const PlatformMouseEvent& mouseEvent, 113 const PlatformMouseEvent& mouseEvent,
110 PassRefPtrWillBeRawPtr<AbstractView> view) 114 PassRefPtrWillBeRawPtr<AbstractView> view)
111 { 115 {
112 // Pointer event type does not matter as it will be overridden in the sendNo deTransitionEvents 116 // Pointer event type does not matter as it will be overridden in the sendNo deTransitionEvents
113 sendNodeTransitionEvents(exitedNode, enteredNode, 117 sendNodeTransitionEvents(exitedNode, enteredNode,
114 m_pointerEventFactory.create(EventTypeNames::pointerout, mouseEvent, nul lptr, view), 118 m_pointerEventFactory.create(EventTypeNames::pointerout, mouseEvent, nul lptr, view),
115 mouseEvent, true); 119 mouseEvent, true);
116 } 120 }
117 121
118 void PointerEventManager::sendNodeTransitionEvents( 122 void PointerEventManager::sendNodeTransitionEvents(
119 PassRefPtrWillBeRawPtr<EventTarget> exitedTarget, 123 PassRefPtrWillBeRawPtr<EventTarget> prpExitedTarget,
120 PassRefPtrWillBeRawPtr<EventTarget> enteredTarget, 124 PassRefPtrWillBeRawPtr<EventTarget> prpEnteredTarget,
121 PassRefPtrWillBeRawPtr<PointerEvent> pointerEvent, 125 PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
122 const PlatformMouseEvent& mouseEvent, bool sendMouseEvent) 126 const PlatformMouseEvent& mouseEvent, bool sendMouseEvent)
123 { 127 {
128 RefPtrWillBeRawPtr<EventTarget> exitedTarget = prpExitedTarget;
129 RefPtrWillBeRawPtr<EventTarget> enteredTarget = prpEnteredTarget;
130 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
124 if (exitedTarget == enteredTarget) 131 if (exitedTarget == enteredTarget)
125 return; 132 return;
126 133
127 // Dispatch pointerout/mouseout events 134 // Dispatch pointerout/mouseout events
128 if (isInDocument(exitedTarget)) { 135 if (isInDocument(exitedTarget)) {
129 dispatchPointerEvent(exitedTarget, m_pointerEventFactory.create( 136 dispatchPointerEvent(exitedTarget, m_pointerEventFactory.create(
130 pointerEvent, EventTypeNames::pointerout, enteredTarget)); 137 pointerEvent, EventTypeNames::pointerout, enteredTarget));
131 if (sendMouseEvent) { 138 if (sendMouseEvent) {
132 dispatchMouseEvent(exitedTarget, 139 dispatchMouseEvent(exitedTarget,
133 EventTypeNames::mouseout, mouseEvent, enteredTarget); 140 EventTypeNames::mouseout, mouseEvent, enteredTarget);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 !enteredNodeHasCapturingAncestor); 238 !enteredNodeHasCapturingAncestor);
232 if (sendMouseEvent) { 239 if (sendMouseEvent) {
233 dispatchMouseEvent(enteredAncestors[i-1].get(), 240 dispatchMouseEvent(enteredAncestors[i-1].get(),
234 EventTypeNames::mouseenter, mouseEvent, exitedTarget, 241 EventTypeNames::mouseenter, mouseEvent, exitedTarget,
235 0, !enteredNodeHasCapturingAncestor); 242 0, !enteredNodeHasCapturingAncestor);
236 } 243 }
237 } 244 }
238 } 245 }
239 246
240 void PointerEventManager::setNodeUnderPointer( 247 void PointerEventManager::setNodeUnderPointer(
241 PassRefPtrWillBeRawPtr<PointerEvent> pointerevent, 248 PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent,
242 PassRefPtrWillBeRawPtr<EventTarget> target) 249 PassRefPtrWillBeRawPtr<EventTarget> prpTarget)
243 { 250 {
244 if (m_nodeUnderPointer.contains(pointerevent->pointerId())) { 251 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
252 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
253 if (m_nodeUnderPointer.contains(pointerEvent->pointerId())) {
245 sendNodeTransitionEvents(m_nodeUnderPointer.get( 254 sendNodeTransitionEvents(m_nodeUnderPointer.get(
246 pointerevent->pointerId()), target, pointerevent); 255 pointerEvent->pointerId()), target, pointerEvent);
247 if (!target) 256 if (!target)
248 m_nodeUnderPointer.remove(pointerevent->pointerId()); 257 m_nodeUnderPointer.remove(pointerEvent->pointerId());
249 else 258 else
250 m_nodeUnderPointer.set(pointerevent->pointerId(), target); 259 m_nodeUnderPointer.set(pointerEvent->pointerId(), target);
251 } else if (target) { 260 } else if (target) {
252 sendNodeTransitionEvents(nullptr, target, pointerevent); 261 sendNodeTransitionEvents(nullptr, target, pointerEvent);
253 m_nodeUnderPointer.add(pointerevent->pointerId(), target); 262 m_nodeUnderPointer.add(pointerEvent->pointerId(), target);
254 } 263 }
255 } 264 }
256 265
257 void PointerEventManager::sendTouchCancelPointerEvent(PassRefPtrWillBeRawPtr<Eve ntTarget> target, 266 void PointerEventManager::sendTouchCancelPointerEvent(PassRefPtrWillBeRawPtr<Eve ntTarget> target,
258 const PlatformTouchPoint& point) 267 const PlatformTouchPoint& point)
259 { 268 {
260 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = 269 RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
261 m_pointerEventFactory.createPointerCancel(point); 270 m_pointerEventFactory.createPointerCancel(point);
262 271
263 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing 272 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing
264 target->dispatchEvent(pointerEvent.get()); 273 target->dispatchEvent(pointerEvent.get());
265 274
266 m_pointerEventFactory.remove(pointerEvent); 275 m_pointerEventFactory.remove(pointerEvent);
267 setNodeUnderPointer(pointerEvent, nullptr); 276 setNodeUnderPointer(pointerEvent, nullptr);
268 } 277 }
269 278
270 WebInputEventResult PointerEventManager::sendTouchPointerEvent( 279 WebInputEventResult PointerEventManager::sendTouchPointerEvent(
271 PassRefPtrWillBeRawPtr<EventTarget> target, 280 PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
272 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, 281 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers,
273 const double width, const double height, 282 const double width, const double height,
274 const double clientX, const double clientY) 283 const double clientX, const double clientY)
275 { 284 {
285 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
276 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = 286 RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
277 m_pointerEventFactory.create( 287 m_pointerEventFactory.create(
278 pointerEventNameForTouchPointState(touchPoint.state()), 288 pointerEventNameForTouchPointState(touchPoint.state()),
279 touchPoint, modifiers, width, height, clientX, clientY); 289 touchPoint, modifiers, width, height, clientX, clientY);
280 290
281 setNodeUnderPointer(pointerEvent, target); 291 setNodeUnderPointer(pointerEvent, target);
282 292
283 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing 293 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing
284 WebInputEventResult result = dispatchPointerEvent(target, pointerEvent.get() ); 294 WebInputEventResult result = dispatchPointerEvent(target, pointerEvent.get() );
285 295
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 368
359 DEFINE_TRACE(PointerEventManager) 369 DEFINE_TRACE(PointerEventManager)
360 { 370 {
361 #if ENABLE(OILPAN) 371 #if ENABLE(OILPAN)
362 visitor->trace(m_nodeUnderPointer); 372 visitor->trace(m_nodeUnderPointer);
363 #endif 373 #endif
364 } 374 }
365 375
366 376
367 } // namespace blink 377 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698