| Index: content/browser/renderer_host/input/input_router_impl.h
|
| diff --git a/content/browser/renderer_host/input/input_router_impl.h b/content/browser/renderer_host/input/input_router_impl.h
|
| index 189d93ddd047fa2aa730ab2647ea2d952969c9ae..67d71a45bed4f4971c6f056f28b3d8f2d098c375 100644
|
| --- a/content/browser/renderer_host/input/input_router_impl.h
|
| +++ b/content/browser/renderer_host/input/input_router_impl.h
|
| @@ -9,13 +9,13 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/scoped_vector.h"
|
| #include "base/time/time.h"
|
| #include "content/browser/renderer_host/input/gesture_event_queue.h"
|
| #include "content/browser/renderer_host/input/input_router.h"
|
| #include "content/browser/renderer_host/input/touch_action_filter.h"
|
| #include "content/browser/renderer_host/input/touch_event_queue.h"
|
| #include "content/browser/renderer_host/input/touchpad_tap_suppression_controller.h"
|
| +#include "content/browser/renderer_host/input/wheel_event_queue.h"
|
| #include "content/common/input/input_event_stream_validator.h"
|
| #include "content/public/browser/native_web_keyboard_event.h"
|
|
|
| @@ -40,12 +40,14 @@ class CONTENT_EXPORT InputRouterImpl
|
| : public NON_EXPORTED_BASE(InputRouter),
|
| public NON_EXPORTED_BASE(GestureEventQueueClient),
|
| public NON_EXPORTED_BASE(TouchEventQueueClient),
|
| - public NON_EXPORTED_BASE(TouchpadTapSuppressionControllerClient) {
|
| + public NON_EXPORTED_BASE(TouchpadTapSuppressionControllerClient),
|
| + public NON_EXPORTED_BASE(WheelEventQueueClient) {
|
| public:
|
| struct CONTENT_EXPORT Config {
|
| Config();
|
| GestureEventQueue::Config gesture_config;
|
| TouchEventQueue::Config touch_config;
|
| + bool buffer_wheel_events_until_flush;
|
| };
|
|
|
| InputRouterImpl(IPC::Sender* sender,
|
| @@ -86,14 +88,21 @@ private:
|
| void OnTouchEventAck(const TouchEventWithLatencyInfo& event,
|
| InputEventAckState ack_result) override;
|
|
|
| - // GetureEventFilterClient
|
| + // GestureEventQueueClient
|
| void SendGestureEventImmediately(
|
| const GestureEventWithLatencyInfo& gesture_event) override;
|
| void OnGestureEventAck(const GestureEventWithLatencyInfo& event,
|
| InputEventAckState ack_result) override;
|
|
|
| - bool SendMoveCaret(scoped_ptr<IPC::Message> message);
|
| + // WheelEventQueueClient
|
| + void SendWheelEventImmediately(
|
| + const MouseWheelEventWithLatencyInfo& wheel_event) override;
|
| + void OnWheelEventAck(const MouseWheelEventWithLatencyInfo& event,
|
| + InputEventAckState ack_result) override;
|
| + void SetNeedsFlush() override;
|
| +
|
| bool SendSelectMessage(scoped_ptr<IPC::Message> message);
|
| + bool SendMoveCaret(scoped_ptr<IPC::Message> message);
|
| bool Send(IPC::Message* message);
|
|
|
| // Filters and forwards |input_event| to the appropriate handler.
|
| @@ -209,21 +218,6 @@ private:
|
| scoped_ptr<MouseEventWithLatencyInfo> next_mouse_move_;
|
| MouseEventWithLatencyInfo current_mouse_move_;
|
|
|
| - // (Similar to |mouse_move_pending_|.) True if a mouse wheel event was sent
|
| - // and we are waiting for a corresponding ack.
|
| - bool mouse_wheel_pending_;
|
| - MouseWheelEventWithLatencyInfo current_wheel_event_;
|
| -
|
| - // (Similar to |next_mouse_move_|.) The next mouse wheel events to send.
|
| - // Unlike mouse moves, mouse wheel events received while one is pending are
|
| - // coalesced (by accumulating deltas) if they match the previous event in
|
| - // modifiers. On the Mac, in particular, mouse wheel events are received at a
|
| - // high rate; not waiting for the ack results in jankiness, and using the same
|
| - // mechanism as for mouse moves (just dropping old events when multiple ones
|
| - // would be queued) results in very slow scrolling.
|
| - typedef std::deque<MouseWheelEventWithLatencyInfo> WheelEventQueue;
|
| - WheelEventQueue coalesced_mouse_wheel_events_;
|
| -
|
| // A queue of keyboard events. We can't trust data from the renderer so we
|
| // stuff key events into a queue and pop them out on ACK, feeding our copy
|
| // back to whatever unhandled handler instead of the returned version.
|
| @@ -248,6 +242,7 @@ private:
|
|
|
| TouchEventQueue touch_event_queue_;
|
| GestureEventQueue gesture_event_queue_;
|
| + WheelEventQueue wheel_event_queue_;
|
| TouchActionFilter touch_action_filter_;
|
| InputEventStreamValidator input_stream_validator_;
|
| InputEventStreamValidator output_stream_validator_;
|
|
|