1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef REMOTING_PROTOCOL_INPUT_FILTER_H_
6#define REMOTING_PROTOCOL_INPUT_FILTER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "remoting/protocol/input_stub.h"
11
12namespace remoting {
13namespace protocol {
14
15// Forwards input events to |input_stub|, if configured.  Input forwarding may
16// also be disabled independently of the |input_stub| being set.  InputFilters
17// initially have input forwarding enabled.
18class InputFilter : public InputStub {
19 public:
20  InputFilter();
21  explicit InputFilter(InputStub* input_stub);
22  virtual ~InputFilter();
23
24  // Set the InputStub that events will be forwarded to.
25  void set_input_stub(InputStub* input_stub) {
26    input_stub_ = input_stub;
27  }
28
29  // Enable/disable routing of events to the InputStub.
30  void set_enabled(bool enabled) {
31    enabled_ = enabled;
32  }
33  bool enabled() const {
34    return enabled_;
35  }
36
37  // InputStub interface.
38  virtual void InjectKeyEvent(const KeyEvent& event) OVERRIDE;
39  virtual void InjectTextEvent(const TextEvent& event) OVERRIDE;
40  virtual void InjectMouseEvent(const MouseEvent& event) OVERRIDE;
41
42 private:
43  InputStub* input_stub_;
44  bool enabled_;
45
46  DISALLOW_COPY_AND_ASSIGN(InputFilter);
47};
48
49} // namespace protocol
50} // namespace remoting
51
52#endif // REMOTING_PROTOCOL_INPUT_FILTER_H_
53