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

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

Issue 101933004: Eager Gesture Recognizer (WIP) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Starting work on Android. 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 | Annotate | Revision Log
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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 if (controller) 210 if (controller)
211 controller->DiscardingGestureEvent(gesture_event.event); 211 controller->DiscardingGestureEvent(gesture_event.event);
212 return; 212 return;
213 } 213 }
214 214
215 FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false); 215 FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false);
216 } 216 }
217 217
218 void InputRouterImpl::SendTouchEvent( 218 void InputRouterImpl::SendTouchEvent(
219 const TouchEventWithLatencyInfo& touch_event) { 219 const TouchEventWithLatencyInfo& touch_event) {
220 LOG(ERROR) << "Queueing touch event";
220 touch_event_queue_->QueueEvent(touch_event); 221 touch_event_queue_->QueueEvent(touch_event);
221 } 222 }
222 223
223 // Forwards MouseEvent without passing it through 224 // Forwards MouseEvent without passing it through
224 // TouchpadTapSuppressionController. 225 // TouchpadTapSuppressionController.
225 void InputRouterImpl::SendMouseEventImmediately( 226 void InputRouterImpl::SendMouseEventImmediately(
226 const MouseEventWithLatencyInfo& mouse_event) { 227 const MouseEventWithLatencyInfo& mouse_event) {
227 // Avoid spamming the renderer with mouse move events. It is important 228 // Avoid spamming the renderer with mouse move events. It is important
228 // to note that WM_MOUSEMOVE events are anyways synthetic, but since our 229 // to note that WM_MOUSEMOVE events are anyways synthetic, but since our
229 // thread is able to rapidly consume WM_MOUSEMOVE events, we may get way 230 // thread is able to rapidly consume WM_MOUSEMOVE events, we may get way
230 // more WM_MOUSEMOVE events than we wish to send to the renderer. 231 // more WM_MOUSEMOVE events than we wish to send to the renderer.
231 if (mouse_event.event.type == WebInputEvent::MouseMove) { 232 if (mouse_event.event.type == WebInputEvent::MouseMove) {
232 if (mouse_move_pending_) { 233 if (mouse_move_pending_) {
233 if (!next_mouse_move_) 234 if (!next_mouse_move_)
234 next_mouse_move_.reset(new MouseEventWithLatencyInfo(mouse_event)); 235 next_mouse_move_.reset(new MouseEventWithLatencyInfo(mouse_event));
235 else 236 else
236 next_mouse_move_->CoalesceWith(mouse_event); 237 next_mouse_move_->CoalesceWith(mouse_event);
237 return; 238 return;
238 } 239 }
239 mouse_move_pending_ = true; 240 mouse_move_pending_ = true;
240 } 241 }
241 242
242 FilterAndSendWebInputEvent(mouse_event.event, mouse_event.latency, false); 243 FilterAndSendWebInputEvent(mouse_event.event, mouse_event.latency, false);
243 } 244 }
244 245
245 void InputRouterImpl::SendTouchEventImmediately( 246 void InputRouterImpl::SendTouchEventImmediately(
246 const TouchEventWithLatencyInfo& touch_event) { 247 const TouchEventWithLatencyInfo& touch_event) {
248 LOG(ERROR) << "Skipping Queue";
247 FilterAndSendWebInputEvent(touch_event.event, touch_event.latency, false); 249 FilterAndSendWebInputEvent(touch_event.event, touch_event.latency, false);
248 } 250 }
249 251
250 void InputRouterImpl::SendGestureEventImmediately( 252 void InputRouterImpl::SendGestureEventImmediately(
251 const GestureEventWithLatencyInfo& gesture_event) { 253 const GestureEventWithLatencyInfo& gesture_event) {
252 FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false); 254 FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false);
253 } 255 }
254 256
255 const NativeWebKeyboardEvent* InputRouterImpl::GetLastKeyboardEvent() const { 257 const NativeWebKeyboardEvent* InputRouterImpl::GetLastKeyboardEvent() const {
256 if (key_queue_.empty()) 258 if (key_queue_.empty())
257 return NULL; 259 return NULL;
258 return &key_queue_.front(); 260 return &key_queue_.front();
259 } 261 }
260 262
261 bool InputRouterImpl::ShouldForwardTouchEvent() const { 263 bool InputRouterImpl::ShouldForwardTouchEvent() const {
264 if (!has_touch_handler_)
265 LOG(ERROR) << "No touch handler";
262 // Always send a touch event if the renderer has a touch-event handler. It is 266 // 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 267 // 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 268 // still events in the touch-queue. In such cases, the new events should still
265 // get into the queue. 269 // get into the queue.
266 return has_touch_handler_ || !touch_event_queue_->empty(); 270 return has_touch_handler_ || !touch_event_queue_->empty();
267 } 271 }
268 272
269 void InputRouterImpl::OnViewUpdated(int view_flags) { 273 void InputRouterImpl::OnViewUpdated(int view_flags) {
270 bool fixed_page_scale = (view_flags & FIXED_PAGE_SCALE) != 0; 274 bool fixed_page_scale = (view_flags & FIXED_PAGE_SCALE) != 0;
271 bool mobile_viewport = (view_flags & MOBILE_VIEWPORT) != 0; 275 bool mobile_viewport = (view_flags & MOBILE_VIEWPORT) != 0;
(...skipping 17 matching lines...) Expand all
289 IPC_END_MESSAGE_MAP() 293 IPC_END_MESSAGE_MAP()
290 294
291 if (!message_is_ok) 295 if (!message_is_ok)
292 ack_handler_->OnUnexpectedEventAck(InputAckHandler::BAD_ACK_MESSAGE); 296 ack_handler_->OnUnexpectedEventAck(InputAckHandler::BAD_ACK_MESSAGE);
293 297
294 return handled; 298 return handled;
295 } 299 }
296 300
297 void InputRouterImpl::OnTouchEventAck(const TouchEventWithLatencyInfo& event, 301 void InputRouterImpl::OnTouchEventAck(const TouchEventWithLatencyInfo& event,
298 InputEventAckState ack_result) { 302 InputEventAckState ack_result) {
303 LOG(ERROR) << "Touch Event Ack";
299 ack_handler_->OnTouchEventAck(event, ack_result); 304 ack_handler_->OnTouchEventAck(event, ack_result);
300 } 305 }
301 306
302 void InputRouterImpl::OnGestureEventAck( 307 void InputRouterImpl::OnGestureEventAck(
303 const GestureEventWithLatencyInfo& event, 308 const GestureEventWithLatencyInfo& event,
304 InputEventAckState ack_result) { 309 InputEventAckState ack_result) {
305 ProcessAckForOverscroll(event.event, ack_result); 310 ProcessAckForOverscroll(event.event, ack_result);
306 ack_handler_->OnGestureEventAck(event, ack_result); 311 ack_handler_->OnGestureEventAck(event, ack_result);
307 } 312 }
308 313
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 break; 729 break;
725 } 730 }
726 } 731 }
727 732
728 bool InputRouterImpl::IsInOverscrollGesture() const { 733 bool InputRouterImpl::IsInOverscrollGesture() const {
729 OverscrollController* controller = client_->GetOverscrollController(); 734 OverscrollController* controller = client_->GetOverscrollController();
730 return controller && controller->overscroll_mode() != OVERSCROLL_NONE; 735 return controller && controller->overscroll_mode() != OVERSCROLL_NONE;
731 } 736 }
732 737
733 } // namespace content 738 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/android/content_view_core_impl.cc ('k') | content/browser/renderer_host/render_widget_host_view_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698