diff options
author | jamiewalch@chromium.org <jamiewalch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-13 00:13:48 +0000 |
---|---|---|
committer | jamiewalch@chromium.org <jamiewalch@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-13 00:13:48 +0000 |
commit | 09eabd65c680e41cb3565e13d8d3488f5065db4b (patch) | |
tree | 33e255b078618e9212f5538f0de99925fc542e68 /remoting/protocol | |
parent | 3570ac4e041b3d2f7c314aa1094955d8c982fc13 (diff) | |
download | chromium_src-09eabd65c680e41cb3565e13d8d3488f5065db4b.zip chromium_src-09eabd65c680e41cb3565e13d8d3488f5065db4b.tar.gz chromium_src-09eabd65c680e41cb3565e13d8d3488f5065db4b.tar.bz2 |
Added JsonMessage to the control channel.
This adds the client plumbing needed to get an arbitrary JSON message from client to host, or vice versa. This will allow us to extend the protocol at short notice, without needing to wait for client plugin changes to be promoted to Stable.
BUG=
Review URL: https://chromiumcodereview.appspot.com/22477006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217127 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/protocol')
-rw-r--r-- | remoting/protocol/client_control_dispatcher.cc | 9 | ||||
-rw-r--r-- | remoting/protocol/client_control_dispatcher.h | 1 | ||||
-rw-r--r-- | remoting/protocol/client_stub.h | 4 | ||||
-rw-r--r-- | remoting/protocol/host_control_dispatcher.cc | 9 | ||||
-rw-r--r-- | remoting/protocol/host_control_dispatcher.h | 2 | ||||
-rw-r--r-- | remoting/protocol/host_stub.h | 4 | ||||
-rw-r--r-- | remoting/protocol/protocol_mock_objects.h | 2 |
7 files changed, 31 insertions, 0 deletions
diff --git a/remoting/protocol/client_control_dispatcher.cc b/remoting/protocol/client_control_dispatcher.cc index 8bb918e..a42c3f6 100644 --- a/remoting/protocol/client_control_dispatcher.cc +++ b/remoting/protocol/client_control_dispatcher.cc @@ -74,6 +74,13 @@ void ClientControlDispatcher::RequestPairing( writer_.Write(SerializeAndFrameMessage(message), base::Closure()); } +void ClientControlDispatcher::DeliverClientMessage( + const ExtensionMessage& message) { + ControlMessage control_message; + control_message.mutable_extension_message()->CopyFrom(message); + writer_.Write(SerializeAndFrameMessage(control_message), base::Closure()); +} + void ClientControlDispatcher::OnMessageReceived( scoped_ptr<ControlMessage> message, const base::Closure& done_task) { DCHECK(client_stub_); @@ -88,6 +95,8 @@ void ClientControlDispatcher::OnMessageReceived( client_stub_->SetCursorShape(message->cursor_shape()); } else if (message->has_pairing_response()) { client_stub_->SetPairingResponse(message->pairing_response()); + } else if (message->has_extension_message()) { + client_stub_->DeliverHostMessage(message->extension_message()); } else { LOG(WARNING) << "Unknown control message received."; } diff --git a/remoting/protocol/client_control_dispatcher.h b/remoting/protocol/client_control_dispatcher.h index b2a0bfa..556ce72 100644 --- a/remoting/protocol/client_control_dispatcher.h +++ b/remoting/protocol/client_control_dispatcher.h @@ -40,6 +40,7 @@ class ClientControlDispatcher : public ChannelDispatcherBase, virtual void ControlAudio(const AudioControl& audio_control) OVERRIDE; virtual void SetCapabilities(const Capabilities& capabilities) OVERRIDE; virtual void RequestPairing(const PairingRequest& pairing_request) OVERRIDE; + virtual void DeliverClientMessage(const ExtensionMessage& message) OVERRIDE; // Sets the ClientStub that will be called for each incoming control // message. |client_stub| must outlive this object. diff --git a/remoting/protocol/client_stub.h b/remoting/protocol/client_stub.h index 4507ba7..d57f948 100644 --- a/remoting/protocol/client_stub.h +++ b/remoting/protocol/client_stub.h @@ -18,6 +18,7 @@ namespace remoting { namespace protocol { class Capabilities; +class ExtensionMessage; class PairingResponse; class ClientStub : public ClipboardStub, @@ -32,6 +33,9 @@ class ClientStub : public ClipboardStub, // Passes a pairing response message to the client. virtual void SetPairingResponse(const PairingResponse& pairing_response) = 0; + // Deliver an extension message from the host to the client. + virtual void DeliverHostMessage(const ExtensionMessage& message) = 0; + private: DISALLOW_COPY_AND_ASSIGN(ClientStub); }; diff --git a/remoting/protocol/host_control_dispatcher.cc b/remoting/protocol/host_control_dispatcher.cc index b979e36..26f09fc 100644 --- a/remoting/protocol/host_control_dispatcher.cc +++ b/remoting/protocol/host_control_dispatcher.cc @@ -46,6 +46,13 @@ void HostControlDispatcher::SetPairingResponse( writer_.Write(SerializeAndFrameMessage(message), base::Closure()); } +void HostControlDispatcher::DeliverHostMessage( + const ExtensionMessage& message) { + ControlMessage control_message; + control_message.mutable_extension_message()->CopyFrom(message); + writer_.Write(SerializeAndFrameMessage(control_message), base::Closure()); +} + void HostControlDispatcher::InjectClipboardEvent(const ClipboardEvent& event) { ControlMessage message; message.mutable_clipboard_event()->CopyFrom(event); @@ -78,6 +85,8 @@ void HostControlDispatcher::OnMessageReceived( host_stub_->SetCapabilities(message->capabilities()); } else if (message->has_pairing_request()) { host_stub_->RequestPairing(message->pairing_request()); + } else if (message->has_extension_message()) { + host_stub_->DeliverClientMessage(message->extension_message()); } else { LOG(WARNING) << "Unknown control message received."; } diff --git a/remoting/protocol/host_control_dispatcher.h b/remoting/protocol/host_control_dispatcher.h index 4620be1..82aa793 100644 --- a/remoting/protocol/host_control_dispatcher.h +++ b/remoting/protocol/host_control_dispatcher.h @@ -37,6 +37,8 @@ class HostControlDispatcher : public ChannelDispatcherBase, virtual void SetCapabilities(const Capabilities& capabilities) OVERRIDE; virtual void SetPairingResponse( const PairingResponse& pairing_response) OVERRIDE; + virtual void DeliverHostMessage( + const ExtensionMessage& message) OVERRIDE; // ClipboardStub implementation for sending clipboard data to client. virtual void InjectClipboardEvent(const ClipboardEvent& event) OVERRIDE; diff --git a/remoting/protocol/host_stub.h b/remoting/protocol/host_stub.h index 46d7534..cf9fa0b 100644 --- a/remoting/protocol/host_stub.h +++ b/remoting/protocol/host_stub.h @@ -17,6 +17,7 @@ namespace protocol { class AudioControl; class Capabilities; class ClientResolution; +class ExtensionMessage; class PairingResponse; class PairingRequest; class VideoControl; @@ -43,6 +44,9 @@ class HostStub { // Requests pairing between the host and client for PIN-less authentication. virtual void RequestPairing(const PairingRequest& pairing_request) = 0; + // Deliver an extension message from the client to the host. + virtual void DeliverClientMessage(const ExtensionMessage& message) = 0; + protected: virtual ~HostStub() {} diff --git a/remoting/protocol/protocol_mock_objects.h b/remoting/protocol/protocol_mock_objects.h index 74435db..16bb866 100644 --- a/remoting/protocol/protocol_mock_objects.h +++ b/remoting/protocol/protocol_mock_objects.h @@ -114,6 +114,7 @@ class MockHostStub : public HostStub { MOCK_METHOD1(SetCapabilities, void(const Capabilities& capabilities)); MOCK_METHOD1(RequestPairing, void(const PairingRequest& pairing_request)); + MOCK_METHOD1(DeliverClientMessage, void(const ExtensionMessage& message)); private: DISALLOW_COPY_AND_ASSIGN(MockHostStub); @@ -128,6 +129,7 @@ class MockClientStub : public ClientStub { MOCK_METHOD1(SetCapabilities, void(const Capabilities& capabilities)); MOCK_METHOD1(SetPairingResponse, void(const PairingResponse& pairing_response)); + MOCK_METHOD1(DeliverHostMessage, void(const ExtensionMessage& message)); // ClipboardStub mock implementation. MOCK_METHOD1(InjectClipboardEvent, void(const ClipboardEvent& event)); |