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

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

Issue 2646163002: Remove PlatformTouchEvent/Point and use WebTouchEvent/Point instead (Closed)
Patch Set: Fix nit Created 3 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
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 "public/platform/WebInputEventResult.h" 10 #include "public/platform/WebInputEventResult.h"
11 #include "public/platform/WebTouchPoint.h"
11 #include "wtf/Allocator.h" 12 #include "wtf/Allocator.h"
12 #include "wtf/HashMap.h" 13 #include "wtf/HashMap.h"
13 14
14 namespace blink { 15 namespace blink {
15 16
16 class LocalFrame; 17 class LocalFrame;
17 class Document; 18 class Document;
18 class PlatformTouchEvent; 19 class WebTouchEvent;
19 20
20 // This class takes care of dispatching all touch events and 21 // This class takes care of dispatching all touch events and
21 // maintaining related states. 22 // maintaining related states.
22 class CORE_EXPORT TouchEventManager 23 class CORE_EXPORT TouchEventManager
23 : public GarbageCollectedFinalized<TouchEventManager> { 24 : public GarbageCollectedFinalized<TouchEventManager> {
24 WTF_MAKE_NONCOPYABLE(TouchEventManager); 25 WTF_MAKE_NONCOPYABLE(TouchEventManager);
25 26
26 public: 27 public:
27 class TouchInfo { 28 class TouchInfo {
28 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); 29 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
29 30
30 public: 31 public:
31 DEFINE_INLINE_TRACE() { 32 DEFINE_INLINE_TRACE() {
32 visitor->trace(touchNode); 33 visitor->trace(touchNode);
33 visitor->trace(targetFrame); 34 visitor->trace(targetFrame);
34 } 35 }
35 36
36 PlatformTouchPoint point; 37 WebTouchPoint point;
37 Member<Node> touchNode; 38 Member<Node> touchNode;
38 Member<LocalFrame> targetFrame; 39 Member<LocalFrame> targetFrame;
39 FloatPoint contentPoint; 40 FloatPoint contentPoint;
40 FloatSize adjustedRadius; 41 FloatSize adjustedRadius;
41 bool knownTarget; 42 bool knownTarget;
42 String region; 43 String region;
43 }; 44 };
44 45
45 explicit TouchEventManager(LocalFrame&); 46 explicit TouchEventManager(LocalFrame&);
46 DECLARE_TRACE(); 47 DECLARE_TRACE();
47 48
48 // Does the hit-testing again if the original hit test result was not inside 49 // Does the hit-testing again if the original hit test result was not inside
49 // capturing frame for touch events. Returns true if touch events could be 50 // capturing frame for touch events. Returns true if touch events could be
50 // dispatched and otherwise returns false. 51 // dispatched and otherwise returns false.
51 bool reHitTestTouchPointsIfNeeded(const PlatformTouchEvent&, 52 bool reHitTestTouchPointsIfNeeded(const WebTouchEvent&,
52 HeapVector<TouchInfo>&); 53 HeapVector<TouchInfo>&);
53 54
54 // The TouchInfo array is reference just to prevent the copy. However, it 55 // The TouchInfo array is reference just to prevent the copy. However, it
55 // cannot be const as this function might change some of the properties in 56 // cannot be const as this function might change some of the properties in
56 // TouchInfo objects. 57 // TouchInfo objects.
57 WebInputEventResult handleTouchEvent(const PlatformTouchEvent&, 58 WebInputEventResult handleTouchEvent(const WebTouchEvent&,
58 HeapVector<TouchInfo>&); 59 HeapVector<TouchInfo>&);
59 60
60 // Resets the internal state of this object. 61 // Resets the internal state of this object.
61 void clear(); 62 void clear();
62 63
63 // Returns whether there is any touch on the screen. 64 // Returns whether there is any touch on the screen.
64 bool isAnyTouchActive() const; 65 bool isAnyTouchActive() const;
65 66
66 private: 67 private:
67 void updateTargetAndRegionMapsForTouchStarts(HeapVector<TouchInfo>&); 68 void updateTargetAndRegionMapsForTouchStarts(HeapVector<TouchInfo>&);
68 void setAllPropertiesOfTouchInfos(HeapVector<TouchInfo>&); 69 void setAllPropertiesOfTouchInfos(HeapVector<TouchInfo>&);
69 70
70 WebInputEventResult dispatchTouchEvents(const PlatformTouchEvent&, 71 WebInputEventResult dispatchTouchEvents(const WebTouchEvent&,
71 const HeapVector<TouchInfo>&, 72 const HeapVector<TouchInfo>&,
72 bool allTouchesReleased); 73 bool allTouchesReleased);
73 74
74 // NOTE: If adding a new field to this class please ensure that it is 75 // NOTE: If adding a new field to this class please ensure that it is
75 // cleared in |TouchEventManager::clear()|. 76 // cleared in |TouchEventManager::clear()|.
76 77
77 const Member<LocalFrame> m_frame; 78 const Member<LocalFrame> m_frame;
78 79
79 // The target of each active touch point indexed by the touch ID. 80 // The target of each active touch point indexed by the touch ID.
80 using TouchTargetMap = 81 using TouchTargetMap =
81 HeapHashMap<unsigned, 82 HeapHashMap<unsigned,
82 Member<Node>, 83 Member<Node>,
83 DefaultHash<unsigned>::Hash, 84 DefaultHash<unsigned>::Hash,
84 WTF::UnsignedWithZeroKeyHashTraits<unsigned>>; 85 WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
85 TouchTargetMap m_targetForTouchID; 86 TouchTargetMap m_targetForTouchID;
86 using TouchRegionMap = HashMap<unsigned, 87 using TouchRegionMap = HashMap<unsigned,
87 String, 88 String,
88 DefaultHash<unsigned>::Hash, 89 DefaultHash<unsigned>::Hash,
89 WTF::UnsignedWithZeroKeyHashTraits<unsigned>>; 90 WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
90 TouchRegionMap m_regionForTouchID; 91 TouchRegionMap m_regionForTouchID;
91 92
92 // If set, the document of the active touch sequence. Unset if no touch 93 // If set, the document of the active touch sequence. Unset if no touch
93 // sequence active. 94 // sequence active.
94 Member<Document> m_touchSequenceDocument; 95 Member<Document> m_touchSequenceDocument;
95 96
96 bool m_touchPressed; 97 bool m_touchPressed;
97 // The touch event currently being handled or NoType if none.
98 PlatformEvent::EventType m_currentEvent;
99 98
100 // The current touch action, computed on each touch start and is 99 // The current touch action, computed on each touch start and is
101 // a union of all touches. Reset when all touches are released. 100 // a union of all touches. Reset when all touches are released.
102 TouchAction m_currentTouchAction; 101 TouchAction m_currentTouchAction;
103 }; 102 };
104 103
105 } // namespace blink 104 } // namespace blink
106 105
107 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::TouchEventManager::TouchInfo); 106 WTF_ALLOW_INIT_WITH_MEM_FUNCTIONS(blink::TouchEventManager::TouchInfo);
108 107
109 #endif // TouchEventManager_h 108 #endif // TouchEventManager_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698