• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_CLIENT_CLIENT_USER_INTERFACE_H_
6 #define REMOTING_CLIENT_CLIENT_USER_INTERFACE_H_
7 
8 #include <string>
9 
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "remoting/protocol/connection_to_host.h"
13 #include "remoting/protocol/third_party_client_authenticator.h"
14 
15 namespace remoting {
16 
17 namespace protocol {
18 class ClipboardStub;
19 class CursorShapeStub;
20 class PairingResponse;
21 }  // namespace protocol
22 
23 // ClientUserInterface is an interface that must be implemented by
24 // applications embedding the Chromoting client, to provide client's user
25 // interface.
26 //
27 // TODO(sergeyu): Cleanup this interface, see crbug.com/138108 .
28 class ClientUserInterface {
29  public:
~ClientUserInterface()30   virtual ~ClientUserInterface() {}
31 
32   // Record the update the state of the connection, updating the UI as needed.
33   virtual void OnConnectionState(protocol::ConnectionToHost::State state,
34                                  protocol::ErrorCode error) = 0;
35   virtual void OnConnectionReady(bool ready) = 0;
36   virtual void OnRouteChanged(const std::string& channel_name,
37                               const protocol::TransportRoute& route) = 0;
38 
39   // Passes the final set of capabilities negotiated between the client and host
40   // to the application.
41   virtual void SetCapabilities(const std::string& capabilities) = 0;
42 
43   // Passes a pairing response message to the client.
44   virtual void SetPairingResponse(
45       const protocol::PairingResponse& pairing_response) = 0;
46 
47   // Deliver an extension message from the host to the client.
48   virtual void DeliverHostMessage(
49       const protocol::ExtensionMessage& message) = 0;
50 
51   // Get the view's ClipboardStub implementation.
52   virtual protocol::ClipboardStub* GetClipboardStub() = 0;
53 
54   // Get the view's CursorShapeStub implementation.
55   virtual protocol::CursorShapeStub* GetCursorShapeStub() = 0;
56 
57   // Get the view's TokenFetcher implementation.
58   // The TokenFetcher implementation may require interactive authentication.
59   virtual scoped_ptr<protocol::ThirdPartyClientAuthenticator::TokenFetcher>
60   GetTokenFetcher(const std::string& host_public_key) = 0;
61 };
62 
63 }  // namespace remoting
64 
65 #endif  // REMOTING_CLIENT_CLIENT_USER_INTERFACE_H_
66