| Index: content/browser/renderer_host/input/immediate_input_router_unittest.cc
 | 
| diff --git a/content/browser/renderer_host/input/immediate_input_router_unittest.cc b/content/browser/renderer_host/input/immediate_input_router_unittest.cc
 | 
| index 371e02e01b32c939dc55e5312d9bc4795bcb9429..3d540e07fe946b37745feb4975de7744046a0e7f 100644
 | 
| --- a/content/browser/renderer_host/input/immediate_input_router_unittest.cc
 | 
| +++ b/content/browser/renderer_host/input/immediate_input_router_unittest.cc
 | 
| @@ -8,6 +8,8 @@
 | 
|  #include "content/browser/renderer_host/input/gesture_event_filter.h"
 | 
|  #include "content/browser/renderer_host/input/immediate_input_router.h"
 | 
|  #include "content/browser/renderer_host/input/input_router_client.h"
 | 
| +#include "content/browser/renderer_host/input/input_router_unittest.h"
 | 
| +#include "content/browser/renderer_host/input/mock_input_router_client.h"
 | 
|  #include "content/common/content_constants_internal.h"
 | 
|  #include "content/common/edit_command.h"
 | 
|  #include "content/common/input_messages.h"
 | 
| @@ -100,266 +102,22 @@ bool EventListIsSubset(const ScopedVector<ui::TouchEvent>& subset,
 | 
|  
 | 
|  }  // namespace
 | 
|  
 | 
| -class MockInputRouterClient : public InputRouterClient {
 | 
| +class ImmediateInputRouterTest : public InputRouterTest {
 | 
|   public:
 | 
| -  MockInputRouterClient()
 | 
| -      : input_router_(NULL),
 | 
| -        in_flight_event_count_(0),
 | 
| -        has_touch_handler_(false),
 | 
| -        ack_count_(0),
 | 
| -        unexpected_event_ack_called_(false),
 | 
| -        ack_state_(INPUT_EVENT_ACK_STATE_UNKNOWN),
 | 
| -        filter_state_(INPUT_EVENT_ACK_STATE_NOT_CONSUMED),
 | 
| -        is_shortcut_(false),
 | 
| -        allow_send_key_event_(true),
 | 
| -        send_called_(false),
 | 
| -        send_immediately_called_(false) {
 | 
| -  }
 | 
| -  virtual ~MockInputRouterClient() {
 | 
| -  }
 | 
| -
 | 
| -  // InputRouterClient
 | 
| -  virtual InputEventAckState FilterInputEvent(
 | 
| -      const WebInputEvent& input_event,
 | 
| -      const ui::LatencyInfo& latency_info) OVERRIDE {
 | 
| -    return filter_state_;
 | 
| -  }
 | 
| -
 | 
| -  // Called each time a WebInputEvent IPC is sent.
 | 
| -  virtual void IncrementInFlightEventCount() OVERRIDE {
 | 
| -    ++in_flight_event_count_;
 | 
| -  }
 | 
| -
 | 
| -  // Called each time a WebInputEvent ACK IPC is received.
 | 
| -  virtual void DecrementInFlightEventCount() OVERRIDE {
 | 
| -    --in_flight_event_count_;
 | 
| -  }
 | 
| -
 | 
| -  // Called when the renderer notifies that it has touch event handlers.
 | 
| -  virtual void OnHasTouchEventHandlers(bool has_handlers) OVERRIDE {
 | 
| -    has_touch_handler_ = has_handlers;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendKeyboardEvent(
 | 
| -      const NativeWebKeyboardEvent& key_event,
 | 
| -      const ui::LatencyInfo& latency_info,
 | 
| -      bool* is_shortcut) OVERRIDE {
 | 
| -    send_called_ = true;
 | 
| -    sent_key_event_ = key_event;
 | 
| -    *is_shortcut = is_shortcut_;
 | 
| -
 | 
| -    return allow_send_key_event_;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendWheelEvent(
 | 
| -      const MouseWheelEventWithLatencyInfo& wheel_event) OVERRIDE {
 | 
| -    send_called_ = true;
 | 
| -    sent_wheel_event_ = wheel_event;
 | 
| -
 | 
| -    return true;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendMouseEvent(
 | 
| -      const MouseEventWithLatencyInfo& mouse_event) OVERRIDE {
 | 
| -    send_called_ = true;
 | 
| -    sent_mouse_event_ = mouse_event;
 | 
| -
 | 
| -    return true;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendTouchEvent(
 | 
| -      const TouchEventWithLatencyInfo& touch_event) OVERRIDE {
 | 
| -    send_called_ = true;
 | 
| -    sent_touch_event_ = touch_event;
 | 
| -
 | 
| -    return true;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendGestureEvent(
 | 
| -      const GestureEventWithLatencyInfo& gesture_event) OVERRIDE {
 | 
| -    send_called_ = true;
 | 
| -    sent_gesture_event_ = gesture_event;
 | 
| -
 | 
| -    return input_router_->ShouldForwardGestureEvent(gesture_event);
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendMouseEventImmediately(
 | 
| -      const MouseEventWithLatencyInfo& mouse_event) OVERRIDE {
 | 
| -    send_immediately_called_ = true;
 | 
| -    immediately_sent_mouse_event_ = mouse_event;
 | 
| -
 | 
| -    return true;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendTouchEventImmediately(
 | 
| -      const TouchEventWithLatencyInfo& touch_event) OVERRIDE {
 | 
| -    send_immediately_called_ = true;
 | 
| -    immediately_sent_touch_event_ = touch_event;
 | 
| -
 | 
| -    return true;
 | 
| -  }
 | 
| -
 | 
| -  virtual bool OnSendGestureEventImmediately(
 | 
| -      const GestureEventWithLatencyInfo& gesture_event) OVERRIDE {
 | 
| -    send_immediately_called_ = true;
 | 
| -    immediately_sent_gesture_event_ = gesture_event;
 | 
| -
 | 
| -    return true;
 | 
| -  }
 | 
| -
 | 
| -  // Called upon event ack receipt from the renderer.
 | 
| -  virtual void OnKeyboardEventAck(const NativeWebKeyboardEvent& event,
 | 
| -                                  InputEventAckState ack_result) OVERRIDE {
 | 
| -    VLOG(1) << __FUNCTION__ << " called!";
 | 
| -    acked_key_event_ = event;
 | 
| -    RecordAckCalled(ack_result);
 | 
| -  }
 | 
| -  virtual void OnWheelEventAck(const WebMouseWheelEvent& event,
 | 
| -                               InputEventAckState ack_result) OVERRIDE {
 | 
| -    VLOG(1) << __FUNCTION__ << " called!";
 | 
| -    acked_wheel_event_ = event;
 | 
| -    RecordAckCalled(ack_result);
 | 
| -  }
 | 
| -  virtual void OnTouchEventAck(const TouchEventWithLatencyInfo& event,
 | 
| -                               InputEventAckState ack_result) OVERRIDE {
 | 
| -    VLOG(1) << __FUNCTION__ << " called!";
 | 
| -    acked_touch_event_ = event;
 | 
| -    RecordAckCalled(ack_result);
 | 
| -  }
 | 
| -  virtual void OnGestureEventAck(const WebGestureEvent& event,
 | 
| -                                 InputEventAckState ack_result) OVERRIDE {
 | 
| -    VLOG(1) << __FUNCTION__ << " called!";
 | 
| -    RecordAckCalled(ack_result);
 | 
| -  }
 | 
| -  virtual void OnUnexpectedEventAck(bool bad_message) OVERRIDE {
 | 
| -    VLOG(1) << __FUNCTION__ << " called!";
 | 
| -    unexpected_event_ack_called_ = true;
 | 
| -  }
 | 
| -
 | 
| -  void ExpectSendCalled(bool called) {
 | 
| -    EXPECT_EQ(called, send_called_);
 | 
| -    send_called_ = false;
 | 
| -  }
 | 
| -  void ExpectSendImmediatelyCalled(bool called) {
 | 
| -    EXPECT_EQ(called, send_immediately_called_);
 | 
| -    send_immediately_called_ = false;
 | 
| -  }
 | 
| -  void ExpectAckCalled(int times) {
 | 
| -    EXPECT_EQ(times, ack_count_);
 | 
| -    ack_count_ = 0;
 | 
| -  }
 | 
| -
 | 
| -  void set_input_router(InputRouter* input_router) {
 | 
| -    input_router_ = input_router;
 | 
| -  }
 | 
| -  bool has_touch_handler() const { return has_touch_handler_; }
 | 
| -  InputEventAckState ack_state() const { return ack_state_; }
 | 
| -  void set_filter_state(InputEventAckState filter_state) {
 | 
| -    filter_state_ = filter_state;
 | 
| -  }
 | 
| -  bool unexpected_event_ack_called() const {
 | 
| -    return unexpected_event_ack_called_;
 | 
| -  }
 | 
| -  const NativeWebKeyboardEvent& acked_keyboard_event() {
 | 
| -    return acked_key_event_;
 | 
| -  }
 | 
| -  const WebMouseWheelEvent& acked_wheel_event() {
 | 
| -    return acked_wheel_event_;
 | 
| -  }
 | 
| -  const TouchEventWithLatencyInfo& acked_touch_event() {
 | 
| -    return acked_touch_event_;
 | 
| -  }
 | 
| -  void set_is_shortcut(bool is_shortcut) {
 | 
| -    is_shortcut_ = is_shortcut;
 | 
| -  }
 | 
| -  void set_allow_send_key_event(bool allow) {
 | 
| -    allow_send_key_event_ = allow;
 | 
| -  }
 | 
| -  const NativeWebKeyboardEvent& sent_key_event() {
 | 
| -    return sent_key_event_;
 | 
| -  }
 | 
| -  const MouseWheelEventWithLatencyInfo& sent_wheel_event() {
 | 
| -    return sent_wheel_event_;
 | 
| -  }
 | 
| -  const MouseEventWithLatencyInfo& sent_mouse_event() {
 | 
| -    return sent_mouse_event_;
 | 
| -  }
 | 
| -  const GestureEventWithLatencyInfo& sent_gesture_event() {
 | 
| -    return sent_gesture_event_;
 | 
| -  }
 | 
| -  const MouseEventWithLatencyInfo& immediately_sent_mouse_event() {
 | 
| -    return immediately_sent_mouse_event_;
 | 
| -  }
 | 
| -  const TouchEventWithLatencyInfo& immediately_sent_touch_event() {
 | 
| -    return immediately_sent_touch_event_;
 | 
| -  }
 | 
| -  const GestureEventWithLatencyInfo& immediately_sent_gesture_event() {
 | 
| -    return immediately_sent_gesture_event_;
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  void RecordAckCalled(InputEventAckState ack_result) {
 | 
| -    ++ack_count_;
 | 
| -    ack_state_ = ack_result;
 | 
| -  }
 | 
| -
 | 
| -  InputRouter* input_router_;
 | 
| -  int in_flight_event_count_;
 | 
| -  bool has_touch_handler_;
 | 
| -
 | 
| -  int ack_count_;
 | 
| -  bool unexpected_event_ack_called_;
 | 
| -  InputEventAckState ack_state_;
 | 
| -  InputEventAckState filter_state_;
 | 
| -  NativeWebKeyboardEvent acked_key_event_;
 | 
| -  WebMouseWheelEvent acked_wheel_event_;
 | 
| -  TouchEventWithLatencyInfo acked_touch_event_;
 | 
| -
 | 
| -  bool is_shortcut_;
 | 
| -  bool allow_send_key_event_;
 | 
| -  bool send_called_;
 | 
| -  NativeWebKeyboardEvent sent_key_event_;
 | 
| -  MouseWheelEventWithLatencyInfo sent_wheel_event_;
 | 
| -  MouseEventWithLatencyInfo sent_mouse_event_;
 | 
| -  TouchEventWithLatencyInfo sent_touch_event_;
 | 
| -  GestureEventWithLatencyInfo sent_gesture_event_;
 | 
| -
 | 
| -  bool send_immediately_called_;
 | 
| -  MouseEventWithLatencyInfo immediately_sent_mouse_event_;
 | 
| -  TouchEventWithLatencyInfo immediately_sent_touch_event_;
 | 
| -  GestureEventWithLatencyInfo immediately_sent_gesture_event_;
 | 
| -};
 | 
| -
 | 
| -class ImmediateInputRouterTest : public testing::Test {
 | 
| - public:
 | 
| -  ImmediateInputRouterTest() {
 | 
| -  }
 | 
| -  virtual ~ImmediateInputRouterTest() {
 | 
| -  }
 | 
| +  ImmediateInputRouterTest() {}
 | 
| +  virtual ~ImmediateInputRouterTest() {}
 | 
|  
 | 
|   protected:
 | 
| -  // testing::Test
 | 
| -  virtual void SetUp() {
 | 
| -    browser_context_.reset(new TestBrowserContext());
 | 
| -    process_.reset(new MockRenderProcessHost(browser_context_.get()));
 | 
| -    client_.reset(new MockInputRouterClient());
 | 
| -    input_router_.reset(new ImmediateInputRouter(
 | 
| -        process_.get(),
 | 
| -        client_.get(),
 | 
| -        MSG_ROUTING_NONE));
 | 
| -    client_->set_input_router(input_router_.get());
 | 
| -  }
 | 
| -  virtual void TearDown() {
 | 
| -    // Process all pending tasks to avoid leaks.
 | 
| -    base::MessageLoop::current()->RunUntilIdle();
 | 
| -
 | 
| -    input_router_.reset();
 | 
| -    client_.reset();
 | 
| -    process_.reset();
 | 
| -    browser_context_.reset();
 | 
| +  // InputRouterTest
 | 
| +  virtual scoped_ptr<InputRouter> CreateInputRouter(RenderProcessHost* process,
 | 
| +                                                    InputRouterClient* client,
 | 
| +                                                    InputAckHandler* handler,
 | 
| +                                                    int routing_id) OVERRIDE {
 | 
| +    return scoped_ptr<InputRouter>(
 | 
| +        new ImmediateInputRouter(process, client, handler, routing_id));
 | 
|    }
 | 
|  
 | 
| -  void SendInputEventACK(WebInputEvent::Type type,
 | 
| +  void SendInputEventACK(WebKit::WebInputEvent::Type type,
 | 
|                           InputEventAckState ack_result) {
 | 
|      scoped_ptr<IPC::Message> response(
 | 
|          new InputHostMsg_HandleInputEvent_ACK(0, type, ack_result,
 | 
| @@ -367,177 +125,16 @@ class ImmediateInputRouterTest : public testing::Test {
 | 
|      input_router_->OnMessageReceived(*response);
 | 
|    }
 | 
|  
 | 
| -  void SimulateKeyboardEvent(WebInputEvent::Type type) {
 | 
| -    NativeWebKeyboardEvent key_event;
 | 
| -    key_event.type = type;
 | 
| -    key_event.windowsKeyCode = ui::VKEY_L;  // non-null made up value.
 | 
| -    input_router_->SendKeyboardEvent(key_event, ui::LatencyInfo());
 | 
| -    client_->ExpectSendCalled(true);
 | 
| -    EXPECT_EQ(type, client_->sent_key_event().type);
 | 
| -    EXPECT_EQ(key_event.windowsKeyCode,
 | 
| -              client_->sent_key_event().windowsKeyCode);
 | 
| -  }
 | 
| -
 | 
| -  void SimulateWheelEvent(float dX, float dY, int modifiers, bool precise) {
 | 
| -    WebMouseWheelEvent wheel_event;
 | 
| -    wheel_event.type = WebInputEvent::MouseWheel;
 | 
| -    wheel_event.deltaX = dX;
 | 
| -    wheel_event.deltaY = dY;
 | 
| -    wheel_event.modifiers = modifiers;
 | 
| -    wheel_event.hasPreciseScrollingDeltas = precise;
 | 
| -    input_router_->SendWheelEvent(
 | 
| -        MouseWheelEventWithLatencyInfo(wheel_event, ui::LatencyInfo()));
 | 
| -    client_->ExpectSendCalled(true);
 | 
| -    EXPECT_EQ(wheel_event.type, client_->sent_wheel_event().event.type);
 | 
| -    EXPECT_EQ(dX, client_->sent_wheel_event().event.deltaX);
 | 
| -  }
 | 
| -
 | 
| -  void SimulateMouseMove(int x, int y, int modifiers) {
 | 
| -    WebMouseEvent mouse_event;
 | 
| -    mouse_event.type = WebInputEvent::MouseMove;
 | 
| -    mouse_event.x = mouse_event.windowX = x;
 | 
| -    mouse_event.y = mouse_event.windowY = y;
 | 
| -    mouse_event.modifiers = modifiers;
 | 
| -    input_router_->SendMouseEvent(
 | 
| -        MouseEventWithLatencyInfo(mouse_event, ui::LatencyInfo()));
 | 
| -    client_->ExpectSendCalled(true);
 | 
| -    client_->ExpectSendImmediatelyCalled(true);
 | 
| -    EXPECT_EQ(mouse_event.type, client_->sent_mouse_event().event.type);
 | 
| -    EXPECT_EQ(x, client_->sent_mouse_event().event.x);
 | 
| -    EXPECT_EQ(mouse_event.type,
 | 
| -              client_->immediately_sent_mouse_event().event.type);
 | 
| -    EXPECT_EQ(x, client_->immediately_sent_mouse_event().event.x);
 | 
| -  }
 | 
| -
 | 
| -  void SimulateWheelEventWithPhase(WebMouseWheelEvent::Phase phase) {
 | 
| -    WebMouseWheelEvent wheel_event;
 | 
| -    wheel_event.type = WebInputEvent::MouseWheel;
 | 
| -    wheel_event.phase = phase;
 | 
| -    input_router_->SendWheelEvent(
 | 
| -        MouseWheelEventWithLatencyInfo(wheel_event, ui::LatencyInfo()));
 | 
| -    client_->ExpectSendCalled(true);
 | 
| -    EXPECT_EQ(wheel_event.type, client_->sent_wheel_event().event.type);
 | 
| -    EXPECT_EQ(phase, client_->sent_wheel_event().event.phase);
 | 
| -  }
 | 
| -
 | 
| -  // Inject provided synthetic WebGestureEvent instance.
 | 
| -  void SimulateGestureEventCore(WebInputEvent::Type type,
 | 
| -                            WebGestureEvent::SourceDevice sourceDevice,
 | 
| -                            WebGestureEvent* gesture_event) {
 | 
| -    gesture_event->type = type;
 | 
| -    gesture_event->sourceDevice = sourceDevice;
 | 
| -    GestureEventWithLatencyInfo gesture_with_latency(
 | 
| -        *gesture_event, ui::LatencyInfo());
 | 
| -    input_router_->SendGestureEvent(gesture_with_latency);
 | 
| -    client_->ExpectSendCalled(true);
 | 
| -    EXPECT_EQ(type, client_->sent_gesture_event().event.type);
 | 
| -    EXPECT_EQ(sourceDevice, client_->sent_gesture_event().event.sourceDevice);
 | 
| -  }
 | 
| -
 | 
| -  // Inject simple synthetic WebGestureEvent instances.
 | 
| -  void SimulateGestureEvent(WebInputEvent::Type type,
 | 
| -                            WebGestureEvent::SourceDevice sourceDevice) {
 | 
| -    WebGestureEvent gesture_event;
 | 
| -    SimulateGestureEventCore(type, sourceDevice, &gesture_event);
 | 
| -  }
 | 
| -
 | 
| -  void SimulateGestureScrollUpdateEvent(float dX, float dY, int modifiers) {
 | 
| -    WebGestureEvent gesture_event;
 | 
| -    gesture_event.data.scrollUpdate.deltaX = dX;
 | 
| -    gesture_event.data.scrollUpdate.deltaY = dY;
 | 
| -    gesture_event.modifiers = modifiers;
 | 
| -    SimulateGestureEventCore(WebInputEvent::GestureScrollUpdate,
 | 
| -                             WebGestureEvent::Touchscreen, &gesture_event);
 | 
| -  }
 | 
| -
 | 
| -  void SimulateGesturePinchUpdateEvent(float scale,
 | 
| -                                       float anchorX,
 | 
| -                                       float anchorY,
 | 
| -                                       int modifiers) {
 | 
| -    WebGestureEvent gesture_event;
 | 
| -    gesture_event.data.pinchUpdate.scale = scale;
 | 
| -    gesture_event.x = anchorX;
 | 
| -    gesture_event.y = anchorY;
 | 
| -    gesture_event.modifiers = modifiers;
 | 
| -    SimulateGestureEventCore(WebInputEvent::GesturePinchUpdate,
 | 
| -                             WebGestureEvent::Touchscreen, &gesture_event);
 | 
| -  }
 | 
| -
 | 
| -  // Inject synthetic GestureFlingStart events.
 | 
| -  void SimulateGestureFlingStartEvent(
 | 
| -      float velocityX,
 | 
| -      float velocityY,
 | 
| -      WebGestureEvent::SourceDevice sourceDevice) {
 | 
| -    WebGestureEvent gesture_event;
 | 
| -    gesture_event.data.flingStart.velocityX = velocityX;
 | 
| -    gesture_event.data.flingStart.velocityY = velocityY;
 | 
| -    SimulateGestureEventCore(WebInputEvent::GestureFlingStart, sourceDevice,
 | 
| -                             &gesture_event);
 | 
| -  }
 | 
| -
 | 
| -  // Set the timestamp for the touch-event.
 | 
| -  void SetTouchTimestamp(base::TimeDelta timestamp) {
 | 
| -    touch_event_.timeStampSeconds = timestamp.InSecondsF();
 | 
| -  }
 | 
| -
 | 
| -  // Sends a touch event (irrespective of whether the page has a touch-event
 | 
| -  // handler or not).
 | 
| -  void SendTouchEvent() {
 | 
| -    input_router_->SendTouchEvent(
 | 
| -        TouchEventWithLatencyInfo(touch_event_, ui::LatencyInfo()));
 | 
| -
 | 
| -    // Mark all the points as stationary. And remove the points that have been
 | 
| -    // released.
 | 
| -    int point = 0;
 | 
| -    for (unsigned int i = 0; i < touch_event_.touchesLength; ++i) {
 | 
| -      if (touch_event_.touches[i].state == WebTouchPoint::StateReleased)
 | 
| -        continue;
 | 
| -
 | 
| -      touch_event_.touches[point] = touch_event_.touches[i];
 | 
| -      touch_event_.touches[point].state =
 | 
| -          WebTouchPoint::StateStationary;
 | 
| -      ++point;
 | 
| -    }
 | 
| -    touch_event_.touchesLength = point;
 | 
| -    touch_event_.type = WebInputEvent::Undefined;
 | 
| -  }
 | 
| -
 | 
| -  int PressTouchPoint(int x, int y) {
 | 
| -    if (touch_event_.touchesLength == touch_event_.touchesLengthCap)
 | 
| -      return -1;
 | 
| -    WebTouchPoint& point =
 | 
| -        touch_event_.touches[touch_event_.touchesLength];
 | 
| -    point.id = touch_event_.touchesLength;
 | 
| -    point.position.x = point.screenPosition.x = x;
 | 
| -    point.position.y = point.screenPosition.y = y;
 | 
| -    point.state = WebTouchPoint::StatePressed;
 | 
| -    point.radiusX = point.radiusY = 1.f;
 | 
| -    ++touch_event_.touchesLength;
 | 
| -    touch_event_.type = WebInputEvent::TouchStart;
 | 
| -    return point.id;
 | 
| -  }
 | 
| -
 | 
| -  void MoveTouchPoint(int index, int x, int y) {
 | 
| -    CHECK(index >= 0 && index < touch_event_.touchesLengthCap);
 | 
| -    WebTouchPoint& point = touch_event_.touches[index];
 | 
| -    point.position.x = point.screenPosition.x = x;
 | 
| -    point.position.y = point.screenPosition.y = y;
 | 
| -    touch_event_.touches[index].state = WebTouchPoint::StateMoved;
 | 
| -    touch_event_.type = WebInputEvent::TouchMove;
 | 
| -  }
 | 
| -
 | 
| -  void ReleaseTouchPoint(int index) {
 | 
| -    CHECK(index >= 0 && index < touch_event_.touchesLengthCap);
 | 
| -    touch_event_.touches[index].state = WebTouchPoint::StateReleased;
 | 
| -    touch_event_.type = WebInputEvent::TouchEnd;
 | 
| +  ImmediateInputRouter* input_router() const {
 | 
| +    return static_cast<ImmediateInputRouter*>(input_router_.get());
 | 
|    }
 | 
|  
 | 
|    void set_debounce_interval_time_ms(int ms) {
 | 
| -    input_router_->gesture_event_filter()->debounce_interval_time_ms_ = ms;
 | 
| +    input_router()->gesture_event_filter()->debounce_interval_time_ms_ = ms;
 | 
|    }
 | 
|  
 | 
|    void set_maximum_tap_gap_time_ms(int delay_ms) {
 | 
| -    input_router_->gesture_event_filter()->maximum_tap_gap_time_ms_ = delay_ms;
 | 
| +    input_router()->gesture_event_filter()->maximum_tap_gap_time_ms_ = delay_ms;
 | 
|    }
 | 
|  
 | 
|    size_t TouchEventQueueSize() {
 | 
| @@ -549,7 +146,7 @@ class ImmediateInputRouterTest : public testing::Test {
 | 
|    }
 | 
|  
 | 
|    void EnableNoTouchToRendererWhileScrolling() {
 | 
| -    input_router_->enable_no_touch_to_renderer_while_scrolling_ = true;
 | 
| +    input_router()->enable_no_touch_to_renderer_while_scrolling_ = true;
 | 
|    }
 | 
|  
 | 
|    bool no_touch_move_to_renderer() {
 | 
| @@ -557,7 +154,7 @@ class ImmediateInputRouterTest : public testing::Test {
 | 
|    }
 | 
|  
 | 
|    TouchEventQueue* touch_event_queue() const {
 | 
| -    return input_router_->touch_event_queue();
 | 
| +    return input_router()->touch_event_queue();
 | 
|    }
 | 
|  
 | 
|    unsigned GestureEventLastQueueEventSize() {
 | 
| @@ -598,18 +195,8 @@ class ImmediateInputRouterTest : public testing::Test {
 | 
|    }
 | 
|  
 | 
|    GestureEventFilter* gesture_event_filter() const {
 | 
| -    return input_router_->gesture_event_filter();
 | 
| +    return input_router()->gesture_event_filter();
 | 
|    }
 | 
| -
 | 
| -  scoped_ptr<MockRenderProcessHost> process_;
 | 
| -  scoped_ptr<MockInputRouterClient> client_;
 | 
| -  scoped_ptr<ImmediateInputRouter> input_router_;
 | 
| -
 | 
| - private:
 | 
| -  base::MessageLoopForUI message_loop_;
 | 
| -  WebTouchEvent touch_event_;
 | 
| -
 | 
| -  scoped_ptr<TestBrowserContext> browser_context_;
 | 
|  };
 | 
|  
 | 
|  #if GTEST_HAS_PARAM_TEST
 | 
| @@ -621,8 +208,8 @@ class ImmediateInputRouterWithSourceTest
 | 
|  #endif  // GTEST_HAS_PARAM_TEST
 | 
|  
 | 
|  TEST_F(ImmediateInputRouterTest, CoalescesRangeSelection) {
 | 
| -  input_router_->SendInput(
 | 
| -      new InputMsg_SelectRange(0, gfx::Point(1, 2), gfx::Point(3, 4)));
 | 
| +  input_router_->SendInput(scoped_ptr<IPC::Message>(
 | 
| +      new InputMsg_SelectRange(0, gfx::Point(1, 2), gfx::Point(3, 4))));
 | 
|    EXPECT_EQ(1u, process_->sink().message_count());
 | 
|    ExpectIPCMessageWithArg2<InputMsg_SelectRange>(
 | 
|        process_->sink().GetMessageAt(0),
 | 
| @@ -631,12 +218,12 @@ TEST_F(ImmediateInputRouterTest, CoalescesRangeSelection) {
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    // Send two more messages without acking.
 | 
| -  input_router_->SendInput(
 | 
| -      new InputMsg_SelectRange(0, gfx::Point(5, 6), gfx::Point(7, 8)));
 | 
| +  input_router_->SendInput(scoped_ptr<IPC::Message>(
 | 
| +      new InputMsg_SelectRange(0, gfx::Point(5, 6), gfx::Point(7, 8))));
 | 
|    EXPECT_EQ(0u, process_->sink().message_count());
 | 
|  
 | 
| -  input_router_->SendInput(
 | 
| -      new InputMsg_SelectRange(0, gfx::Point(9, 10), gfx::Point(11, 12)));
 | 
| +  input_router_->SendInput(scoped_ptr<IPC::Message>(
 | 
| +      new InputMsg_SelectRange(0, gfx::Point(9, 10), gfx::Point(11, 12))));
 | 
|    EXPECT_EQ(0u, process_->sink().message_count());
 | 
|  
 | 
|    // Now ack the first message.
 | 
| @@ -662,17 +249,20 @@ TEST_F(ImmediateInputRouterTest, CoalescesRangeSelection) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(ImmediateInputRouterTest, CoalescesCaretMove) {
 | 
| -  input_router_->SendInput(new InputMsg_MoveCaret(0, gfx::Point(1, 2)));
 | 
| +  input_router_->SendInput(
 | 
| +      scoped_ptr<IPC::Message>(new InputMsg_MoveCaret(0, gfx::Point(1, 2))));
 | 
|    EXPECT_EQ(1u, process_->sink().message_count());
 | 
|    ExpectIPCMessageWithArg1<InputMsg_MoveCaret>(
 | 
|        process_->sink().GetMessageAt(0), gfx::Point(1, 2));
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    // Send two more messages without acking.
 | 
| -  input_router_->SendInput(new InputMsg_MoveCaret(0, gfx::Point(5, 6)));
 | 
| +  input_router_->SendInput(
 | 
| +      scoped_ptr<IPC::Message>(new InputMsg_MoveCaret(0, gfx::Point(5, 6))));
 | 
|    EXPECT_EQ(0u, process_->sink().message_count());
 | 
|  
 | 
| -  input_router_->SendInput(new InputMsg_MoveCaret(0, gfx::Point(9, 10)));
 | 
| +  input_router_->SendInput(
 | 
| +      scoped_ptr<IPC::Message>(new InputMsg_MoveCaret(0, gfx::Point(9, 10))));
 | 
|    EXPECT_EQ(0u, process_->sink().message_count());
 | 
|  
 | 
|    // Now ack the first message.
 | 
| @@ -705,7 +295,7 @@ TEST_F(ImmediateInputRouterTest, HandledInputEvent) {
 | 
|    EXPECT_EQ(0u, process_->sink().message_count());
 | 
|  
 | 
|    // OnKeyboardEventAck should be triggered without actual ack.
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|  
 | 
|    // As the event was acked already, keyboard event queue should be
 | 
|    // empty.
 | 
| @@ -713,14 +303,14 @@ TEST_F(ImmediateInputRouterTest, HandledInputEvent) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(ImmediateInputRouterTest, ClientCanceledKeyboardEvent) {
 | 
| -  client_->set_allow_send_key_event(false);
 | 
| +  client_->set_allow_send_event(false);
 | 
|  
 | 
|    // Simulate a keyboard event.
 | 
|    SimulateKeyboardEvent(WebInputEvent::RawKeyDown);
 | 
|  
 | 
|    // Make sure no input event is sent to the renderer.
 | 
|    EXPECT_EQ(0u, process_->sink().message_count());
 | 
| -  client_->ExpectAckCalled(0);
 | 
| +  ack_handler_->ExpectAckCalled(0);
 | 
|  }
 | 
|  
 | 
|  TEST_F(ImmediateInputRouterTest, ShortcutKeyboardEvent) {
 | 
| @@ -742,7 +332,7 @@ TEST_F(ImmediateInputRouterTest, NoncorrespondingKeyEvents) {
 | 
|  
 | 
|    SendInputEventACK(WebInputEvent::KeyUp,
 | 
|                      INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
 | 
| -  EXPECT_TRUE(client_->unexpected_event_ack_called());
 | 
| +  EXPECT_TRUE(ack_handler_->unexpected_event_ack_called());
 | 
|  }
 | 
|  
 | 
|  // Tests ported from RenderWidgetHostTest --------------------------------------
 | 
| @@ -762,8 +352,9 @@ TEST_F(ImmediateInputRouterTest, HandleKeyEventsWeSent) {
 | 
|    // Send the simulated response from the renderer back.
 | 
|    SendInputEventACK(WebInputEvent::RawKeyDown,
 | 
|                      INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
 | 
| -  client_->ExpectAckCalled(1);
 | 
| -  EXPECT_EQ(WebInputEvent::RawKeyDown, client_->acked_keyboard_event().type);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
| +  EXPECT_EQ(WebInputEvent::RawKeyDown,
 | 
| +            ack_handler_->acked_keyboard_event().type);
 | 
|  }
 | 
|  
 | 
|  TEST_F(ImmediateInputRouterTest, IgnoreKeyEventsWeDidntSend) {
 | 
| @@ -771,7 +362,7 @@ TEST_F(ImmediateInputRouterTest, IgnoreKeyEventsWeDidntSend) {
 | 
|    SendInputEventACK(WebInputEvent::RawKeyDown,
 | 
|                      INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
 | 
|  
 | 
| -  client_->ExpectAckCalled(0);
 | 
| +  ack_handler_->ExpectAckCalled(0);
 | 
|  }
 | 
|  
 | 
|  TEST_F(ImmediateInputRouterTest, CoalescesWheelEvents) {
 | 
| @@ -794,7 +385,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesWheelEvents) {
 | 
|    // so that additional input events can be processed before
 | 
|    // we turn off coalescing.
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
 | 
|            InputMsg_HandleInputEvent::ID));
 | 
| @@ -804,7 +395,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesWheelEvents) {
 | 
|    SendInputEventACK(WebInputEvent::MouseWheel,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
 | 
|                    InputMsg_HandleInputEvent::ID));
 | 
| @@ -814,7 +405,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesWheelEvents) {
 | 
|    SendInputEventACK(WebInputEvent::MouseWheel,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|  
 | 
|    // FIXME(kouhei): Below is testing gesture event filter. Maybe separate test?
 | 
| @@ -917,7 +508,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesScrollGestureEvents) {
 | 
|    SendInputEventACK(WebInputEvent::GestureScrollBegin,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
 | 
|                InputMsg_HandleInputEvent::ID));
 | 
| @@ -927,7 +518,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesScrollGestureEvents) {
 | 
|    SendInputEventACK(WebInputEvent::GestureScrollUpdate,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
 | 
|                InputMsg_HandleInputEvent::ID));
 | 
| @@ -937,7 +528,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesScrollGestureEvents) {
 | 
|    SendInputEventACK(WebInputEvent::GestureScrollUpdate,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_TRUE(process_->sink().GetUniqueMessageMatching(
 | 
|                InputMsg_HandleInputEvent::ID));
 | 
| @@ -947,7 +538,7 @@ TEST_F(ImmediateInputRouterTest, CoalescesScrollGestureEvents) {
 | 
|    SendInputEventACK(WebInputEvent::GestureScrollEnd,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|  }
 | 
|  
 | 
| @@ -1200,14 +791,14 @@ TEST_P(ImmediateInputRouterWithSourceTest, GestureFlingCancelsFiltered) {
 | 
|    SendInputEventACK(WebInputEvent::GestureFlingStart,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    SimulateGestureEvent(WebInputEvent::GestureFlingCancel, source_device);
 | 
|    EXPECT_FALSE(FlingInProgress());
 | 
|    EXPECT_EQ(2U, process_->sink().message_count());
 | 
|    SendInputEventACK(WebInputEvent::GestureFlingCancel,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(0U, GestureEventLastQueueEventSize());
 | 
|  
 | 
|    // GFC before previous GFS is acked.
 | 
| @@ -1226,7 +817,7 @@ TEST_P(ImmediateInputRouterWithSourceTest, GestureFlingCancelsFiltered) {
 | 
|    SendInputEventACK(WebInputEvent::GestureFlingCancel,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    base::MessageLoop::current()->RunUntilIdle();
 | 
| -  client_->ExpectAckCalled(2);
 | 
| +  ack_handler_->ExpectAckCalled(2);
 | 
|    EXPECT_EQ(0U, GestureEventLastQueueEventSize());
 | 
|  
 | 
|    // GFS is added to the queue if another event is pending
 | 
| @@ -1571,18 +1162,18 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueue) {
 | 
|    SendInputEventACK(WebInputEvent::TouchStart,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    EXPECT_EQ(1U, TouchEventQueueSize());
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(WebInputEvent::TouchStart,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    SendInputEventACK(WebInputEvent::TouchMove,
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    EXPECT_EQ(0U, TouchEventQueueSize());
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(WebInputEvent::TouchMove,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|  }
 | 
|  
 | 
| @@ -1623,8 +1214,8 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueFlush) {
 | 
|                      INPUT_EVENT_ACK_STATE_CONSUMED);
 | 
|    EXPECT_EQ(31U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchStart,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
| @@ -1671,8 +1262,8 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueCoalesce) {
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_EQ(2U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchStart,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    // Coalesced touch-move events should be sent.
 | 
| @@ -1686,8 +1277,8 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueCoalesce) {
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_EQ(1U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchMove,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(10);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(10);
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    // ACK the release.
 | 
| @@ -1696,8 +1287,8 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueCoalesce) {
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|    EXPECT_EQ(0U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchEnd,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|  }
 | 
|  
 | 
|  // Tests that an event that has already been sent but hasn't been ack'ed yet
 | 
| @@ -1852,8 +1443,8 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueNoConsumer) {
 | 
|                      INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
 | 
|    EXPECT_EQ(0U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchMove,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(2);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(2);
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
| @@ -1862,8 +1453,8 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueNoConsumer) {
 | 
|    SendTouchEvent();
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|    EXPECT_EQ(WebInputEvent::TouchEnd,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|  
 | 
|    // Send a press-event, followed by move and release events, and another press
 | 
|    // event, before the ACK for the first press event comes back. All of the
 | 
| @@ -1891,8 +1482,9 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueNoConsumer) {
 | 
|    SendInputEventACK(WebInputEvent::TouchStart,
 | 
|                      INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
| -  EXPECT_EQ(WebInputEvent::TouchEnd, client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(4);
 | 
| +  EXPECT_EQ(WebInputEvent::TouchEnd,
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(4);
 | 
|    EXPECT_EQ(1U, TouchEventQueueSize());
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
| @@ -1900,8 +1492,9 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueNoConsumer) {
 | 
|    SendInputEventACK(WebInputEvent::TouchStart,
 | 
|                      INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
| -  EXPECT_EQ(WebInputEvent::TouchStart, client_->acked_touch_event().event.type);
 | 
| -  client_->ExpectAckCalled(1);
 | 
| +  EXPECT_EQ(WebInputEvent::TouchStart,
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
|    EXPECT_EQ(0U, TouchEventQueueSize());
 | 
|  
 | 
|    // Send a second press event. Even though the first touch had NO_CONSUMER,
 | 
| @@ -2038,7 +1631,7 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueConsumerIgnoreMultiFinger) {
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
|    EXPECT_EQ(2U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchMove,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    // ACK the press with NO_CONSUMED_EXISTS. This should release the queued
 | 
| @@ -2048,7 +1641,7 @@ TEST_F(ImmediateInputRouterTest, TouchEventQueueConsumerIgnoreMultiFinger) {
 | 
|    EXPECT_EQ(0U, process_->sink().message_count());
 | 
|    EXPECT_EQ(0U, TouchEventQueueSize());
 | 
|    EXPECT_EQ(WebInputEvent::TouchMove,
 | 
| -            client_->acked_touch_event().event.type);
 | 
| +            ack_handler_->acked_touch_event().event.type);
 | 
|  
 | 
|    ReleaseTouchPoint(2);
 | 
|    ReleaseTouchPoint(1);
 | 
| @@ -2126,11 +1719,11 @@ TEST_F(ImmediateInputRouterTest, AckedTouchEventState) {
 | 
|    for (size_t i = 0; i < arraysize(acks); ++i) {
 | 
|      SendInputEventACK(acks[i],
 | 
|                        INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
 | 
| -    EXPECT_EQ(acks[i], client_->acked_touch_event().event.type);
 | 
| +    EXPECT_EQ(acks[i], ack_handler_->acked_touch_event().event.type);
 | 
|      ScopedVector<ui::TouchEvent> acked;
 | 
|  
 | 
|      MakeUITouchEventsFromWebTouchEvents(
 | 
| -        client_->acked_touch_event(), &acked, coordinate_system);
 | 
| +        ack_handler_->acked_touch_event(), &acked, coordinate_system);
 | 
|      bool success = EventListIsSubset(acked, expected_events);
 | 
|      EXPECT_TRUE(success) << "Failed on step: " << i;
 | 
|      if (!success)
 | 
| @@ -2159,9 +1752,9 @@ TEST_F(ImmediateInputRouterTest, UnhandledWheelEvent) {
 | 
|                      INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
 | 
|  
 | 
|    // Check that the correct unhandled wheel event was received.
 | 
| -  client_->ExpectAckCalled(1);
 | 
| -  EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, client_->ack_state());
 | 
| -  EXPECT_EQ(client_->acked_wheel_event().deltaY, -5);
 | 
| +  ack_handler_->ExpectAckCalled(1);
 | 
| +  EXPECT_EQ(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, ack_handler_->ack_state());
 | 
| +  EXPECT_EQ(ack_handler_->acked_wheel_event().deltaY, -5);
 | 
|  
 | 
|    // Check that the second event was sent.
 | 
|    EXPECT_EQ(1U, process_->sink().message_count());
 | 
| @@ -2170,7 +1763,7 @@ TEST_F(ImmediateInputRouterTest, UnhandledWheelEvent) {
 | 
|    process_->sink().ClearMessages();
 | 
|  
 | 
|    // Check that the correct unhandled wheel event was received.
 | 
| -  EXPECT_EQ(client_->acked_wheel_event().deltaY, -5);
 | 
| +  EXPECT_EQ(ack_handler_->acked_wheel_event().deltaY, -5);
 | 
|  }
 | 
|  
 | 
|  // Tests that no touch move events are sent to renderer during scrolling.
 | 
| 
 |