summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authortdresser@chromium.org <tdresser@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-15 05:15:25 +0000
committertdresser@chromium.org <tdresser@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-15 05:15:25 +0000
commit657e2cdba1fb2a8ba6df47d8c2c5f57457436400 (patch)
tree67e6f5d17b1ac56d207b9da597d24d8e58f59dd2 /content
parentde71a379bfe91ca68da7fe72fbe6f02cbf5bdbbd (diff)
downloadchromium_src-657e2cdba1fb2a8ba6df47d8c2c5f57457436400.zip
chromium_src-657e2cdba1fb2a8ba6df47d8c2c5f57457436400.tar.gz
chromium_src-657e2cdba1fb2a8ba6df47d8c2c5f57457436400.tar.bz2
Consuming a touch move prevents only the next scroll update.
This implements (In Clank) the touch disposition handling method outlined here: https://docs.google.com/a/chromium.org/document/d/176xYUC3WbiSl7qd08SBW4NiI4_gO0N4PN6tPAq49-68/edit?pli=1#bookmark=id.wu82d53abe2w We also modify the way in which Aura handles touch move events to line up with the new way Android handles them. That is, consuming a touch move event prevents the next scroll update event, but does not prevent future scroll update events. This change will have little impact until https://codereview.chromium.org/166923002/ has landed. BUG=328503 Review URL: https://codereview.chromium.org/156783006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251533 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/input/gesture_event_packet.cc40
-rw-r--r--content/browser/renderer_host/input/gesture_event_packet.h12
-rw-r--r--content/browser/renderer_host/input/touch_disposition_gesture_filter.cc194
-rw-r--r--content/browser/renderer_host/input/touch_disposition_gesture_filter.h42
-rw-r--r--content/browser/renderer_host/input/touch_disposition_gesture_filter_unittest.cc294
-rw-r--r--content/browser/renderer_host/input/touch_event_queue_unittest.cc141
6 files changed, 561 insertions, 162 deletions
diff --git a/content/browser/renderer_host/input/gesture_event_packet.cc b/content/browser/renderer_host/input/gesture_event_packet.cc
index d0fe172..10b12e9 100644
--- a/content/browser/renderer_host/input/gesture_event_packet.cc
+++ b/content/browser/renderer_host/input/gesture_event_packet.cc
@@ -14,34 +14,42 @@ using blink::WebTouchPoint;
namespace content {
namespace {
-bool IsTouchSequenceStart(const WebTouchEvent& event) {
- if (event.type != WebInputEvent::TouchStart)
- return false;
+GestureEventPacket::GestureSource ToGestureSource(const WebTouchEvent& event) {
if (!event.touchesLength)
- return false;
- for (size_t i = 0; i < event.touchesLength; i++) {
- if (event.touches[i].state != WebTouchPoint::StatePressed)
- return false;
+ return GestureEventPacket::INVALID;
+ switch (event.type) {
+ case WebInputEvent::TouchStart:
+ for (size_t i = 0; i < event.touchesLength; i++) {
+ if (event.touches[i].state != WebTouchPoint::StatePressed)
+ return GestureEventPacket::TOUCH_BEGIN;
+ }
+ return GestureEventPacket::TOUCH_SEQUENCE_BEGIN;
+ case WebInputEvent::TouchMove:
+ return GestureEventPacket::TOUCH_MOVE;
+ case WebInputEvent::TouchEnd:
+ case WebInputEvent::TouchCancel:
+ for (size_t i = 0; i < event.touchesLength; i++) {
+ if (event.touches[i].state != WebTouchPoint::StateReleased &&
+ event.touches[i].state != WebTouchPoint::StateCancelled) {
+ return GestureEventPacket::TOUCH_END;
+ }
+ }
+ return GestureEventPacket::TOUCH_SEQUENCE_END;
+ default:
+ return GestureEventPacket::INVALID;
}
- return true;
-}
-
-GestureEventPacket::GestureSource
-ToGestureSource(const WebTouchEvent& event) {
- return IsTouchSequenceStart(event) ? GestureEventPacket::TOUCH_BEGIN
- : GestureEventPacket::TOUCH;
}
} // namespace
GestureEventPacket::GestureEventPacket()
: gesture_count_(0),
- gesture_source_(INVALID) {}
+ gesture_source_(UNDEFINED) {}
GestureEventPacket::GestureEventPacket(GestureSource source)
: gesture_count_(0),
gesture_source_(source) {
- DCHECK_NE(gesture_source_, INVALID);
+ DCHECK_NE(gesture_source_, UNDEFINED);
}
GestureEventPacket::~GestureEventPacket() {}
diff --git a/content/browser/renderer_host/input/gesture_event_packet.h b/content/browser/renderer_host/input/gesture_event_packet.h
index 1227417..b277948 100644
--- a/content/browser/renderer_host/input/gesture_event_packet.h
+++ b/content/browser/renderer_host/input/gesture_event_packet.h
@@ -15,10 +15,14 @@ namespace content {
class CONTENT_EXPORT GestureEventPacket {
public:
enum GestureSource {
- INVALID = -1, // Used only for a default-constructed packet..
- TOUCH_BEGIN, // The start of a new gesture sequence.
- TOUCH, // Continuation of an existing gesture sequence.
- TOUCH_TIMEOUT, // Timeout from an existing gesture sequence.
+ UNDEFINED = -1, // Used only for a default-constructed packet.
+ INVALID, // The source of the gesture was invalid.
+ TOUCH_SEQUENCE_BEGIN, // The start of a new gesture sequence.
+ TOUCH_SEQUENCE_END, // The end of gesture sequence.
+ TOUCH_BEGIN, // A touch down occured during a gesture sequence.
+ TOUCH_MOVE, // A touch move occured during a gesture sequence.
+ TOUCH_END, // A touch up occured during a gesture sequence.
+ TOUCH_TIMEOUT, // Timeout from an existing gesture sequence.
};
GestureEventPacket();
diff --git a/content/browser/renderer_host/input/touch_disposition_gesture_filter.cc b/content/browser/renderer_host/input/touch_disposition_gesture_filter.cc
index 35db767..36de573 100644
--- a/content/browser/renderer_host/input/touch_disposition_gesture_filter.cc
+++ b/content/browser/renderer_host/input/touch_disposition_gesture_filter.cc
@@ -24,6 +24,79 @@ WebGestureEvent CreateGesture(WebInputEvent::Type type) {
return event;
}
+enum RequiredTouches {
+ RT_NONE = 0,
+ RT_START = 1 << 0,
+ RT_CURRENT = 1 << 1,
+};
+
+struct DispositionHandlingInfo {
+ // A bitwise-OR of |RequiredTouches|.
+ int required_touches;
+ blink::WebInputEvent::Type antecedent_event_type;
+
+ DispositionHandlingInfo(int required_touches)
+ : required_touches(required_touches) {}
+
+ DispositionHandlingInfo(int required_touches,
+ blink::WebInputEvent::Type antecedent_event_type)
+ : required_touches(required_touches),
+ antecedent_event_type(antecedent_event_type) {}
+};
+
+DispositionHandlingInfo Info(int required_touches) {
+ return DispositionHandlingInfo(required_touches);
+}
+
+DispositionHandlingInfo Info(int required_touches,
+ blink::WebInputEvent::Type antecedent_event_type) {
+ return DispositionHandlingInfo(required_touches, antecedent_event_type);
+}
+
+// This approach to disposition handling is described at http://goo.gl/5G8PWJ.
+DispositionHandlingInfo GetDispositionHandlingInfo(
+ blink::WebInputEvent::Type type) {
+ switch (type) {
+ case WebInputEvent::GestureTapDown:
+ return Info(RT_START);
+ case WebInputEvent::GestureTapCancel:
+ return Info(RT_START);
+ case WebInputEvent::GestureShowPress:
+ return Info(RT_START);
+ case WebInputEvent::GestureLongPress:
+ return Info(RT_START);
+ case WebInputEvent::GestureLongTap:
+ return Info(RT_START | RT_CURRENT);
+ case WebInputEvent::GestureTap:
+ return Info(RT_START | RT_CURRENT, WebInputEvent::GestureTapUnconfirmed);
+ case WebInputEvent::GestureTwoFingerTap:
+ return Info(RT_START | RT_CURRENT);
+ case WebInputEvent::GestureTapUnconfirmed:
+ return Info(RT_START | RT_CURRENT);
+ case WebInputEvent::GestureDoubleTap:
+ return Info(RT_START | RT_CURRENT, WebInputEvent::GestureTapUnconfirmed);
+ case WebInputEvent::GestureScrollBegin:
+ return Info(RT_START | RT_CURRENT);
+ case WebInputEvent::GestureScrollUpdate:
+ return Info(RT_CURRENT, WebInputEvent::GestureScrollBegin);
+ case WebInputEvent::GestureScrollEnd:
+ return Info(RT_NONE, WebInputEvent::GestureScrollBegin);
+ case WebInputEvent::GestureFlingStart:
+ return Info(RT_NONE, WebInputEvent::GestureScrollBegin);
+ case WebInputEvent::GestureFlingCancel:
+ return Info(RT_NONE, WebInputEvent::GestureFlingStart);
+ case WebInputEvent::GesturePinchBegin:
+ return Info(RT_START, WebInputEvent::GestureScrollBegin);
+ case WebInputEvent::GesturePinchUpdate:
+ return Info(RT_CURRENT, WebInputEvent::GesturePinchBegin);
+ case WebInputEvent::GesturePinchEnd:
+ return Info(RT_NONE, WebInputEvent::GesturePinchBegin);
+ default:
+ NOTREACHED();
+ return Info(RT_NONE);
+ }
+}
+
} // namespace
// TouchDispositionGestureFilter
@@ -41,23 +114,23 @@ TouchDispositionGestureFilter::~TouchDispositionGestureFilter() {}
TouchDispositionGestureFilter::PacketResult
TouchDispositionGestureFilter::OnGestureEventPacket(
const GestureEventPacket& packet) {
- if (packet.gesture_source() == GestureEventPacket::INVALID)
+ if (packet.gesture_source() == GestureEventPacket::UNDEFINED ||
+ packet.gesture_source() == GestureEventPacket::INVALID)
return INVALID_PACKET_TYPE;
- if (packet.gesture_source() == GestureEventPacket::TOUCH_BEGIN)
+ if (packet.gesture_source() == GestureEventPacket::TOUCH_SEQUENCE_BEGIN)
sequences_.push(GestureSequence());
if (IsEmpty())
return INVALID_PACKET_ORDER;
- if (packet.gesture_source() == GestureEventPacket::TOUCH_TIMEOUT) {
- // Handle the timeout packet immediately if the packet preceding the
- // timeout has already been dispatched.
- if (Tail().IsEmpty()) {
- if (!Tail().IsGesturePrevented())
- SendPacket(packet);
- return SUCCESS;
- }
+ if (packet.gesture_source() == GestureEventPacket::TOUCH_TIMEOUT &&
+ Tail().IsEmpty()) {
+ // Handle the timeout packet immediately if the packet preceding the timeout
+ // has already been dispatched.
+ FilterAndSendPacket(
+ packet, Tail().state(), INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ return SUCCESS;
}
Tail().Push(packet);
@@ -73,48 +146,51 @@ void TouchDispositionGestureFilter::OnTouchEventAck(
if (Head().IsEmpty()) {
CancelTapIfNecessary();
CancelFlingIfNecessary();
+ last_event_of_type_dropped_.clear();
sequences_.pop();
}
GestureSequence& sequence = Head();
- sequence.UpdateState(ack_state);
// Dispatch the packet corresponding to the ack'ed touch, as well as any
// additional timeout-based packets queued before the ack was received.
bool touch_packet_for_current_ack_handled = false;
while (!sequence.IsEmpty()) {
const GestureEventPacket& packet = sequence.Front();
+ DCHECK_NE(packet.gesture_source(), GestureEventPacket::UNDEFINED);
+ DCHECK_NE(packet.gesture_source(), GestureEventPacket::INVALID);
- if (packet.gesture_source() == GestureEventPacket::TOUCH_BEGIN ||
- packet.gesture_source() == GestureEventPacket::TOUCH) {
- // We should handle at most one touch-based packet corresponding to a
- // given ack.
+ if (packet.gesture_source() != GestureEventPacket::TOUCH_TIMEOUT) {
+ // We should handle at most one non-timeout based packet.
if (touch_packet_for_current_ack_handled)
break;
+ sequence.UpdateState(packet.gesture_source(), ack_state);
touch_packet_for_current_ack_handled = true;
}
-
- if (!sequence.IsGesturePrevented())
- SendPacket(packet);
-
+ FilterAndSendPacket(packet, sequence.state(), ack_state);
sequence.Pop();
}
DCHECK(touch_packet_for_current_ack_handled);
-
- // Immediately cancel a TapDown if TouchStart went unconsumed, but a
- // subsequent TouchMove is consumed.
- if (sequence.IsGesturePrevented())
- CancelTapIfNecessary();
}
bool TouchDispositionGestureFilter::IsEmpty() const {
return sequences_.empty();
}
-void TouchDispositionGestureFilter::SendPacket(
- const GestureEventPacket& packet) {
- for (size_t i = 0; i < packet.gesture_count(); ++i)
- SendGesture(packet.gesture(i));
+void TouchDispositionGestureFilter::FilterAndSendPacket(
+ const GestureEventPacket& packet,
+ const GestureSequence::GestureHandlingState& sequence_state,
+ InputEventAckState ack_state) {
+ for (size_t i = 0; i < packet.gesture_count(); ++i) {
+ const blink::WebGestureEvent& gesture = packet.gesture(i);
+ if (IsGesturePrevented(gesture.type, ack_state, sequence_state)) {
+ last_event_of_type_dropped_.insert(gesture.type);
+ CancelTapIfNecessary();
+ continue;
+ }
+ last_event_of_type_dropped_.erase(gesture.type);
+ SendGesture(gesture);
+ }
}
void TouchDispositionGestureFilter::SendGesture(const WebGestureEvent& event) {
@@ -124,6 +200,7 @@ void TouchDispositionGestureFilter::SendGesture(const WebGestureEvent& event) {
CancelFlingIfNecessary();
break;
case WebInputEvent::GestureTapDown:
+ DCHECK(!needs_tap_ending_event_);
needs_tap_ending_event_ = true;
break;
case WebInputEvent::GestureTapCancel:
@@ -165,6 +242,14 @@ void TouchDispositionGestureFilter::CancelFlingIfNecessary() {
DCHECK(!needs_fling_ending_event_);
}
+// TouchDispositionGestureFilter::GestureSequence
+
+TouchDispositionGestureFilter::GestureSequence::GestureHandlingState::
+ GestureHandlingState()
+ : seen_ack(false),
+ start_consumed(false),
+ no_consumer(false) {}
+
TouchDispositionGestureFilter::GestureSequence&
TouchDispositionGestureFilter::Head() {
DCHECK(!sequences_.empty());
@@ -177,11 +262,7 @@ TouchDispositionGestureFilter::Tail() {
return sequences_.back();
}
-
-// TouchDispositionGestureFilter::GestureSequence
-
-TouchDispositionGestureFilter::GestureSequence::GestureSequence()
- : state_(PENDING) {}
+TouchDispositionGestureFilter::GestureSequence::GestureSequence() {}
TouchDispositionGestureFilter::GestureSequence::~GestureSequence() {}
@@ -202,25 +283,46 @@ TouchDispositionGestureFilter::GestureSequence::Front() const {
}
void TouchDispositionGestureFilter::GestureSequence::UpdateState(
+ GestureEventPacket::GestureSource gesture_source,
InputEventAckState ack_state) {
DCHECK_NE(INPUT_EVENT_ACK_STATE_UNKNOWN, ack_state);
// Permanent states will not be affected by subsequent ack's.
- if (state_ != PENDING && state_ != ALLOWED_UNTIL_PREVENTED)
+ if (state_.no_consumer || state_.start_consumed)
return;
// |NO_CONSUMER| should only be effective when the *first* touch is ack'ed.
- if (state_ == PENDING &&
- ack_state == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS)
- state_ = ALWAYS_ALLOWED;
- else if (ack_state == INPUT_EVENT_ACK_STATE_CONSUMED)
- state_ = ALWAYS_PREVENTED;
- else
- state_ = ALLOWED_UNTIL_PREVENTED;
-}
-
-bool TouchDispositionGestureFilter::GestureSequence::IsGesturePrevented()
- const {
- return state_ == ALWAYS_PREVENTED;
+ if (!state_.seen_ack &&
+ ack_state == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) {
+ state_.no_consumer = true;
+ } else if (ack_state == INPUT_EVENT_ACK_STATE_CONSUMED) {
+ if (gesture_source == GestureEventPacket::TOUCH_SEQUENCE_BEGIN ||
+ gesture_source == GestureEventPacket::TOUCH_BEGIN) {
+ state_.start_consumed = true;
+ }
+ }
+ state_.seen_ack = true;
+}
+
+bool TouchDispositionGestureFilter::IsGesturePrevented(
+ WebInputEvent::Type gesture_type,
+ InputEventAckState current,
+ const GestureSequence::GestureHandlingState& state) const {
+
+ if (state.no_consumer)
+ return false;
+
+ DispositionHandlingInfo disposition_handling_info =
+ GetDispositionHandlingInfo(gesture_type);
+
+ int required_touches = disposition_handling_info.required_touches;
+ bool current_consumed = current == INPUT_EVENT_ACK_STATE_CONSUMED;
+ if ((required_touches & RT_START && state.start_consumed) ||
+ (required_touches & RT_CURRENT && current_consumed) ||
+ (last_event_of_type_dropped_.count(
+ disposition_handling_info.antecedent_event_type) > 0)) {
+ return true;
+ }
+ return false;
}
bool TouchDispositionGestureFilter::GestureSequence::IsEmpty() const {
diff --git a/content/browser/renderer_host/input/touch_disposition_gesture_filter.h b/content/browser/renderer_host/input/touch_disposition_gesture_filter.h
index f2acc3b..3872b47 100644
--- a/content/browser/renderer_host/input/touch_disposition_gesture_filter.h
+++ b/content/browser/renderer_host/input/touch_disposition_gesture_filter.h
@@ -5,8 +5,8 @@
#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_TOUCH_DISPOSITION_GESTURE_FILTER_H_
#define CONTENT_BROWSER_RENDERER_HOST_INPUT_TOUCH_DISPOSITION_GESTURE_FILTER_H_
-#include <deque>
#include <queue>
+#include <set>
#include "content/browser/renderer_host/input/gesture_event_packet.h"
#include "content/common/content_export.h"
@@ -56,30 +56,45 @@ class CONTENT_EXPORT TouchDispositionGestureFilter {
// generated by timeouts from a statinoary finger.
class GestureSequence {
public:
+ struct GestureHandlingState {
+ GestureHandlingState();
+ // True iff the sequence has had at least one touch acked.
+ bool seen_ack;
+ // True iff the sequence has had any touch down event consumed.
+ bool start_consumed;
+ // True iff the first ack received for this sequence reported that no
+ // consumer exists.
+ bool no_consumer;
+ };
+
GestureSequence();
~GestureSequence();
void Push(const GestureEventPacket& packet);
void Pop();
const GestureEventPacket& Front() const;
- void UpdateState(InputEventAckState ack_state);
- bool IsGesturePrevented() const;
+ void UpdateState(GestureEventPacket::GestureSource gesture_source,
+ InputEventAckState ack_state);
bool IsEmpty() const;
+ const GestureHandlingState& state() const { return state_; };
private:
std::queue<GestureEventPacket> packets_;
- enum GestureHandlingState {
- PENDING, // The sequence has yet to receive an ack.
- ALLOWED_UNTIL_PREVENTED, // Gestures in the sequence are allowed until
- // a source touch is preventDefault'ed.
- ALWAYS_ALLOWED, // All remaining sequence gestures are forwarded.
- ALWAYS_PREVENTED // All remaining sequence gestures are dropped.
- };
GestureHandlingState state_;
};
+ bool IsGesturePrevented(blink::WebInputEvent::Type type,
+ InputEventAckState current,
+ const GestureSequence::GestureHandlingState& state)
+ const;
+
void UpdateAndDispatchPackets(GestureSequence* sequence,
InputEventAckState ack_result);
- void SendPacket(const GestureEventPacket& packet);
+
+ void FilterAndSendPacket(
+ const GestureEventPacket& packet,
+ const GestureSequence::GestureHandlingState& sequence_state,
+ InputEventAckState ack_state);
+
void SendGesture(const blink::WebGestureEvent& gesture);
void CancelTapIfNecessary();
void CancelFlingIfNecessary();
@@ -89,6 +104,11 @@ class CONTENT_EXPORT TouchDispositionGestureFilter {
TouchDispositionGestureFilterClient* client_;
std::queue<GestureSequence> sequences_;
+ // If the previous gesture of a given type was dropped instead of being
+ // dispatched, its type will occur in this set. Cleared when a new touch
+ // sequence begins to be acked.
+ std::set<blink::WebInputEvent::Type> last_event_of_type_dropped_;
+
// Bookkeeping for inserting synthetic Gesture{Tap,Fling}Cancel events
// when necessary, e.g., GestureTapCancel when scrolling begins, or
// GestureFlingCancel when a user taps following a GestureFlingStart.
diff --git a/content/browser/renderer_host/input/touch_disposition_gesture_filter_unittest.cc b/content/browser/renderer_host/input/touch_disposition_gesture_filter_unittest.cc
index e537bdb..16b4b7e 100644
--- a/content/browser/renderer_host/input/touch_disposition_gesture_filter_unittest.cc
+++ b/content/browser/renderer_host/input/touch_disposition_gesture_filter_unittest.cc
@@ -211,18 +211,24 @@ TEST_F(TouchDispositionGestureFilterTest, BasicGestures) {
// Multiple gestures can be queued for a single event.
PushGesture(WebInputEvent::GestureFlingStart);
PushGesture(WebInputEvent::GestureFlingCancel);
- MoveTouchPoint(0, 1, 1);
+ ReleaseTouchPoint(0);
EXPECT_FALSE(GesturesSent());
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureFlingStart,
WebInputEvent::GestureFlingCancel),
GetAndResetSentGestures()));
+}
+TEST_F(TouchDispositionGestureFilterTest, BasicGesturesConsumed) {
// A consumed touch's gesture should not be sent.
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
PushGesture(WebInputEvent::GestureFlingStart);
PushGesture(WebInputEvent::GestureFlingCancel);
ReleaseTouchPoint(0);
- EXPECT_FALSE(GesturesSent());
SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_FALSE(GesturesSent());
}
@@ -247,6 +253,69 @@ TEST_F(TouchDispositionGestureFilterTest, ConsumedThenNotConsumed) {
EXPECT_FALSE(GesturesSent());
}
+TEST_F(TouchDispositionGestureFilterTest, NotConsumedThenConsumed) {
+ // A not consumed touch's gesture should be sent.
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin),
+ GetAndResetSentGestures()));
+
+ // A newly consumed gesture should not be sent.
+ PushGesture(WebInputEvent::GesturePinchBegin);
+ PressTouchPoint(10, 10);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ // And subsequent non-consumed pinch updates should not be sent.
+ PushGesture(WebInputEvent::GestureScrollUpdate);
+ PushGesture(WebInputEvent::GesturePinchUpdate);
+ MoveTouchPoint(0, 2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollUpdate),
+ GetAndResetSentGestures()));
+
+ // End events dispatched only when their start events were.
+ PushGesture(WebInputEvent::GesturePinchEnd);
+ ReleaseTouchPoint(1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollEnd),
+ GetAndResetSentGestures()));
+}
+
+TEST_F(TouchDispositionGestureFilterTest, ScrollAlternatelyConsumed) {
+ // A consumed touch's gesture should not be sent.
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin),
+ GetAndResetSentGestures()));
+
+ for (size_t i = 0; i < 3; ++i) {
+ PushGesture(WebInputEvent::GestureScrollUpdate);
+ MoveTouchPoint(0, 2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GestureScrollUpdate);
+ MoveTouchPoint(0, 3, 3);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollUpdate),
+ GetAndResetSentGestures()));
+ }
+
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollEnd),
+ GetAndResetSentGestures()));
+}
+
TEST_F(TouchDispositionGestureFilterTest, NotConsumedThenNoConsumer) {
// An unconsumed touch's gesture should be sent.
PushGesture(WebInputEvent::GestureScrollBegin);
@@ -263,11 +332,156 @@ TEST_F(TouchDispositionGestureFilterTest, NotConsumedThenNoConsumer) {
EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchBegin),
GetAndResetSentGestures()));
- // If the subsequent touch is consumed, then the remaining gesture sequence
- // should be dropped, regardless of subsequent touch ack disposition.
+ // End events should be dispatched when their start events were, independent
+ // of the ack state.
+ PushGesture(WebInputEvent::GesturePinchEnd);
+ ReleaseTouchPoint(1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchEnd),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollEnd),
+ GetAndResetSentGestures()));
+}
+
+TEST_F(TouchDispositionGestureFilterTest, EndingEventsSent) {
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GesturePinchBegin);
+ PressTouchPoint(2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchBegin),
+ GetAndResetSentGestures()));
+
+ // Consuming the touchend event can't suppress the match end gesture.
+ PushGesture(WebInputEvent::GesturePinchEnd);
+ ReleaseTouchPoint(1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchEnd),
+ GetAndResetSentGestures()));
+
+ // But other events in the same packet are still suppressed.
+ PushGesture(WebInputEvent::GestureScrollUpdate);
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollEnd),
+ GetAndResetSentGestures()));
+
+ // GestureScrollEnd and GestureFlingStart behave the same in this regard.
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GestureFlingStart);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureFlingStart),
+ GetAndResetSentGestures()));
+}
+
+TEST_F(TouchDispositionGestureFilterTest, EndingEventsNotSent) {
+ // Consuming a begin event ensures no end events are sent.
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GesturePinchBegin);
+ PressTouchPoint(2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GesturePinchEnd);
+ ReleaseTouchPoint(1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+}
+
+TEST_F(TouchDispositionGestureFilterTest, UpdateEventsSuppressedPerEvent) {
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin),
+ GetAndResetSentGestures()));
+
+ // Consuming a single scroll or pinch update should suppress only that event.
+ PushGesture(WebInputEvent::GestureScrollUpdate);
+ MoveTouchPoint(0, 2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GesturePinchBegin);
+ PressTouchPoint(2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchBegin),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GesturePinchUpdate);
+ MoveTouchPoint(1, 2, 3);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ // Subsequent updates should not be affected.
PushGesture(WebInputEvent::GestureScrollUpdate);
+ MoveTouchPoint(0, 4, 4);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollUpdate),
+ GetAndResetSentGestures()));
+
PushGesture(WebInputEvent::GesturePinchUpdate);
+ MoveTouchPoint(0, 4, 5);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchUpdate),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GesturePinchEnd);
+ ReleaseTouchPoint(1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GesturePinchEnd),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollEnd),
+ GetAndResetSentGestures()));
+}
+
+TEST_F(TouchDispositionGestureFilterTest, UpdateEventsDependOnBeginEvents) {
+ PushGesture(WebInputEvent::GestureScrollBegin);
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ // Scroll and pinch gestures depend on the scroll begin gesture being
+ // dispatched.
+ PushGesture(WebInputEvent::GestureScrollUpdate);
MoveTouchPoint(0, 2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GesturePinchBegin);
+ PressTouchPoint(2, 2);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+
+ PushGesture(WebInputEvent::GesturePinchUpdate);
+ MoveTouchPoint(1, 2, 3);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_FALSE(GesturesSent());
@@ -278,19 +492,19 @@ TEST_F(TouchDispositionGestureFilterTest, NotConsumedThenNoConsumer) {
PushGesture(WebInputEvent::GestureScrollEnd);
ReleaseTouchPoint(0);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_FALSE(GesturesSent());
}
TEST_F(TouchDispositionGestureFilterTest, MultipleTouchSequences) {
// Queue two touch-to-gestures sequences.
- PushGesture(WebInputEvent::GestureFlingStart);
+ PushGesture(WebInputEvent::GestureTapDown);
PressTouchPoint(1, 1);
- PushGesture(WebInputEvent::GestureFlingCancel);
+ PushGesture(WebInputEvent::GestureTap);
ReleaseTouchPoint(0);
- PushGesture(WebInputEvent::GestureFlingStart);
+ PushGesture(WebInputEvent::GestureScrollBegin);
PressTouchPoint(1, 1);
- PushGesture(WebInputEvent::GestureFlingCancel);
+ PushGesture(WebInputEvent::GestureScrollEnd);
ReleaseTouchPoint(0);
// The first gesture sequence should not be allowed.
@@ -301,15 +515,18 @@ TEST_F(TouchDispositionGestureFilterTest, MultipleTouchSequences) {
// The subsequent sequence should "reset" allowance.
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureFlingStart,
- WebInputEvent::GestureFlingCancel),
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin,
+ WebInputEvent::GestureScrollEnd),
GetAndResetSentGestures()));
}
TEST_F(TouchDispositionGestureFilterTest, FlingCancelledOnNewTouchSequence) {
// Simulate a fling.
+ PushGesture(WebInputEvent::GestureScrollBegin);
PressTouchPoint(1, 1);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin),
+ GetAndResetSentGestures()));
PushGesture(WebInputEvent::GestureFlingStart);
ReleaseTouchPoint(0);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
@@ -318,10 +535,12 @@ TEST_F(TouchDispositionGestureFilterTest, FlingCancelledOnNewTouchSequence) {
// A new touch seqeuence should cancel the outstanding fling.
PressTouchPoint(1, 1);
- ReleaseTouchPoint(0);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureFlingCancel),
GetAndResetSentGestures()));
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ EXPECT_FALSE(GesturesSent());
}
TEST_F(TouchDispositionGestureFilterTest, FlingCancelledOnScrollBegin) {
@@ -347,19 +566,24 @@ TEST_F(TouchDispositionGestureFilterTest, FlingCancelledOnScrollBegin) {
TEST_F(TouchDispositionGestureFilterTest, FlingNotCancelledIfGFCEventReceived) {
// Simulate a fling that is started then cancelled.
- PushGesture(WebInputEvent::GestureFlingStart);
+ PushGesture(WebInputEvent::GestureScrollBegin);
PressTouchPoint(1, 1);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ PushGesture(WebInputEvent::GestureFlingStart);
+ MoveTouchPoint(0, 1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
PushGesture(WebInputEvent::GestureFlingCancel);
ReleaseTouchPoint(0);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureFlingStart,
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin,
+ WebInputEvent::GestureFlingStart,
WebInputEvent::GestureFlingCancel),
GetAndResetSentGestures()));
// A new touch sequence will not inject a GestureFlingCancel, as the fling
// has already been cancelled.
PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
ReleaseTouchPoint(0);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_FALSE(GesturesSent());
@@ -468,12 +692,12 @@ TEST_F(TouchDispositionGestureFilterTest, SpuriousAcksIgnored) {
PushGesture(WebInputEvent::GestureScrollBegin);
PressTouchPoint(1, 1);
- PushGesture(WebInputEvent::GestureScrollEnd);
- ReleaseTouchPoint(0);
+ PushGesture(WebInputEvent::GestureScrollUpdate);
+ MoveTouchPoint(0, 3,3);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureScrollBegin,
- WebInputEvent::GestureScrollEnd),
+ WebInputEvent::GestureScrollUpdate),
GetAndResetSentGestures()));
// Even if all packets have been dispatched, the filter may not be empty as
@@ -498,10 +722,44 @@ TEST_F(TouchDispositionGestureFilterTest, PacketsWithInvalidOrderIgnored) {
WebTouchEvent touch;
touch.type = WebInputEvent::TouchCancel;
- EXPECT_EQ(TouchDispositionGestureFilter::INVALID_PACKET_ORDER,
+ EXPECT_EQ(TouchDispositionGestureFilter::INVALID_PACKET_TYPE,
SendTouchGestures(WebInputEvent::GestureShowPress,
GestureEventPacket()));
EXPECT_TRUE(IsEmpty());
}
+TEST_F(TouchDispositionGestureFilterTest, ConsumedTouchCancel) {
+ // An unconsumed touch's gesture should be sent.
+ PushGesture(WebInputEvent::GestureTapDown);
+ PressTouchPoint(1, 1);
+ EXPECT_FALSE(GesturesSent());
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureTapDown),
+ GetAndResetSentGestures()));
+
+ PushGesture(WebInputEvent::GestureTapCancel);
+ PushGesture(WebInputEvent::GestureScrollEnd);
+ CancelTouchPoint(0);
+ EXPECT_FALSE(GesturesSent());
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureTapCancel,
+ WebInputEvent::GestureScrollEnd),
+ GetAndResetSentGestures()));
+}
+
+TEST_F(TouchDispositionGestureFilterTest, TimeoutEventAfterRelease) {
+ PressTouchPoint(1, 1);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_FALSE(GesturesSent());
+ PushGesture(WebInputEvent::GestureTapUnconfirmed);
+ ReleaseTouchPoint(0);
+ SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureTapUnconfirmed),
+ GetAndResetSentGestures()));
+
+ SendTimeoutGesture(WebInputEvent::GestureTap);
+ EXPECT_TRUE(GesturesMatch(Gestures(WebInputEvent::GestureTap),
+ GetAndResetSentGestures()));
+}
+
} // namespace content
diff --git a/content/browser/renderer_host/input/touch_event_queue_unittest.cc b/content/browser/renderer_host/input/touch_event_queue_unittest.cc
index 2ced9d9..006e79de 100644
--- a/content/browser/renderer_host/input/touch_event_queue_unittest.cc
+++ b/content/browser/renderer_host/input/touch_event_queue_unittest.cc
@@ -48,7 +48,7 @@ class TouchEventQueueTest : public testing::Test,
++sent_event_count_;
last_sent_event_ = event.event;
if (sync_ack_result_)
- SendTouchEventACK(*sync_ack_result_.Pass());
+ SendTouchEventAck(*sync_ack_result_.Pass());
}
virtual void OnTouchEventAck(
@@ -93,10 +93,17 @@ class TouchEventQueueTest : public testing::Test,
GestureEventWithLatencyInfo(event, ui::LatencyInfo()));
}
- void SendTouchEventACK(InputEventAckState ack_result) {
+ void SendTouchEventAck(InputEventAckState ack_result) {
queue_->ProcessTouchAck(ack_result, ui::LatencyInfo());
}
+ void SendGestureEventAck(WebInputEvent::Type type,
+ InputEventAckState ack_result) {
+ blink::WebGestureEvent gesture_event;
+ gesture_event.type = type;
+ GestureEventWithLatencyInfo event(gesture_event, ui::LatencyInfo());
+ }
+
void SetFollowupEvent(const WebTouchEvent& event) {
followup_touch_event_.reset(new WebTouchEvent(event));
}
@@ -211,14 +218,14 @@ TEST_F(TouchEventQueueTest, Basic) {
EXPECT_EQ(0U, GetAndResetSentEventCount());
// Receive an ACK for the first touch-event.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type);
// Receive an ACK for the second touch-event.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(0U, queued_event_count());
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -249,7 +256,7 @@ TEST_F(TouchEventQueueTest, QueueFlushedWhenHandlersRemoved) {
// Receive an ACK for the first touch-event. One of the queued touch-event
// should be forwarded.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(31U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -310,7 +317,7 @@ TEST_F(TouchEventQueueTest, ActiveSequenceDroppedWhenHandlersRemoved) {
EXPECT_EQ(0U, queued_event_count());
// The ack should be ignored as the touch queue is now empty.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(0U, GetAndResetAckedEventCount());
EXPECT_EQ(0U, queued_event_count());
@@ -352,7 +359,7 @@ TEST_F(TouchEventQueueTest, Coalesce) {
EXPECT_EQ(3U, queued_event_count());
// ACK the press. Coalesced touch-move events should be sent.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(2U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -360,14 +367,14 @@ TEST_F(TouchEventQueueTest, Coalesce) {
EXPECT_EQ(INPUT_EVENT_ACK_STATE_CONSUMED, acked_event_state());
// ACK the moves.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(10U, GetAndResetAckedEventCount());
EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
// ACK the release.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(0U, queued_event_count());
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -389,7 +396,7 @@ TEST_F(TouchEventQueueTest, SentTouchEventDoesNotCoalesce) {
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(2U, queued_event_count());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, queued_event_count());
@@ -451,7 +458,7 @@ TEST_F(TouchEventQueueTest, AckAfterQueueFlushed) {
// Receive an ACK for the press. This should cause the queued touch-move to
// be sent to the renderer.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, queued_event_count());
@@ -460,7 +467,7 @@ TEST_F(TouchEventQueueTest, AckAfterQueueFlushed) {
EXPECT_EQ(0U, queued_event_count());
// Now receive an ACK for the move.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, queued_event_count());
}
@@ -482,7 +489,7 @@ TEST_F(TouchEventQueueTest, NoConsumer) {
// Receive an ACK for the first touch-event. This should release the queued
// touch-event, but it should not be sent to the renderer.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(0U, queued_event_count());
EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
EXPECT_EQ(2U, GetAndResetAckedEventCount());
@@ -511,14 +518,14 @@ TEST_F(TouchEventQueueTest, NoConsumer) {
// touch-move event, the touch-end event and the second touch-press event.
EXPECT_EQ(4U, queued_event_count());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(WebInputEvent::TouchEnd, acked_event().type);
EXPECT_EQ(4U, GetAndResetAckedEventCount());
EXPECT_EQ(1U, queued_event_count());
// ACK the second press event as NO_CONSUMER too.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(WebInputEvent::TouchStart, acked_event().type);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -558,12 +565,12 @@ TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) {
// ACK the first press as CONSUMED. This should cause the first touch-move of
// the first touch-point to be dispatched.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(3U, queued_event_count());
// ACK the first move as CONSUMED.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(2U, queued_event_count());
@@ -571,12 +578,12 @@ TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) {
// touch-move event (which contains both touch points). Although the second
// touch-point does not need to be sent to the renderer, the first touch-point
// did move, and so the coalesced touch-event will be sent to the renderer.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, queued_event_count());
// ACK the coalesced move as NOT_CONSUMED.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, queued_event_count());
@@ -597,11 +604,11 @@ TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) {
MoveTouchPoints(0, 15, 15, 1, 25, 25);
EXPECT_EQ(0U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, queued_event_count());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, queued_event_count());
@@ -623,14 +630,14 @@ TEST_F(TouchEventQueueTest, ConsumerIgnoreMultiFinger) {
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(4U, queued_event_count());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(2U, queued_event_count());
EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
// ACK the press with NO_CONSUMED_EXISTS. This should release the queued
// touch-move events to the view.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, queued_event_count());
EXPECT_EQ(WebInputEvent::TouchMove, acked_event().type);
@@ -660,7 +667,7 @@ TEST_F(TouchEventQueueTest, AckWithFollowupEvents) {
// Receive an ACK for the press. This should cause the followup touch-move to
// be sent to the renderer.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -673,7 +680,7 @@ TEST_F(TouchEventQueueTest, AckWithFollowupEvents) {
// Receive an ACK for the touch-move followup event. This should cause the
// subsequent touch move event be sent to the renderer.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -704,7 +711,7 @@ TEST_F(TouchEventQueueTest, SynchronousAcks) {
// TouchCancel (first inserting a TouchStart so the TouchCancel will be sent)
PressTouchPoint(1, 1);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(0U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -767,17 +774,17 @@ TEST_F(TouchEventQueueTest, NoTouchBasic) {
PressTouchPoint(80, 10);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
MoveTouchPoint(0, 80, 20);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
ReleaseTouchPoint(0);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
}
@@ -786,7 +793,7 @@ TEST_F(TouchEventQueueTest, NoTouchOnScroll) {
// Queue a TouchStart.
PressTouchPoint(0, 1);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
MoveTouchPoint(0, 20, 5);
@@ -803,7 +810,7 @@ TEST_F(TouchEventQueueTest, NoTouchOnScroll) {
WebGestureEvent followup_scroll;
followup_scroll.type = WebInputEvent::GestureScrollBegin;
SetFollowupEvent(followup_scroll);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
EXPECT_EQ(2U, queued_event_count());
@@ -811,7 +818,7 @@ TEST_F(TouchEventQueueTest, NoTouchOnScroll) {
EXPECT_EQ(WebInputEvent::TouchStart, latest_event().type);
// Acking the TouchCancel will result in dispatch of the next TouchStart.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
// The synthetic TouchCancel should not reach client, only the TouchStart.
EXPECT_EQ(1U, GetAndResetAckedEventCount());
EXPECT_EQ(0U, GetAndResetSentEventCount());
@@ -840,17 +847,17 @@ TEST_F(TouchEventQueueTest, NoTouchOnScroll) {
// Touch events from a new gesture sequence should be forwarded normally.
PressTouchPoint(80, 10);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
MoveTouchPoint(0, 80, 20);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
ReleaseTouchPoint(0);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
}
@@ -860,7 +867,7 @@ TEST_F(TouchEventQueueTest, NoTouchCancelOnScrollIfNoConsumer) {
// Queue a TouchStart.
PressTouchPoint(0, 1);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
EXPECT_EQ(WebInputEvent::TouchStart, sent_event().type);
@@ -894,7 +901,7 @@ TEST_F(TouchEventQueueTest, NoTouchCancelOnScrollIfNoConsumer) {
// Touch events from a new gesture sequence should be forwarded normally.
PressTouchPoint(80, 10);
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
}
@@ -914,7 +921,7 @@ TEST_F(TouchEventQueueTest, PendingStart) {
EXPECT_TRUE(IsPendingAckTouchStart());
// Ack the touchstart (#1).
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_FALSE(IsPendingAckTouchStart());
@@ -924,7 +931,7 @@ TEST_F(TouchEventQueueTest, PendingStart) {
EXPECT_FALSE(IsPendingAckTouchStart());
// Ack the touchmove (#2).
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_TRUE(IsPendingAckTouchStart());
@@ -934,12 +941,12 @@ TEST_F(TouchEventQueueTest, PendingStart) {
EXPECT_TRUE(IsPendingAckTouchStart());
// Ack the touchstart for the second point (#3).
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, queued_event_count());
EXPECT_TRUE(IsPendingAckTouchStart());
// Ack the touchstart for the third point (#4).
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(0U, queued_event_count());
EXPECT_FALSE(IsPendingAckTouchStart());
}
@@ -951,28 +958,28 @@ TEST_F(TouchEventQueueTest, TouchTimeoutTypes) {
// Sending a TouchStart will start the timeout.
PressTouchPoint(0, 1);
EXPECT_TRUE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
// A TouchMove should start the timeout.
MoveTouchPoint(0, 5, 5);
EXPECT_TRUE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
// A TouchEnd should not start the timeout.
ReleaseTouchPoint(0);
EXPECT_FALSE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
// A TouchCancel should not start the timeout.
PressTouchPoint(0, 1);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ASSERT_FALSE(IsTimeoutRunning());
CancelTouchPoint(0);
EXPECT_FALSE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
}
@@ -1005,7 +1012,7 @@ TEST_F(TouchEventQueueTest, TouchTimeoutBasic) {
EXPECT_EQ(1U, GetAndResetAckedEventCount());
// Ack'ing the original event should trigger a cancel event.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
EXPECT_EQ(1U, GetAndResetSentEventCount());
@@ -1021,7 +1028,7 @@ TEST_F(TouchEventQueueTest, TouchTimeoutBasic) {
// The synthetic TouchCancel ack should not reach the client, but should
// resume touch forwarding.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
@@ -1042,23 +1049,23 @@ TEST_F(TouchEventQueueTest, NoTouchTimeoutIfRendererIsConsumingGesture) {
// Mark the event as consumed. This should prevent the timeout from
// being activated on subsequent TouchEvents in this gesture.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
// A TouchMove should not start the timeout.
MoveTouchPoint(0, 5, 5);
EXPECT_FALSE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
// A secondary TouchStart should not start the timeout.
PressTouchPoint(1, 0);
EXPECT_FALSE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
// A TouchEnd should not start the timeout.
ReleaseTouchPoint(1);
EXPECT_FALSE(IsTimeoutRunning());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
// A TouchCancel should not start the timeout.
CancelTouchPoint(0);
@@ -1118,14 +1125,14 @@ TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGesture) {
EXPECT_EQ(1U, GetAndResetAckedEventCount());
// Ack the original event, triggering a TouchCancel.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
// Ack the cancel event. Normally, this would resume touch forwarding,
// but we're still within a scroll gesture so it remains disabled.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_FALSE(IsTimeoutRunning());
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
@@ -1194,12 +1201,12 @@ TEST_F(TouchEventQueueTest, TouchTimeoutWithFollowupGestureAndDelayedAck) {
EXPECT_EQ(2U, GetAndResetAckedEventCount());
// Ack the original event, triggering a cancel.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
// Ack the cancel event, resuming touch forwarding.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
EXPECT_EQ(0U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
@@ -1240,7 +1247,7 @@ TEST_F(TouchEventQueueTest, NoCancelOnTouchTimeoutWithoutConsumer) {
// Ack'ing the original event should not trigger a cancel event, as the
// TouchStart had no consumer. However, it should re-enable touch forwarding.
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
EXPECT_FALSE(IsTimeoutRunning());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
EXPECT_EQ(0U, GetAndResetSentEventCount());
@@ -1260,7 +1267,7 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithinSlopRegion) {
// Queue a TouchStart.
PressTouchPoint(0, 0);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ASSERT_EQ(1U, GetAndResetSentEventCount());
ASSERT_EQ(1U, GetAndResetAckedEventCount());
@@ -1294,7 +1301,7 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithinSlopRegion) {
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
// Even TouchMove's within the original slop region should now be forwarded.
@@ -1302,14 +1309,14 @@ TEST_F(TouchEventQueueTest, TouchMoveSuppressionWithinSlopRegion) {
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(0U, GetAndResetAckedEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
// A new touch sequence should reset suppression.
ReleaseTouchPoint(0);
PressTouchPoint(0, 0);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ASSERT_EQ(2U, GetAndResetSentEventCount());
ASSERT_EQ(2U, GetAndResetAckedEventCount());
ASSERT_EQ(0U, queued_event_count());
@@ -1335,7 +1342,7 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterTouchConsumed) {
// Queue a TouchStart.
PressTouchPoint(0, 1);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_CONSUMED);
ASSERT_EQ(1U, GetAndResetSentEventCount());
ASSERT_EQ(1U, GetAndResetAckedEventCount());
@@ -1357,7 +1364,7 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) {
// Queue a TouchStart.
PressTouchPoint(0, 1);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
ASSERT_EQ(1U, GetAndResetSentEventCount());
ASSERT_EQ(1U, GetAndResetAckedEventCount());
@@ -1369,7 +1376,7 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) {
// Simulate a secondary pointer press.
PressTouchPoint(kDoubleSlopLengthDips, 0);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());
@@ -1377,12 +1384,12 @@ TEST_F(TouchEventQueueTest, NoTouchMoveSuppressionAfterMultiTouch) {
MoveTouchPoint(1, kDoubleSlopLengthDips, 0);
EXPECT_EQ(1U, queued_event_count());
EXPECT_EQ(1U, GetAndResetSentEventCount());
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetAckedEventCount());
// Release the secondary pointer.
ReleaseTouchPoint(0);
- SendTouchEventACK(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
+ SendTouchEventAck(INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
EXPECT_EQ(1U, GetAndResetSentEventCount());
EXPECT_EQ(1U, GetAndResetAckedEventCount());