chromium/remoting/ios/session/remoting_client_session_delegate.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef REMOTING_IOS_SESSION_REMOTING_CLIENT_SESSION_DELEGATE_H_
#define REMOTING_IOS_SESSION_REMOTING_CLIENT_SESSION_DELEGATE_H_

#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "remoting/client/chromoting_session.h"
#include "remoting/protocol/connection_to_host.h"

@class RemotingClient;

namespace remoting {

class ChromotingClientRuntime;

class RemotingClientSessionDelegate : public ChromotingSession::Delegate {
 public:
  RemotingClientSessionDelegate(RemotingClient* client);

  RemotingClientSessionDelegate(const RemotingClientSessionDelegate&) = delete;
  RemotingClientSessionDelegate& operator=(const RemotingClientSessionDelegate&) =
      delete;

  ~RemotingClientSessionDelegate() override;

  // ChromotingSession::Delegate implementation
  void OnConnectionState(protocol::ConnectionToHost::State state,
                         protocol::ErrorCode error) override;
  void CommitPairingCredentials(const std::string& host,
                                const std::string& id,
                                const std::string& secret) override;
  void FetchSecret(
      bool pairing_supported,
      const protocol::SecretFetchedCallback& secret_fetched_callback) override;
  void SetCapabilities(const std::string& capabilities) override;
  void HandleExtensionMessage(const std::string& type,
                              const std::string& message) override;

  base::WeakPtr<RemotingClientSessionDelegate> GetWeakPtr();

 private:
  raw_ptr<ChromotingClientRuntime> runtime_;
  __weak id client_;

  base::WeakPtrFactory<RemotingClientSessionDelegate> weak_factory_;
};

}  // namespace remoting

#endif  // REMOTING_IOS_SESSION_REMOTING_CLIENT_SESSION_DELEGATE_H_