mock_input_router_client.h revision 58537e28ecd584eab876aee8be7156509866d23a
158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/browser/renderer_host/input/input_router_client.h"
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace content {
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class InputRouter;
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class MockInputRouterClient : public InputRouterClient {
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MockInputRouterClient();
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~MockInputRouterClient();
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // InputRouterClient
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual InputEventAckState FilterInputEvent(
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const WebKit::WebInputEvent& input_event,
2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const ui::LatencyInfo& latency_info) OVERRIDE;
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void IncrementInFlightEventCount() OVERRIDE;
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DecrementInFlightEventCount() OVERRIDE;
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void OnHasTouchEventHandlers(bool has_handlers) OVERRIDE;
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendKeyboardEvent(
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const NativeWebKeyboardEvent& key_event,
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const ui::LatencyInfo& latency_info,
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      bool* is_shortcut) OVERRIDE;
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendWheelEvent(
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const MouseWheelEventWithLatencyInfo& wheel_event) OVERRIDE;
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendMouseEvent(
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const MouseEventWithLatencyInfo& mouse_event) OVERRIDE;
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendTouchEvent(
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const TouchEventWithLatencyInfo& touch_event) OVERRIDE;
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendGestureEvent(
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const GestureEventWithLatencyInfo& gesture_event) OVERRIDE;
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendMouseEventImmediately(
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const MouseEventWithLatencyInfo& mouse_event) OVERRIDE;
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendTouchEventImmediately(
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const TouchEventWithLatencyInfo& touch_event) OVERRIDE;
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual bool OnSendGestureEventImmediately(
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const GestureEventWithLatencyInfo& gesture_event) OVERRIDE;
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DidFlush() OVERRIDE;
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetNeedsFlush() OVERRIDE;
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void ExpectSendCalled(bool called);
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void ExpectSendImmediatelyCalled(bool called);
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void ExpectNeedsFlushCalled(bool called);
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void ExpectDidFlushCalled(bool called);
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_input_router(InputRouter* input_router) {
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    input_router_ = input_router;
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool has_touch_handler() const { return has_touch_handler_; }
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_filter_state(InputEventAckState filter_state) {
5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    filter_state_ = filter_state;
6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int in_flight_event_count() const {
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return in_flight_event_count_;
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_is_shortcut(bool is_shortcut) {
6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    is_shortcut_ = is_shortcut;
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_allow_send_event(bool allow) {
6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    allow_send_event_ = allow;
6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const NativeWebKeyboardEvent& sent_key_event() {
7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return sent_key_event_;
7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const MouseWheelEventWithLatencyInfo& sent_wheel_event() {
7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return sent_wheel_event_;
7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const MouseEventWithLatencyInfo& sent_mouse_event() {
7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return sent_mouse_event_;
7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const GestureEventWithLatencyInfo& sent_gesture_event() {
8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return sent_gesture_event_;
8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const MouseEventWithLatencyInfo& immediately_sent_mouse_event() {
8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return immediately_sent_mouse_event_;
8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const TouchEventWithLatencyInfo& immediately_sent_touch_event() {
8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return immediately_sent_touch_event_;
8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  const GestureEventWithLatencyInfo& immediately_sent_gesture_event() {
8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return immediately_sent_gesture_event_;
9058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
9158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
9258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool did_flush_called() const { return did_flush_called_; }
9358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool needs_flush_called() const { return set_needs_flush_called_; }
9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_followup_touch_event(scoped_ptr<GestureEventWithLatencyInfo> event) {
9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    touch_followup_event_ = event.Pass();
9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  InputRouter* input_router_;
10058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int in_flight_event_count_;
10158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool has_touch_handler_;
10258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  InputEventAckState filter_state_;
10458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
10558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool is_shortcut_;
10658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool allow_send_event_;
10758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool send_called_;
10858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  NativeWebKeyboardEvent sent_key_event_;
10958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MouseWheelEventWithLatencyInfo sent_wheel_event_;
11058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MouseEventWithLatencyInfo sent_mouse_event_;
11158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  TouchEventWithLatencyInfo sent_touch_event_;
11258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  GestureEventWithLatencyInfo sent_gesture_event_;
11358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
11458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool send_immediately_called_;
11558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MouseEventWithLatencyInfo immediately_sent_mouse_event_;
11658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  TouchEventWithLatencyInfo immediately_sent_touch_event_;
11758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  GestureEventWithLatencyInfo immediately_sent_gesture_event_;
11858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
11958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool did_flush_called_;
12058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool set_needs_flush_called_;
12158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  scoped_ptr<GestureEventWithLatencyInfo> touch_followup_event_;
12258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
12358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
12458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace content
12558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
12658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
127