Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(559)

Unified Diff: remoting/client/chromoting_session.h

Issue 2753963002: Refactoring and rewriting the chromoting jni instance to be chromoting session. (Closed)
Patch Set: Updating based on feedback. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/client/chromoting_client_runtime.h ('k') | remoting/client/chromoting_session.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/chromoting_session.h
diff --git a/remoting/client/jni/chromoting_jni_instance.h b/remoting/client/chromoting_session.h
similarity index 72%
rename from remoting/client/jni/chromoting_jni_instance.h
rename to remoting/client/chromoting_session.h
index 4b59501ed6ffb9b36ce4a27934e9bbf152c4b3c0..aedd6cf14a4adede96a3414da9f0059ea637a82a 100644
--- a/remoting/client/jni/chromoting_jni_instance.h
+++ b/remoting/client/chromoting_session.h
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef REMOTING_CLIENT_JNI_CHROMOTING_JNI_INSTANCE_H_
-#define REMOTING_CLIENT_JNI_CHROMOTING_JNI_INSTANCE_H_
+#ifndef REMOTING_CLIENT_CHROMOTING_SESSION_H_
+#define REMOTING_CLIENT_CHROMOTING_SESSION_H_
#include <memory>
#include <string>
@@ -16,7 +16,7 @@
#include "remoting/client/client_context.h"
#include "remoting/client/client_telemetry_logger.h"
#include "remoting/client/client_user_interface.h"
-#include "remoting/client/jni/connect_to_host_info.h"
+#include "remoting/client/connect_to_host_info.h"
#include "remoting/proto/control.pb.h"
#include "remoting/proto/event.pb.h"
#include "remoting/protocol/clipboard_stub.h"
@@ -26,34 +26,58 @@
namespace remoting {
namespace protocol {
+class AudioStub;
class ClipboardEvent;
class PerformanceTracker;
class VideoRenderer;
} // namespace protocol
-class AudioPlayerAndroid;
class ChromotingClientRuntime;
-class JniClient;
-class JniPairingSecretFetcher;
-// ChromotingJniInstance is scoped to the session.
+// ChromotingSession is scoped to the session.
// This class is Created on the UI thread but thereafter it is used and
// destroyed on the network thread. Except where indicated, all methods are
// called on the network thread.
-class ChromotingJniInstance
- : public ClientUserInterface,
- public protocol::ClipboardStub {
+class ChromotingSession : public ClientUserInterface,
+ public protocol::ClipboardStub {
public:
+ class Delegate {
+ public:
+ virtual ~Delegate() {}
+
+ // Notifies Java code of the current connection status.
+ virtual void OnConnectionState(protocol::ConnectionToHost::State state,
+ protocol::ErrorCode error) = 0;
+
+ // Saves new pairing credentials to permanent storage.
+ virtual void CommitPairingCredentials(const std::string& host,
+ const std::string& id,
+ const std::string& secret) = 0;
+
+ // Pops up a third party login page to fetch token required for
+ // authentication.
+ virtual void FetchThirdPartyToken(const std::string& token_url,
+ const std::string& client_id,
+ const std::string& scope) = 0;
+
+ // Pass on the set of negotiated capabilities to the client.
+ virtual void SetCapabilities(const std::string& capabilities) = 0;
+
+ // Passes on the deconstructed ExtensionMessage to the client to handle
+ // appropriately.
+ virtual void HandleExtensionMessage(const std::string& type,
+ const std::string& message) = 0;
+ };
+
// Initiates a connection with the specified host. Call from the UI thread.
- // The instance does not take ownership of |jni_runtime|. To connect with an
- // unpaired host, pass in |pairing_id| and |pairing_secret| as empty strings.
- ChromotingJniInstance(base::WeakPtr<JniClient> jni_client,
- base::WeakPtr<JniPairingSecretFetcher> secret_fetcher,
- std::unique_ptr<protocol::CursorShapeStub> cursor_stub,
- std::unique_ptr<protocol::VideoRenderer> video_renderer,
- const ConnectToHostInfo& info);
+ ChromotingSession(base::WeakPtr<ChromotingSession::Delegate> delegate,
+ std::unique_ptr<protocol::CursorShapeStub> cursor_stub,
+ std::unique_ptr<protocol::VideoRenderer> video_renderer,
+ base::WeakPtr<protocol::AudioStub> audio_player,
+ const ConnectToHostInfo& info,
+ protocol::ClientAuthenticationConfig& client_auth_config);
- ~ChromotingJniInstance() override;
+ ~ChromotingSession() override;
// Starts the connection. Can be called on any thread.
void Connect();
@@ -77,12 +101,14 @@ class ChromotingJniInstance
// Provides the user's PIN and resumes the host authentication attempt. Call
// on the UI thread once the user has finished entering this PIN into the UI,
// but only after the UI has been asked to provide a PIN (via FetchSecret()).
- void ProvideSecret(const std::string& pin, bool create_pair,
+ void ProvideSecret(const std::string& pin,
+ bool create_pair,
const std::string& device_name);
// Moves the host's cursor to the specified coordinates, optionally with some
// mouse button depressed. If |button| is BUTTON_UNDEFINED, no click is made.
- void SendMouseEvent(int x, int y,
+ void SendMouseEvent(int x,
+ int y,
protocol::MouseEvent_MouseButton button,
bool button_down);
void SendMouseWheelEvent(int delta_x, int delta_y);
@@ -119,7 +145,7 @@ class ChromotingJniInstance
// Get the weak pointer of the instance. Please only use it on the network
// thread.
- base::WeakPtr<ChromotingJniInstance> GetWeakPtr();
+ base::WeakPtr<ChromotingSession> GetWeakPtr();
private:
void ConnectToHostOnNetworkThread();
@@ -144,12 +170,9 @@ class ChromotingJniInstance
// Used to obtain task runner references.
ChromotingClientRuntime* runtime_;
- base::WeakPtr<JniClient> jni_client_;
-
- base::WeakPtr<JniPairingSecretFetcher> secret_fetcher_;
-
+ // Called on UI thread.
+ base::WeakPtr<ChromotingSession::Delegate> delegate_;
ConnectToHostInfo connection_info_;
-
protocol::ClientAuthenticationConfig client_auth_config_;
// This group of variables is to be used on the network thread.
@@ -162,7 +185,8 @@ class ChromotingJniInstance
std::unique_ptr<XmppSignalStrategy> signaling_; // Must outlive client_
protocol::ThirdPartyTokenFetchedCallback third_party_token_fetched_callback_;
- std::unique_ptr<AudioPlayerAndroid> audio_player_;
+ // Called on UI Thread.
+ base::WeakPtr<protocol::AudioStub> audio_player_;
// Indicates whether to establish a new pairing with this host. This is
// modified in ProvideSecret(), but thereafter to be used only from the
@@ -189,12 +213,12 @@ class ChromotingJniInstance
std::unique_ptr<ClientTelemetryLogger> logger_;
- base::WeakPtr<ChromotingJniInstance> weak_ptr_;
- base::WeakPtrFactory<ChromotingJniInstance> weak_factory_;
+ base::WeakPtr<ChromotingSession> weak_ptr_;
+ base::WeakPtrFactory<ChromotingSession> weak_factory_;
- DISALLOW_COPY_AND_ASSIGN(ChromotingJniInstance);
+ DISALLOW_COPY_AND_ASSIGN(ChromotingSession);
};
} // namespace remoting
-#endif // REMOTING_CLIENT_JNI_CHROMOTING_JNI_INSTANCE_H_
+#endif // REMOTING_CLIENT_CHROMOTING_SESSION_H_
« no previous file with comments | « remoting/client/chromoting_client_runtime.h ('k') | remoting/client/chromoting_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698