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

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

Issue 290473006: Add a TouchEventStreamValidator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 6 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 <math.h> 7 #include <math.h>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 HISTOGRAM_COUNTS_100("Renderer.KeyboardQueueSize", key_queue_.size()); 167 HISTOGRAM_COUNTS_100("Renderer.KeyboardQueueSize", key_queue_.size());
168 168
169 gesture_event_queue_.FlingHasBeenHalted(); 169 gesture_event_queue_.FlingHasBeenHalted();
170 170
171 // Only forward the non-native portions of our event. 171 // Only forward the non-native portions of our event.
172 FilterAndSendWebInputEvent(key_event, latency_info, is_keyboard_shortcut); 172 FilterAndSendWebInputEvent(key_event, latency_info, is_keyboard_shortcut);
173 } 173 }
174 174
175 void InputRouterImpl::SendGestureEvent( 175 void InputRouterImpl::SendGestureEvent(
176 const GestureEventWithLatencyInfo& original_gesture_event) { 176 const GestureEventWithLatencyInfo& original_gesture_event) {
177 event_stream_validator_.OnEvent(original_gesture_event.event); 177 input_stream_validator_.Validate(original_gesture_event.event);
178
178 GestureEventWithLatencyInfo gesture_event(original_gesture_event); 179 GestureEventWithLatencyInfo gesture_event(original_gesture_event);
179 180
180 if (touch_action_filter_.FilterGestureEvent(&gesture_event.event)) 181 if (touch_action_filter_.FilterGestureEvent(&gesture_event.event))
181 return; 182 return;
182 183
183 if (gesture_event.event.sourceDevice == blink::WebGestureDeviceTouchscreen) 184 if (gesture_event.event.sourceDevice == blink::WebGestureDeviceTouchscreen)
184 touch_event_queue_.OnGestureScrollEvent(gesture_event); 185 touch_event_queue_.OnGestureScrollEvent(gesture_event);
185 186
186 if (!gesture_event_queue_.ShouldForward(gesture_event)) 187 if (!gesture_event_queue_.ShouldForward(gesture_event))
187 return; 188 return;
188 189
189 SendGestureEventImmediately(gesture_event); 190 SendGestureEventImmediately(gesture_event);
190 } 191 }
191 192
192 void InputRouterImpl::SendTouchEvent( 193 void InputRouterImpl::SendTouchEvent(
193 const TouchEventWithLatencyInfo& touch_event) { 194 const TouchEventWithLatencyInfo& touch_event) {
195 input_stream_validator_.Validate(touch_event.event);
194 touch_event_queue_.QueueEvent(touch_event); 196 touch_event_queue_.QueueEvent(touch_event);
195 } 197 }
196 198
197 // Forwards MouseEvent without passing it through 199 // Forwards MouseEvent without passing it through
198 // TouchpadTapSuppressionController. 200 // TouchpadTapSuppressionController.
199 void InputRouterImpl::SendMouseEventImmediately( 201 void InputRouterImpl::SendMouseEventImmediately(
200 const MouseEventWithLatencyInfo& mouse_event) { 202 const MouseEventWithLatencyInfo& mouse_event) {
201 // Avoid spamming the renderer with mouse move events. It is important 203 // Avoid spamming the renderer with mouse move events. It is important
202 // to note that WM_MOUSEMOVE events are anyways synthetic, but since our 204 // to note that WM_MOUSEMOVE events are anyways synthetic, but since our
203 // thread is able to rapidly consume WM_MOUSEMOVE events, we may get way 205 // thread is able to rapidly consume WM_MOUSEMOVE events, we may get way
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 335
334 // Any input event cancels a pending mouse move event. 336 // Any input event cancels a pending mouse move event.
335 next_mouse_move_.reset(); 337 next_mouse_move_.reset();
336 338
337 OfferToHandlers(input_event, latency_info, is_keyboard_shortcut); 339 OfferToHandlers(input_event, latency_info, is_keyboard_shortcut);
338 } 340 }
339 341
340 void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event, 342 void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event,
341 const ui::LatencyInfo& latency_info, 343 const ui::LatencyInfo& latency_info,
342 bool is_keyboard_shortcut) { 344 bool is_keyboard_shortcut) {
345 output_stream_validator_.Validate(input_event);
346
343 if (OfferToClient(input_event, latency_info)) 347 if (OfferToClient(input_event, latency_info))
344 return; 348 return;
345 349
346 OfferToRenderer(input_event, latency_info, is_keyboard_shortcut); 350 OfferToRenderer(input_event, latency_info, is_keyboard_shortcut);
347 351
348 // Touch events should always indicate in the event whether they are 352 // Touch events should always indicate in the event whether they are
349 // cancelable (respect ACK disposition) or not. 353 // cancelable (respect ACK disposition) or not.
350 bool ignores_ack = WebInputEventTraits::IgnoresAckDisposition(input_event); 354 bool ignores_ack = WebInputEventTraits::IgnoresAckDisposition(input_event);
351 if (WebInputEvent::isTouchEventType(input_event.type)) { 355 if (WebInputEvent::isTouchEventType(input_event.type)) {
352 DCHECK(!ignores_ack == 356 DCHECK(!ignores_ack ==
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 InputRouterImpl::QueuedWheelEvent::QueuedWheelEvent( 690 InputRouterImpl::QueuedWheelEvent::QueuedWheelEvent(
687 const MouseWheelEventWithLatencyInfo& event, 691 const MouseWheelEventWithLatencyInfo& event,
688 bool synthesized_from_pinch) 692 bool synthesized_from_pinch)
689 : event(event), synthesized_from_pinch(synthesized_from_pinch) { 693 : event(event), synthesized_from_pinch(synthesized_from_pinch) {
690 } 694 }
691 695
692 InputRouterImpl::QueuedWheelEvent::~QueuedWheelEvent() { 696 InputRouterImpl::QueuedWheelEvent::~QueuedWheelEvent() {
693 } 697 }
694 698
695 } // namespace content 699 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698