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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/input/TouchEventManager.h
diff --git a/third_party/WebKit/Source/core/input/TouchEventManager.h b/third_party/WebKit/Source/core/input/TouchEventManager.h
index d1a953024fa22033c7cc8618bb244ffbc3632342..289ec095c4cec6193074314835e28df036c5c871 100644
--- a/third_party/WebKit/Source/core/input/TouchEventManager.h
+++ b/third_party/WebKit/Source/core/input/TouchEventManager.h
@@ -12,14 +12,15 @@
#include "platform/wtf/Allocator.h"
#include "platform/wtf/HashMap.h"
#include "platform/wtf/Vector.h"
+#include "public/platform/WebCoalescedInputEvent.h"
#include "public/platform/WebInputEventResult.h"
+#include "public/platform/WebPointerEvent.h"
#include "public/platform/WebTouchPoint.h"
namespace blink {
class LocalFrame;
class Document;
-class WebTouchEvent;
// This class takes care of dispatching all touch events and
// maintaining related states.
@@ -32,12 +33,11 @@ class CORE_EXPORT TouchEventManager
explicit TouchEventManager(LocalFrame&);
DECLARE_TRACE();
- // The entries in touch point array of WebTouchEvent (i.e. first parameter)
- // correspond to the entries of the PointerEventTargets (i.e. last parameter).
- WebInputEventResult HandleTouchEvent(
- const WebTouchEvent&,
- const Vector<WebTouchEvent>&,
- const HeapVector<EventHandlingUtil::PointerEventTarget>&);
+ void HandleTouchPoint(const WebPointerEvent&,
+ const Vector<WebPointerEvent>&,
+ const EventHandlingUtil::PointerEventTarget&);
+
+ WebInputEventResult HandleVSyncSignal();
// Resets the internal state of this object.
void Clear();
@@ -46,46 +46,55 @@ class CORE_EXPORT TouchEventManager
bool IsAnyTouchActive() const;
private:
- Touch* CreateDomTouch(const WebTouchPoint&, bool* known_target);
-
- void UpdateTargetAndRegionMapsForTouchStart(
- const WebTouchPoint&,
+ class TouchPointAttributes
+ : public GarbageCollectedFinalized<TouchPointAttributes> {
+ public:
+ DEFINE_INLINE_TRACE() { visitor->Trace(target_); }
+
+ TouchPointAttributes() {}
+ explicit TouchPointAttributes(WebPointerEvent event)
+ : event_(event), stale_(false) {}
+
+ // Last state of the touch point.
+ WebPointerEvent event_;
+ // 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.
+ // each frame this list gets cleared.
+ Vector<WebPointerEvent> coalesced_events_;
+ Member<Node> target_; // The target of each active touch point.
+ String region_; // // The region of each active touch point.
+ bool stale_;
+ };
+
+ WebCoalescedInputEvent GenerateWebCoalescedInputEvent();
+ Touch* CreateDomTouch(const TouchPointAttributes*, bool* known_target);
+ void allTouchesReleasedCleanup();
+
+ // Keeps track of attributes of the touch point in the
+ // |touch_points_attributes_| map and does the hit-testing if the original hit
+ // test result was not inside capturing frame |touch_sequence_document_| for
+ // touch events.
+ void UpdateTouchAttributeMapsForPointerDown(
+ const WebPointerEvent&,
const EventHandlingUtil::PointerEventTarget&);
- // Does the hit-testing if the original hit test result was not inside
- // capturing frame for touch events. Returns true if touch events could be
- // dispatched and otherwise returns false.
- bool HitTestTouchPointsIfNeeded(
- const WebTouchEvent&,
- const HeapVector<EventHandlingUtil::PointerEventTarget>&);
-
- WebInputEventResult DispatchTouchEvents(const WebTouchEvent&,
- const Vector<WebTouchEvent>&,
- bool all_touches_released);
+ WebInputEventResult DispatchTouchEvents();
mustaq 2017/06/09 16:12:29 Rename to something like DispatchAccumulatedTouchE
Navid Zolghadr 2017/06/12 16:17:32 Done.
// NOTE: If adding a new field to this class please ensure that it is
// cleared in |TouchEventManager::clear()|.
const Member<LocalFrame> frame_;
- // The target of each active touch point indexed by the touch ID.
- using TouchTargetMap =
- HeapHashMap<unsigned,
- Member<Node>,
- DefaultHash<unsigned>::Hash,
- WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
- TouchTargetMap target_for_touch_id_;
- using TouchRegionMap = HashMap<unsigned,
- String,
- DefaultHash<unsigned>::Hash,
- WTF::UnsignedWithZeroKeyHashTraits<unsigned>>;
- TouchRegionMap region_for_touch_id_;
+ 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.
+ HeapHashMap<int,
+ Member<TouchPointAttributes>,
+ WTF::IntHash<int>,
+ WTF::UnsignedWithZeroKeyHashTraits<int>>;
+ 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.
// If set, the document of the active touch sequence. Unset if no touch
// sequence active.
Member<Document> touch_sequence_document_;
- bool touch_pressed_;
bool suppressing_touchmoves_within_slop_;
// The current touch action, computed on each touch start and is

Powered by Google App Engine
This is Rietveld 408576698