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

Side by Side Diff: content/browser/renderer_host/input/input_router_impl.cc

Issue 132083006: Delegate touch handler registration logic to the TouchEventQueue (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanup Created 6 years, 11 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "content/browser/renderer_host/input/input_router_impl.h" 5 #include "content/browser/renderer_host/input/input_router_impl.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 InputAckHandler* ack_handler, 93 InputAckHandler* ack_handler,
94 int routing_id) 94 int routing_id)
95 : sender_(sender), 95 : sender_(sender),
96 client_(client), 96 client_(client),
97 ack_handler_(ack_handler), 97 ack_handler_(ack_handler),
98 routing_id_(routing_id), 98 routing_id_(routing_id),
99 select_range_pending_(false), 99 select_range_pending_(false),
100 move_caret_pending_(false), 100 move_caret_pending_(false),
101 mouse_move_pending_(false), 101 mouse_move_pending_(false),
102 mouse_wheel_pending_(false), 102 mouse_wheel_pending_(false),
103 has_touch_handler_(false),
104 touch_ack_timeout_enabled_(false), 103 touch_ack_timeout_enabled_(false),
105 touch_ack_timeout_delay_ms_(std::numeric_limits<size_t>::max()), 104 touch_ack_timeout_delay_ms_(std::numeric_limits<size_t>::max()),
106 current_ack_source_(ACK_SOURCE_NONE), 105 current_ack_source_(ACK_SOURCE_NONE),
107 gesture_event_filter_(new GestureEventFilter(this, this)) { 106 gesture_event_filter_(new GestureEventFilter(this, this)) {
108 DCHECK(sender); 107 DCHECK(sender);
109 DCHECK(client); 108 DCHECK(client);
110 DCHECK(ack_handler); 109 DCHECK(ack_handler);
111 touch_event_queue_.reset(new TouchEventQueue(this)); 110 touch_event_queue_.reset(new TouchEventQueue(this));
112 touch_ack_timeout_enabled_ = 111 touch_ack_timeout_enabled_ =
113 GetTouchAckTimeoutDelayMs(&touch_ack_timeout_delay_ms_); 112 GetTouchAckTimeoutDelayMs(&touch_ack_timeout_delay_ms_);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 253
255 const NativeWebKeyboardEvent* InputRouterImpl::GetLastKeyboardEvent() const { 254 const NativeWebKeyboardEvent* InputRouterImpl::GetLastKeyboardEvent() const {
256 if (key_queue_.empty()) 255 if (key_queue_.empty())
257 return NULL; 256 return NULL;
258 return &key_queue_.front(); 257 return &key_queue_.front();
259 } 258 }
260 259
261 bool InputRouterImpl::ShouldForwardTouchEvent() const { 260 bool InputRouterImpl::ShouldForwardTouchEvent() const {
262 // Always send a touch event if the renderer has a touch-event handler. It is 261 // Always send a touch event if the renderer has a touch-event handler. It is
263 // possible that a renderer stops listening to touch-events while there are 262 // possible that a renderer stops listening to touch-events while there are
264 // still events in the touch-queue. In such cases, the new events should still 263 // still events in the touch-queue, but those events should be flushed, while
265 // get into the queue. 264 // subsequent touch events will never stay in the queue (at least until
266 return has_touch_handler_ || !touch_event_queue_->empty(); 265 // another touch handler is registered).
266 DCHECK(touch_event_queue_->has_handlers() || touch_event_queue_->empty());
tdresser 2014/01/09 21:14:32 This DCHECK doesn't seem to make sense in conjunct
jdduke (slow) 2014/01/09 22:05:04 The comment wording was poorly modified on my part
267 return touch_event_queue_->has_handlers();
267 } 268 }
268 269
269 void InputRouterImpl::OnViewUpdated(int view_flags) { 270 void InputRouterImpl::OnViewUpdated(int view_flags) {
270 bool fixed_page_scale = (view_flags & FIXED_PAGE_SCALE) != 0; 271 bool fixed_page_scale = (view_flags & FIXED_PAGE_SCALE) != 0;
271 bool mobile_viewport = (view_flags & MOBILE_VIEWPORT) != 0; 272 bool mobile_viewport = (view_flags & MOBILE_VIEWPORT) != 0;
272 touch_event_queue_->SetAckTimeoutEnabled( 273 touch_event_queue_->SetAckTimeoutEnabled(
273 touch_ack_timeout_enabled_ && !(fixed_page_scale || mobile_viewport), 274 touch_ack_timeout_enabled_ && !(fixed_page_scale || mobile_viewport),
274 touch_ack_timeout_delay_ms_); 275 touch_ack_timeout_delay_ms_);
275 } 276 }
276 277
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 SendMoveCaret(next_move_caret_.Pass()); 496 SendMoveCaret(next_move_caret_.Pass());
496 } 497 }
497 498
498 void InputRouterImpl::OnSelectRangeAck() { 499 void InputRouterImpl::OnSelectRangeAck() {
499 select_range_pending_ = false; 500 select_range_pending_ = false;
500 if (next_selection_range_) 501 if (next_selection_range_)
501 SendSelectRange(next_selection_range_.Pass()); 502 SendSelectRange(next_selection_range_.Pass());
502 } 503 }
503 504
504 void InputRouterImpl::OnHasTouchEventHandlers(bool has_handlers) { 505 void InputRouterImpl::OnHasTouchEventHandlers(bool has_handlers) {
505 if (has_touch_handler_ == has_handlers) 506 if (has_handlers == touch_event_queue_->has_handlers())
506 return; 507 return;
507 has_touch_handler_ = has_handlers; 508 touch_event_queue_->OnHasTouchEventHandlers(has_handlers);
508 if (!has_handlers)
509 touch_event_queue_->FlushQueue();
510 client_->OnHasTouchEventHandlers(has_handlers); 509 client_->OnHasTouchEventHandlers(has_handlers);
511 } 510 }
512 511
513 void InputRouterImpl::OnSetTouchAction( 512 void InputRouterImpl::OnSetTouchAction(
514 content::TouchAction touch_action) { 513 content::TouchAction touch_action) {
515 // Synthetic touchstart events should get filtered out in RenderWidget. 514 // Synthetic touchstart events should get filtered out in RenderWidget.
516 DCHECK(touch_event_queue_->IsPendingAckTouchStart()); 515 DCHECK(touch_event_queue_->IsPendingAckTouchStart());
517 516
518 touch_action_filter_.OnSetTouchAction(touch_action); 517 touch_action_filter_.OnSetTouchAction(touch_action);
519 } 518 }
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 break; 723 break;
725 } 724 }
726 } 725 }
727 726
728 bool InputRouterImpl::IsInOverscrollGesture() const { 727 bool InputRouterImpl::IsInOverscrollGesture() const {
729 OverscrollController* controller = client_->GetOverscrollController(); 728 OverscrollController* controller = client_->GetOverscrollController();
730 return controller && controller->overscroll_mode() != OVERSCROLL_NONE; 729 return controller && controller->overscroll_mode() != OVERSCROLL_NONE;
731 } 730 }
732 731
733 } // namespace content 732 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698