Index: remoting/host/client_session.h |
diff --git a/remoting/host/client_session.h b/remoting/host/client_session.h |
index 2ef11ec790999d72c705e60700928b83713ef698..41068fa6bcb2e740585b77631de7b34ec812b19b 100644 |
--- a/remoting/host/client_session.h |
+++ b/remoting/host/client_session.h |
@@ -6,14 +6,17 @@ |
#define REMOTING_HOST_CLIENT_SESSION_H_ |
#include <list> |
-#include <set> |
#include "base/time.h" |
#include "base/threading/non_thread_safe.h" |
+#include "remoting/host/remote_input_filter.h" |
#include "remoting/protocol/clipboard_stub.h" |
#include "remoting/protocol/connection_to_client.h" |
#include "remoting/protocol/host_event_stub.h" |
#include "remoting/protocol/host_stub.h" |
+#include "remoting/protocol/input_event_tracker.h" |
+#include "remoting/protocol/input_filter.h" |
+#include "remoting/protocol/input_stub.h" |
#include "third_party/skia/include/core/SkPoint.h" |
namespace remoting { |
@@ -97,10 +100,6 @@ class ClientSession : public protocol::HostEventStub, |
return connection_.get(); |
} |
- void set_awaiting_continue_approval(bool awaiting) { |
- awaiting_continue_approval_ = awaiting; |
- } |
- |
const std::string& client_jid() { return client_jid_; } |
// Indicate that local mouse activity has been detected. This causes remote |
@@ -108,21 +107,11 @@ class ClientSession : public protocol::HostEventStub, |
// have the upper hand in 'pointer wars'. |
void LocalMouseMoved(const SkIPoint& new_pos); |
- bool ShouldIgnoreRemoteMouseInput(const protocol::MouseEvent& event) const; |
- bool ShouldIgnoreRemoteKeyboardInput(const protocol::KeyEvent& event) const; |
+ // Disable handling of input events from this client. If the client has any |
+ // keys or mouse buttons pressed then these will be released. |
+ void SetDisableInputs(bool disable_inputs); |
private: |
- friend class ClientSessionTest_RestoreEventState_Test; |
- |
- // Keep track of input state so that we can clean up the event queue when |
- // the user disconnects. |
- void RecordKeyEvent(const protocol::KeyEvent& event); |
- void RecordMouseButtonState(const protocol::MouseEvent& event); |
- |
- // Synthesize KeyUp and MouseUp events so that we can undo these events |
- // when the user disconnects. |
- void RestoreEventState(); |
- |
EventHandler* event_handler_; |
// The connection to the client. |
@@ -133,41 +122,24 @@ class ClientSession : public protocol::HostEventStub, |
// The host event stub to which this object delegates. |
protocol::HostEventStub* host_event_stub_; |
+ // Tracker used to release pressed keys and buttons when disconnecting. |
+ protocol::InputEventTracker input_tracker_; |
+ |
+ // Filter used to disable remote inputs during local input activity. |
+ RemoteInputFilter remote_input_filter_; |
+ |
+ // Filter used to manage enabling & disabling of client input events. |
+ protocol::InputFilter disable_input_filter_; |
+ |
+ // Filter used to disable inputs when we're not authenticated. |
+ protocol::InputFilter auth_input_filter_; |
+ |
// Capturer, used to determine current screen size for ensuring injected |
// mouse events fall within the screen area. |
// TODO(lambroslambrou): Move floor-control logic, and clamping to screen |
// area, out of this class (crbug.com/96508). |
Capturer* capturer_; |
- // Whether this client is authenticated. |
- bool authenticated_; |
- |
- // Whether this client is fully connected (i.e. all channels are |
- // connected). |
- bool connected_; |
- |
- // Whether or not inputs from this client are blocked pending approval from |
- // the host user to continue the connection. |
- bool awaiting_continue_approval_; |
- |
- // State to control remote input blocking while the local pointer is in use. |
- uint32 remote_mouse_button_state_; |
- |
- // Current location of the mouse pointer. This is used to provide appropriate |
- // coordinates when we release the mouse buttons after a user disconnects. |
- SkIPoint remote_mouse_pos_; |
- |
- // Queue of recently-injected mouse positions. This is used to detect whether |
- // mouse events from the local input monitor are echoes of injected positions, |
- // or genuine mouse movements of a local input device. |
- std::list<SkIPoint> injected_mouse_positions_; |
- |
- base::Time latest_local_input_time_; |
- |
- // Set of keys that are currently pressed down by the user. This is used so |
- // we can release them if the user disconnects. |
- std::set<int> pressed_keys_; |
- |
DISALLOW_COPY_AND_ASSIGN(ClientSession); |
}; |