Home | History | Annotate | Download | only in client
      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:
     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