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

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

Issue 1800143002: Notify Blink about start of gesture scroll through a queued event. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
OLDNEW
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/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 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 EventTargetAttributes(target, false)); 267 EventTargetAttributes(target, false));
268 } 268 }
269 sendNodeTransitionEvents(node.target, target, pointerEvent); 269 sendNodeTransitionEvents(node.target, target, pointerEvent);
270 } else if (target) { 270 } else if (target) {
271 m_nodeUnderPointer.add(pointerEvent->pointerId(), 271 m_nodeUnderPointer.add(pointerEvent->pointerId(),
272 EventTargetAttributes(target, false)); 272 EventTargetAttributes(target, false));
273 sendNodeTransitionEvents(nullptr, target, pointerEvent); 273 sendNodeTransitionEvents(nullptr, target, pointerEvent);
274 } 274 }
275 } 275 }
276 276
277 void PointerEventManager::sendTouchCancelPointerEvent(PassRefPtrWillBeRawPtr<Eve ntTarget> prpTarget, const PlatformTouchPoint& point) 277 void PointerEventManager::blockTouchPointers()
278 { 278 {
279 RefPtrWillBeRawPtr<EventTarget> target = prpTarget; 279 if (m_inCanceledStateForPointerTypeTouch)
280 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventFactory.create PointerCancel(point); 280 return;
281 m_inCanceledStateForPointerTypeTouch = true;
281 282
282 processPendingPointerCapture(pointerEvent, target); 283 for (int pointerId : m_pointerEventFactory.getPointerIdsOfType(WebPointerPro perties::PointerType::Touch)) {
284 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = m_pointerEventFactory.cr eatePointerCancel(
285 pointerId, WebPointerProperties::PointerType::Touch);
283 286
284 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturing v s pointer event capturing 287 ASSERT(m_nodeUnderPointer.contains(pointerId));
285 dispatchPointerEvent( 288 RefPtrWillBeRawPtr<EventTarget> target = m_nodeUnderPointer.get(pointerI d).target;
286 getEffectiveTargetForPointerEvent(target, pointerEvent->pointerId()),
287 pointerEvent.get());
288 289
289 setNodeUnderPointer(pointerEvent, nullptr); 290 // TODO(nzolghadr): crbug.com/579553 dealing with implicit touch capturi ng vs pointer event capturing
291 target->dispatchEvent(pointerEvent.get());
290 292
291 removePointer(pointerEvent); 293 m_pointerEventFactory.remove(pointerId);
294 setNodeUnderPointer(pointerEvent, nullptr);
295 }
296 }
297
298 void PointerEventManager::unblockTouchPointers()
299 {
300 m_inCanceledStateForPointerTypeTouch = false;
292 } 301 }
293 302
294 WebInputEventResult PointerEventManager::sendTouchPointerEvent( 303 WebInputEventResult PointerEventManager::sendTouchPointerEvent(
295 PassRefPtrWillBeRawPtr<EventTarget> prpTarget, 304 PassRefPtrWillBeRawPtr<EventTarget> prpTarget,
296 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers, 305 const PlatformTouchPoint& touchPoint, PlatformEvent::Modifiers modifiers,
297 const double width, const double height, 306 const double width, const double height,
298 const double clientX, const double clientY) 307 const double clientX, const double clientY)
299 { 308 {
309 if (m_inCanceledStateForPointerTypeTouch)
310 return WebInputEventResult::NotHandled;
311
300 RefPtrWillBeRawPtr<EventTarget> target = prpTarget; 312 RefPtrWillBeRawPtr<EventTarget> target = prpTarget;
301 313
302 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = 314 RefPtrWillBeRawPtr<PointerEvent> pointerEvent =
303 m_pointerEventFactory.create( 315 m_pointerEventFactory.create(
304 pointerEventNameForTouchPointState(touchPoint.state()), 316 pointerEventNameForTouchPointState(touchPoint.state()),
305 touchPoint, modifiers, width, height, clientX, clientY); 317 touchPoint, modifiers, width, height, clientX, clientY);
306 318
307 processPendingPointerCapture(pointerEvent, target); 319 processPendingPointerCapture(pointerEvent, target);
308 320
309 setNodeUnderPointer(pointerEvent, target); 321 setNodeUnderPointer(pointerEvent, target);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 clear(); 377 clear();
366 } 378 }
367 379
368 PointerEventManager::~PointerEventManager() 380 PointerEventManager::~PointerEventManager()
369 { 381 {
370 } 382 }
371 383
372 void PointerEventManager::clear() 384 void PointerEventManager::clear()
373 { 385 {
374 m_preventMouseEventForPointerTypeMouse = false; 386 m_preventMouseEventForPointerTypeMouse = false;
387 m_inCanceledStateForPointerTypeTouch = false;
375 m_pointerEventFactory.clear(); 388 m_pointerEventFactory.clear();
376 m_nodeUnderPointer.clear(); 389 m_nodeUnderPointer.clear();
377 } 390 }
378 391
379 void PointerEventManager::conditionallyEnableMouseEventForPointerTypeMouse( 392 void PointerEventManager::conditionallyEnableMouseEventForPointerTypeMouse(
380 unsigned modifiers) 393 unsigned modifiers)
381 { 394 {
382 395
383 if (MouseEvent::platformModifiersToButtons(modifiers) == 396 if (MouseEvent::platformModifiersToButtons(modifiers) ==
384 static_cast<unsigned short>(MouseEvent::Buttons::None)) 397 static_cast<unsigned short>(MouseEvent::Buttons::None))
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 { 460 {
448 if (m_pointerCaptureTarget.contains(pointerId)) 461 if (m_pointerCaptureTarget.contains(pointerId))
449 return m_pointerCaptureTarget.get(pointerId); 462 return m_pointerCaptureTarget.get(pointerId);
450 return nullptr; 463 return nullptr;
451 } 464 }
452 465
453 void PointerEventManager::removePointer( 466 void PointerEventManager::removePointer(
454 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent) 467 const PassRefPtrWillBeRawPtr<PointerEvent> prpPointerEvent)
455 { 468 {
456 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent; 469 RefPtrWillBeRawPtr<PointerEvent> pointerEvent = prpPointerEvent;
457 if (m_pointerEventFactory.remove(pointerEvent)) { 470 int pointerId = pointerEvent->pointerId();
458 int pointerId = pointerEvent->pointerId(); 471 if (m_pointerEventFactory.remove(pointerId)) {
459 m_pendingPointerCaptureTarget.remove(pointerId); 472 m_pendingPointerCaptureTarget.remove(pointerId);
460 m_pointerCaptureTarget.remove(pointerId); 473 m_pointerCaptureTarget.remove(pointerId);
461 m_nodeUnderPointer.remove(pointerId); 474 m_nodeUnderPointer.remove(pointerId);
462 } 475 }
463 } 476 }
464 477
465 void PointerEventManager::elementRemoved(EventTarget* target) 478 void PointerEventManager::elementRemoved(EventTarget* target)
466 { 479 {
467 removeTargetFromPointerCapturingMapping(m_pointerCaptureTarget, target); 480 removeTargetFromPointerCapturingMapping(m_pointerCaptureTarget, target);
468 removeTargetFromPointerCapturingMapping(m_pendingPointerCaptureTarget, targe t); 481 removeTargetFromPointerCapturingMapping(m_pendingPointerCaptureTarget, targe t);
(...skipping 26 matching lines...) Expand all
495 { 508 {
496 #if ENABLE(OILPAN) 509 #if ENABLE(OILPAN)
497 visitor->trace(m_nodeUnderPointer); 510 visitor->trace(m_nodeUnderPointer);
498 visitor->trace(m_pointerCaptureTarget); 511 visitor->trace(m_pointerCaptureTarget);
499 visitor->trace(m_pendingPointerCaptureTarget); 512 visitor->trace(m_pendingPointerCaptureTarget);
500 #endif 513 #endif
501 } 514 }
502 515
503 516
504 } // namespace blink 517 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698