OLD | NEW |
---|---|
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/TouchEventManager.h" | 5 #include "core/input/TouchEventManager.h" |
6 | 6 |
7 #include "core/dom/Document.h" | 7 #include "core/dom/Document.h" |
8 #include "core/events/TouchEvent.h" | 8 #include "core/events/TouchEvent.h" |
9 #include "core/frame/Deprecation.h" | 9 #include "core/frame/Deprecation.h" |
10 #include "core/frame/EventHandlerRegistry.h" | 10 #include "core/frame/EventHandlerRegistry.h" |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
119 | 119 |
120 WebInputEventResult TouchEventManager::dispatchTouchEvents( | 120 WebInputEventResult TouchEventManager::dispatchTouchEvents( |
121 const WebTouchEvent& event, | 121 const WebTouchEvent& event, |
122 const HeapVector<TouchInfo>& touchInfos, | 122 const HeapVector<TouchInfo>& touchInfos, |
123 bool allTouchesReleased) { | 123 bool allTouchesReleased) { |
124 // Build up the lists to use for the |touches|, |targetTouches| and | 124 // Build up the lists to use for the |touches|, |targetTouches| and |
125 // |changedTouches| attributes in the JS event. See | 125 // |changedTouches| attributes in the JS event. See |
126 // http://www.w3.org/TR/touch-events/#touchevent-interface for how these | 126 // http://www.w3.org/TR/touch-events/#touchevent-interface for how these |
127 // lists fit together. | 127 // lists fit together. |
128 | 128 |
129 // Suppress all the touch moves in the slop region. | 129 // Suppress the touch moves in the slop region when |
mustaq
2017/02/17 15:24:01
Lines 129-130 are meaningless now. Please delete.
lanwei
2017/02/21 18:10:04
Done.
| |
130 if (IsTouchSequenceStart(event)) | 130 // m_suppressingTouchmovesWithinSlop is true. |
131 m_suppressingTouchmovesWithinSlop = true; | |
132 | |
133 if (event.type() == WebInputEvent::TouchEnd || | 131 if (event.type() == WebInputEvent::TouchEnd || |
134 event.type() == WebInputEvent::TouchCancel || event.touchesLength > 1) { | 132 event.type() == WebInputEvent::TouchCancel || event.touchesLength > 1) { |
135 m_suppressingTouchmovesWithinSlop = false; | 133 m_suppressingTouchmovesWithinSlop = false; |
136 } | 134 } |
137 | 135 |
138 if (m_suppressingTouchmovesWithinSlop && | 136 if (m_suppressingTouchmovesWithinSlop && |
139 event.type() == WebInputEvent::TouchMove) { | 137 event.type() == WebInputEvent::TouchMove) { |
140 if (!event.movedBeyondSlopRegion) | 138 if (!event.movedBeyondSlopRegion) |
141 return WebInputEventResult::HandledSuppressed; | 139 return WebInputEventResult::HandledSuppressed; |
142 m_suppressingTouchmovesWithinSlop = false; | 140 m_suppressingTouchmovesWithinSlop = false; |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
285 ? HandledTouches | 283 ? HandledTouches |
286 : UnhandledTouches); | 284 : UnhandledTouches); |
287 } | 285 } |
288 } | 286 } |
289 eventResult = EventHandlingUtil::mergeEventResult( | 287 eventResult = EventHandlingUtil::mergeEventResult( |
290 eventResult, | 288 eventResult, |
291 EventHandlingUtil::toWebInputEventResult(domDispatchResult)); | 289 EventHandlingUtil::toWebInputEventResult(domDispatchResult)); |
292 } | 290 } |
293 } | 291 } |
294 | 292 |
293 // Do not suppress any touchmoves if the touchstart is consumed. | |
294 if (IsTouchSequenceStart(event) && | |
295 eventResult == WebInputEventResult::NotHandled) { | |
296 m_suppressingTouchmovesWithinSlop = true; | |
297 } | |
298 | |
295 return eventResult; | 299 return eventResult; |
296 } | 300 } |
297 | 301 |
298 void TouchEventManager::updateTargetAndRegionMapsForTouchStarts( | 302 void TouchEventManager::updateTargetAndRegionMapsForTouchStarts( |
299 HeapVector<TouchInfo>& touchInfos) { | 303 HeapVector<TouchInfo>& touchInfos) { |
300 for (auto& touchInfo : touchInfos) { | 304 for (auto& touchInfo : touchInfos) { |
301 // Touch events implicitly capture to the touched node, and don't change | 305 // Touch events implicitly capture to the touched node, and don't change |
302 // active/hover states themselves (Gesture events do). So we only need | 306 // active/hover states themselves (Gesture events do). So we only need |
303 // to hit-test on touchstart and when the target could be different than | 307 // to hit-test on touchstart and when the target could be different than |
304 // the corresponding pointer event target. | 308 // the corresponding pointer event target. |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
512 } | 516 } |
513 | 517 |
514 return dispatchTouchEvents(event, touchInfos, allTouchesReleased); | 518 return dispatchTouchEvents(event, touchInfos, allTouchesReleased); |
515 } | 519 } |
516 | 520 |
517 bool TouchEventManager::isAnyTouchActive() const { | 521 bool TouchEventManager::isAnyTouchActive() const { |
518 return m_touchPressed; | 522 return m_touchPressed; |
519 } | 523 } |
520 | 524 |
521 } // namespace blink | 525 } // namespace blink |
OLD | NEW |