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

Side by Side Diff: third_party/WebKit/Source/core/input/TouchEventManager.h

Issue 2860663006: Remove WebTouchEvent from TouchEventManager APIs (Closed)
Patch Set: Apply the comments Created 3 years, 6 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 #ifndef TouchEventManager_h 5 #ifndef TouchEventManager_h
6 #define TouchEventManager_h 6 #define TouchEventManager_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/events/PointerEventFactory.h" 9 #include "core/events/PointerEventFactory.h"
10 #include "core/input/EventHandlingUtil.h" 10 #include "core/input/EventHandlingUtil.h"
11 #include "platform/graphics/TouchAction.h" 11 #include "platform/graphics/TouchAction.h"
12 #include "platform/wtf/Allocator.h" 12 #include "platform/wtf/Allocator.h"
13 #include "platform/wtf/HashMap.h" 13 #include "platform/wtf/HashMap.h"
14 #include "platform/wtf/Vector.h" 14 #include "platform/wtf/Vector.h"
15 #include "public/platform/WebCoalescedInputEvent.h"
15 #include "public/platform/WebInputEventResult.h" 16 #include "public/platform/WebInputEventResult.h"
17 #include "public/platform/WebPointerEvent.h"
16 #include "public/platform/WebTouchPoint.h" 18 #include "public/platform/WebTouchPoint.h"
17 19
18 namespace blink { 20 namespace blink {
19 21
20 class LocalFrame; 22 class LocalFrame;
21 class Document; 23 class Document;
22 class WebTouchEvent;
23 24
24 // This class takes care of dispatching all touch events and 25 // This class takes care of dispatching all touch events and
25 // maintaining related states. 26 // maintaining related states.
26 class CORE_EXPORT TouchEventManager 27 class CORE_EXPORT TouchEventManager
27 : public GarbageCollectedFinalized<TouchEventManager> { 28 : public GarbageCollectedFinalized<TouchEventManager> {
28 WTF_MAKE_NONCOPYABLE(TouchEventManager); 29 WTF_MAKE_NONCOPYABLE(TouchEventManager);
29 30
30 public: 31 public:
31 32
32 explicit TouchEventManager(LocalFrame&); 33 explicit TouchEventManager(LocalFrame&);
33 DECLARE_TRACE(); 34 DECLARE_TRACE();
34 35
35 // The entries in touch point array of WebTouchEvent (i.e. first parameter) 36 void HandleTouchPoint(const WebPointerEvent&,
36 // correspond to the entries of the PointerEventTargets (i.e. last parameter). 37 const Vector<WebPointerEvent>&,
37 WebInputEventResult HandleTouchEvent( 38 const EventHandlingUtil::PointerEventTarget&);
38 const WebTouchEvent&, 39
39 const Vector<WebTouchEvent>&, 40 WebInputEventResult HandleVSyncSignal();
40 const HeapVector<EventHandlingUtil::PointerEventTarget>&);
41 41
42 // Resets the internal state of this object. 42 // Resets the internal state of this object.
43 void Clear(); 43 void Clear();
44 44
45 // Returns whether there is any touch on the screen. 45 // Returns whether there is any touch on the screen.
46 bool IsAnyTouchActive() const; 46 bool IsAnyTouchActive() const;
47 47
48 private: 48 private:
49 Touch* CreateDomTouch(const WebTouchPoint&, bool* known_target); 49 class TouchPointAttributes
50 : public GarbageCollectedFinalized<TouchPointAttributes> {
51 public:
52 DEFINE_INLINE_TRACE() { visitor->Trace(target_); }
50 53
51 void UpdateTargetAndRegionMapsForTouchStart( 54 TouchPointAttributes() {}
52 const WebTouchPoint&, 55 explicit TouchPointAttributes(WebPointerEvent event)
56 : event_(event), stale_(false) {}
57
58 // Last state of the touch point.
59 WebPointerEvent event_;
60 // The list of coalesced events if there is any. Note that at the end of
mustaq 2017/06/09 16:12:27 Please clarify if this list include all TEs, or on
Navid Zolghadr 2017/06/12 16:17:32 Done.
61 // each frame this list gets cleared.
62 Vector<WebPointerEvent> coalesced_events_;
63 Member<Node> target_; // The target of each active touch point.
64 String region_; // // The region of each active touch point.
65 bool stale_;
66 };
67
68 WebCoalescedInputEvent GenerateWebCoalescedInputEvent();
69 Touch* CreateDomTouch(const TouchPointAttributes*, bool* known_target);
70 void allTouchesReleasedCleanup();
71
72 // Keeps track of attributes of the touch point in the
73 // |touch_points_attributes_| map and does the hit-testing if the original hit
74 // test result was not inside capturing frame |touch_sequence_document_| for
75 // touch events.
76 void UpdateTouchAttributeMapsForPointerDown(
77 const WebPointerEvent&,
53 const EventHandlingUtil::PointerEventTarget&); 78 const EventHandlingUtil::PointerEventTarget&);
54 79
55 // Does the hit-testing if the original hit test result was not inside 80 WebInputEventResult DispatchTouchEvents();
mustaq 2017/06/09 16:12:29 Rename to something like DispatchAccumulatedTouchE
Navid Zolghadr 2017/06/12 16:17:32 Done.
56 // capturing frame for touch events. Returns true if touch events could be
57 // dispatched and otherwise returns false.
58 bool HitTestTouchPointsIfNeeded(
59 const WebTouchEvent&,
60 const HeapVector<EventHandlingUtil::PointerEventTarget>&);
61
62 WebInputEventResult DispatchTouchEvents(const WebTouchEvent&,
63 const Vector<WebTouchEvent>&,
64 bool all_touches_released);
65 81
66 // NOTE: If adding a new field to this class please ensure that it is 82 // NOTE: If adding a new field to this class please ensure that it is
67 // cleared in |TouchEventManager::clear()|. 83 // cleared in |TouchEventManager::clear()|.
68 84
69 const Member<LocalFrame> frame_; 85 const Member<LocalFrame> frame_;
70 86
71 // The target of each active touch point indexed by the touch ID. 87 using TouchAttributeMap =
mustaq 2017/06/09 16:12:27 Please keep the past comment re "indexed by touch
Navid Zolghadr 2017/06/12 16:17:32 Done.
72 using TouchTargetMap = 88 HeapHashMap<int,
73 HeapHashMap<unsigned, 89 Member<TouchPointAttributes>,
74 Member<Node>, 90 WTF::IntHash<int>,
75 DefaultHash<unsigned>::Hash, 91 WTF::UnsignedWithZeroKeyHashTraits<int>>;
76 WTF::UnsignedWithZeroKeyHashTraits<unsigned>>; 92 TouchAttributeMap touch_points_attributes_;
mustaq 2017/06/09 16:12:29 Nit: I would avoid double plural in the name. s/to
Navid Zolghadr 2017/06/12 16:17:32 Done.
77 TouchTargetMap target_for_touch_id_;
78 using TouchRegionMap = HashMap<unsigned,
79 String,
80 DefaultHash<unsigned>::Hash,
81 WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
82 TouchRegionMap region_for_touch_id_;
83 93
84 // If set, the document of the active touch sequence. Unset if no touch 94 // If set, the document of the active touch sequence. Unset if no touch
85 // sequence active. 95 // sequence active.
86 Member<Document> touch_sequence_document_; 96 Member<Document> touch_sequence_document_;
87 97
88 bool touch_pressed_;
89 bool suppressing_touchmoves_within_slop_; 98 bool suppressing_touchmoves_within_slop_;
90 99
91 // The current touch action, computed on each touch start and is 100 // The current touch action, computed on each touch start and is
92 // a union of all touches. Reset when all touches are released. 101 // a union of all touches. Reset when all touches are released.
93 TouchAction current_touch_action_; 102 TouchAction current_touch_action_;
94 }; 103 };
95 104
96 } // namespace blink 105 } // namespace blink
97 106
98 #endif // TouchEventManager_h 107 #endif // TouchEventManager_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698