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

Unified Diff: third_party/WebKit/Source/core/input/TouchEventManager.cpp

Issue 2860663006: Remove WebTouchEvent from TouchEventManager APIs (Closed)
Patch Set: Created 3 years, 7 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.cpp
diff --git a/third_party/WebKit/Source/core/input/TouchEventManager.cpp b/third_party/WebKit/Source/core/input/TouchEventManager.cpp
index e101550859301d2968755b430569dfd744e398aa..209fc7cfdb5dbbadfd4f0daf996ff1176e509258 100644
--- a/third_party/WebKit/Source/core/input/TouchEventManager.cpp
+++ b/third_party/WebKit/Source/core/input/TouchEventManager.cpp
@@ -61,13 +61,12 @@ enum TouchEventDispatchResultType {
kTouchEventDispatchResultTypeMax,
};
-bool IsTouchSequenceStart(const WebTouchEvent& event) {
- if (!event.touches_length)
+bool IsTouchSequenceStart(const Vector<WebCoalescedPointerEvent>& event) {
+ if (!event.size())
return false;
- if (event.GetType() != WebInputEvent::kTouchStart)
- return false;
- for (size_t i = 0; i < event.touches_length; ++i) {
- if (event.touches[i].state != blink::WebTouchPoint::kStatePressed)
+ for (size_t i = 0; i < event.size(); ++i) {
+ if (event[i].first.action !=
+ WebPointerProperties::PointerAction::kPointerDown)
return false;
}
return true;
@@ -117,7 +116,7 @@ DEFINE_TRACE(TouchEventManager) {
}
WebInputEventResult TouchEventManager::DispatchTouchEvents(
- const WebTouchEvent& event,
+ const Vector<WebCoalescedPointerEvent>& event,
const HeapVector<TouchInfo>& touch_infos,
bool all_touches_released) {
// Build up the lists to use for the |touches|, |targetTouches| and
@@ -125,15 +124,18 @@ WebInputEventResult TouchEventManager::DispatchTouchEvents(
// http://www.w3.org/TR/touch-events/#touchevent-interface for how these
// lists fit together.
- if (event.GetType() == WebInputEvent::kTouchEnd ||
- event.GetType() == WebInputEvent::kTouchCancel ||
- event.touches_length > 1) {
+ if (event.size() > 1 ||
+ event[0].first.action ==
+ WebPointerProperties::PointerAction::kPointerUp ||
+ event[0].first.action ==
+ WebPointerProperties::PointerAction::kPointerCancel) {
suppressing_touchmoves_within_slop_ = false;
}
if (suppressing_touchmoves_within_slop_ &&
- event.GetType() == WebInputEvent::kTouchMove) {
- if (!event.moved_beyond_slop_region)
+ event[0].first.action ==
+ WebPointerProperties::PointerAction::kPointerMove) {
+ if (!event[0].first.moved_beyond_slop_region)
return WebInputEventResult::kHandledSuppressed;
suppressing_touchmoves_within_slop_ = false;
}
@@ -202,6 +204,40 @@ WebInputEventResult TouchEventManager::DispatchTouchEvents(
WebInputEventResult event_result = WebInputEventResult::kNotHandled;
+ // Only for setting it inside TouchEvent for compatibility.
+ WebTouchEvent web_touch_event;
+ for (size_t i = 0; i < event.size(); i++) {
+ const auto& touch_pointer_event = event[0].first;
+ WebTouchPoint touch_point;
+ // WebPointerProperties attributes
+ touch_point.id = touch_pointer_event.id;
+ touch_point.force = touch_pointer_event.force;
+ touch_point.tilt_x = touch_pointer_event.tilt_x;
+ touch_point.tilt_y = touch_pointer_event.tilt_y;
+ touch_point.tangential_pressure = touch_pointer_event.tangential_pressure;
+ touch_point.twist = touch_pointer_event.twist;
+ touch_point.button = touch_pointer_event.button;
+ touch_point.pointer_type = touch_pointer_event.pointer_type;
+ touch_point.movement_x = touch_pointer_event.movement_x;
+ touch_point.movement_y = touch_pointer_event.movement_y;
+ // WebTouchPoint attributes
+ touch_point.rotation_angle = touch_pointer_event.rotation_angle;
+
+ web_touch_event.touches[web_touch_event.touches_length++] = touch_point;
+ }
+ // WebInutEvent attributes
+ web_touch_event.SetFrameScale(event[0].first.FrameScale());
+ web_touch_event.SetFrameTranslate(event[0].first.FrameTranslate());
+ web_touch_event.SetTimeStampSeconds(event[0].first.TimeStampSeconds());
+ web_touch_event.SetType(event[0].first.GetType());
+ web_touch_event.SetModifiers(event[0].first.GetModifiers());
+ // WebTouchEvent attributes
+ web_touch_event.dispatch_type = event[0].first.dispatch_type;
+ web_touch_event.moved_beyond_slop_region =
+ event[0].first.moved_beyond_slop_region;
+ web_touch_event.touch_start_or_first_touch_move =
+ event[0].first.touch_start_or_first_touch_move;
+
// Now iterate through the |changedTouches| list and |m_targets| within it,
// sending TouchEvents to the targets as required.
for (unsigned state = 0; state <= WebTouchPoint::kStateMax; ++state) {
@@ -210,10 +246,11 @@ WebInputEventResult TouchEventManager::DispatchTouchEvents(
const AtomicString& event_name(TouchEventNameForTouchPointState(
static_cast<WebTouchPoint::State>(state)));
+
for (const auto& event_target : changed_touches[state].targets_) {
EventTarget* touch_event_target = event_target;
TouchEvent* touch_event = TouchEvent::Create(
- event, touches, touches_by_target.at(touch_event_target),
+ web_touch_event, touches, touches_by_target.at(touch_event_target),
changed_touches[state].touches_.Get(), event_name,
touch_event_target->ToNode()->GetDocument().domWindow(),
current_touch_action_);
@@ -223,15 +260,16 @@ WebInputEventResult TouchEventManager::DispatchTouchEvents(
// Only report for top level documents with a single touch on
// touch-start or the first touch-move.
- if (event.touch_start_or_first_touch_move && touch_infos.size() == 1 &&
+ if (touch_infos.size() == 1 &&
+ event[0].first.touch_start_or_first_touch_move &&
frame_->IsMainFrame()) {
// Record the disposition and latency of touch starts and first touch
// moves before and after the page is fully loaded respectively.
int64_t latency_in_micros =
(TimeTicks::Now() -
- TimeTicks::FromSeconds(event.TimeStampSeconds()))
+ TimeTicks::FromSeconds(event[0].first.TimeStampSeconds()))
.InMicroseconds();
- if (event.IsCancelable()) {
+ if (event[0].first.IsCancelable()) {
if (frame_->GetDocument()->IsLoadCompleted()) {
DEFINE_STATIC_LOCAL(EnumerationHistogram,
touch_dispositions_after_page_load_histogram,
@@ -273,7 +311,7 @@ WebInputEventResult TouchEventManager::DispatchTouchEvents(
}
// Report the touch disposition when there is an active fling animation.
- if (event.dispatch_type ==
+ if (event[0].first.dispatch_type ==
WebInputEvent::kListenersForcedNonBlockingDueToFling) {
DEFINE_STATIC_LOCAL(EnumerationHistogram,
touch_dispositions_during_fling_histogram,
@@ -450,17 +488,17 @@ void TouchEventManager::SetAllPropertiesOfTouchInfos(
}
bool TouchEventManager::ReHitTestTouchPointsIfNeeded(
- const WebTouchEvent& event,
+ const Vector<WebCoalescedPointerEvent>& event,
HeapVector<TouchInfo>& touch_infos) {
bool new_touch_sequence = true;
bool all_touches_released = true;
- for (unsigned i = 0; i < event.touches_length; ++i) {
- WebTouchPoint::State state = event.touches[i].state;
- if (state != WebTouchPoint::kStatePressed)
+ for (size_t i = 0; i < event.size(); ++i) {
+ WebPointerProperties::PointerAction action = event[i].first.action;
+ if (action != WebPointerProperties::PointerAction::kPointerDown)
new_touch_sequence = false;
- if (state != WebTouchPoint::kStateReleased &&
- state != WebTouchPoint::kStateCancelled)
+ if (action != WebPointerProperties::PointerAction::kPointerUp &&
+ action != WebPointerProperties::PointerAction::kPointerCancel)
all_touches_released = false;
}
if (new_touch_sequence) {
@@ -504,16 +542,16 @@ bool TouchEventManager::ReHitTestTouchPointsIfNeeded(
}
WebInputEventResult TouchEventManager::HandleTouchEvent(
- const WebTouchEvent& event,
+ const Vector<WebCoalescedPointerEvent>& event,
HeapVector<TouchInfo>& touch_infos) {
if (!ReHitTestTouchPointsIfNeeded(event, touch_infos))
return WebInputEventResult::kNotHandled;
bool all_touches_released = true;
- for (unsigned i = 0; i < event.touches_length; ++i) {
- WebTouchPoint::State state = event.touches[i].state;
- if (state != WebTouchPoint::kStateReleased &&
- state != WebTouchPoint::kStateCancelled)
+ for (size_t i = 0; i < event.size(); ++i) {
+ WebPointerProperties::PointerAction action = event[i].first.action;
+ if (action != WebPointerProperties::PointerAction::kPointerUp &&
+ action != WebPointerProperties::PointerAction::kPointerCancel)
all_touches_released = false;
}

Powered by Google App Engine
This is Rietveld 408576698