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

Unified Diff: content/browser/renderer_host/input/touch_event_queue.cc

Issue 394523004: Revert of Don't treat first touch move differently from future touch moves (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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: content/browser/renderer_host/input/touch_event_queue.cc
diff --git a/content/browser/renderer_host/input/touch_event_queue.cc b/content/browser/renderer_host/input/touch_event_queue.cc
index db4fa9117906215b361ca482cdc7bfbd12cabd12..bbac01c3ebff51081f112419068c5525a4bad5cf 100644
--- a/content/browser/renderer_host/input/touch_event_queue.cc
+++ b/content/browser/renderer_host/input/touch_event_queue.cc
@@ -349,8 +349,7 @@
send_touch_events_async_(false),
needs_async_touchmove_for_outer_slop_region_(false),
last_sent_touch_timestamp_sec_(0),
- touch_scrolling_mode_(config.touch_scrolling_mode),
- seen_scroll_update_this_sequence_(false) {
+ touch_scrolling_mode_(config.touch_scrolling_mode) {
DCHECK(client);
if (ack_timeout_enabled_) {
timeout_handler_.reset(
@@ -535,37 +534,31 @@
void TouchEventQueue::OnGestureScrollEvent(
const GestureEventWithLatencyInfo& gesture_event) {
- if (gesture_event.event.type == blink::WebInputEvent::GestureScrollBegin) {
- seen_scroll_update_this_sequence_ = false;
-
+ if (gesture_event.event.type != blink::WebInputEvent::GestureScrollBegin)
+ return;
+
+ if (touch_filtering_state_ != DROP_ALL_TOUCHES &&
+ touch_filtering_state_ != DROP_TOUCHES_IN_SEQUENCE) {
+ DCHECK(!touchmove_slop_suppressor_->suppressing_touchmoves())
+ << "The renderer should be offered a touchmove before scrolling begins";
+ }
+
+ if (touch_scrolling_mode_ == TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE) {
if (touch_filtering_state_ != DROP_ALL_TOUCHES &&
touch_filtering_state_ != DROP_TOUCHES_IN_SEQUENCE) {
- DCHECK(!touchmove_slop_suppressor_->suppressing_touchmoves())
- << "The renderer should be offered a touchmove before scrolling "
- "begins";
- }
-
- if (touch_scrolling_mode_ == TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE &&
- touch_filtering_state_ != DROP_ALL_TOUCHES &&
- touch_filtering_state_ != DROP_TOUCHES_IN_SEQUENCE &&
- (touch_ack_states_.empty() ||
- AllTouchAckStatesHaveState(
- INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS))) {
// If no touch points have a consumer, prevent all subsequent touch events
// received during the scroll from reaching the renderer. This ensures
// that the first touchstart the renderer sees in any given sequence can
// always be preventDefault'ed (cancelable == true).
// TODO(jdduke): Revisit if touchstarts during scroll are made cancelable.
- touch_filtering_state_ = DROP_TOUCHES_IN_SEQUENCE;
- }
- return;
- }
-
- if (gesture_event.event.type != blink::WebInputEvent::GestureScrollUpdate ||
- seen_scroll_update_this_sequence_)
- return;
-
- if (touch_scrolling_mode_ == TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE) {
+ if (touch_ack_states_.empty() ||
+ AllTouchAckStatesHaveState(
+ INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS)) {
+ touch_filtering_state_ = DROP_TOUCHES_IN_SEQUENCE;
+ return;
+ }
+ }
+
pending_async_touchmove_.reset();
send_touch_events_async_ = true;
needs_async_touchmove_for_outer_slop_region_ = true;

Powered by Google App Engine
This is Rietveld 408576698