mock_input_router_client.h revision f2477e01787aa58f445919b809d89e252beef54f
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)
134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class InputEvent;
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class InputRouter;
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class MockInputRouterClient : public InputRouterClient {
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MockInputRouterClient();
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~MockInputRouterClient();
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // InputRouterClient
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual InputEventAckState FilterInputEvent(
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      const blink::WebInputEvent& input_event,
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const ui::LatencyInfo& latency_info) OVERRIDE;
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void IncrementInFlightEventCount() OVERRIDE;
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DecrementInFlightEventCount() OVERRIDE;
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void OnHasTouchEventHandlers(bool has_handlers) OVERRIDE;
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual OverscrollController* GetOverscrollController() const OVERRIDE;
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void DidFlush() OVERRIDE;
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetNeedsFlush() OVERRIDE;
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  bool GetAndResetFilterEventCalled();
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_input_router(InputRouter* input_router) {
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    input_router_ = input_router;
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool has_touch_handler() const { return has_touch_handler_; }
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_filter_state(InputEventAckState filter_state) {
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    filter_state_ = filter_state;
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int in_flight_event_count() const {
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return in_flight_event_count_;
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void set_allow_send_event(bool allow) {
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    filter_state_ = INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS;
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool did_flush_called() const { return did_flush_called_; }
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool needs_flush_called() const { return set_needs_flush_called_; }
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  InputRouter* input_router_;
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  int in_flight_event_count_;
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool has_touch_handler_;
5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  InputEventAckState filter_state_;
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  bool filter_input_event_called_;
604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<InputEvent> last_filter_event_;
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool did_flush_called_;
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool set_needs_flush_called_;
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace content
6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
69