Index: remoting/client/jni/chromoting_jni_instance.h |
diff --git a/remoting/client/jni/chromoting_jni_instance.h b/remoting/client/jni/chromoting_jni_instance.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7326b4fd97a3cf5c14ce984e25ce105f70d3ef81 |
--- /dev/null |
+++ b/remoting/client/jni/chromoting_jni_instance.h |
@@ -0,0 +1,91 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef REMOTING_CLIENT_CHROMOTING_JNI_INSTANCE_H_ |
+#define REMOTING_CLIENT_CHROMOTING_JNI_INSTANCE_H_ |
+ |
+#include <jni.h> |
+#include <string> |
+ |
+#include "base/at_exit.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "base/message_loop/message_loop.h" |
+#include "net/url_request/url_request_context_getter.h" |
+#include "remoting/base/auto_thread.h" |
+#include "remoting/client/client_user_interface.h" |
+ |
+template<typename T> struct DefaultSingletonTraits; |
+ |
+// Class and package name of the Java class supporting the methods we call. |
+const char* const JAVA_CLASS="org/chromium/chromoting/jni/JNIInterface"; |
+ |
+namespace remoting { |
+ |
+// ClientUserInterface that makes and (indirectly) receives JNI calls. |
+class ChromotingJNIInstance : public ClientUserInterface { |
Wez
2013/07/11 00:56:23
Having ChromotingJNIInstance be a singleton, and i
solb
2013/07/11 04:29:05
Yes, we can only handle a single *concurrent* conn
|
+ public: |
+ static ChromotingJNIInstance* GetInstance(); |
Wez
2013/07/11 00:56:23
nit: Add a comment to explain this, e.g. why it on
solb
2013/07/11 04:29:05
Done.
|
+ |
+ // Call from UI thread. |
Wez
2013/07/11 00:56:23
See Google C++ style guide for comment style requi
solb
2013/07/11 04:29:05
Done.
|
+ void ConnectToHost( |
+ jstring username, |
+ jstring auth_token, |
+ jstring host_jid, |
+ jstring host_id, |
+ jstring host_pubkey); |
+ |
+ // Call from UI thread. |
+ void DisconnectFromHost(); |
+ |
+ // ClientUserInterface implementation: |
Wez
2013/07/11 00:56:23
nit: : -> .
solb
2013/07/11 04:29:05
Done.
|
+ virtual void OnConnectionState( |
+ protocol::ConnectionToHost::State state, |
+ protocol::ErrorCode error) OVERRIDE; |
+ virtual void OnConnectionReady(bool ready) OVERRIDE; |
+ virtual void SetCapabilities(const std::string& capabilities) OVERRIDE; |
+ virtual void SetPairingResponse( |
+ const protocol::PairingResponse& response) OVERRIDE; |
+ virtual protocol::ClipboardStub* GetClipboardStub() OVERRIDE; |
+ virtual protocol::CursorShapeStub* GetCursorShapeStub() OVERRIDE; |
+ virtual scoped_ptr<protocol::ThirdPartyClientAuthenticator::TokenFetcher> |
+ GetTokenFetcher(const std::string& host_public_key) OVERRIDE; |
+ |
+ private: |
+ ChromotingJNIInstance(); |
+ virtual ~ChromotingJNIInstance(); |
+ |
+ // Reusable between sessions: |
Wez
2013/07/11 00:56:23
As above, : -> . and see style guide re comment st
solb
2013/07/11 04:29:05
Done.
|
+ jclass class_; // Reference to the Java class into which we make JNI calls. |
+ scoped_ptr<base::AtExitManager> collector_; |
+ scoped_ptr<base::MessageLoopForUI> ui_loop_; |
Wez
2013/07/11 00:56:23
Add a comment to explain what |ui_loop_| is for, i
solb
2013/07/11 04:29:05
Done.
|
+ scoped_refptr<AutoThreadTaskRunner> ui_runner_; |
Wez
2013/07/11 00:56:23
nit: ui_task_runner_
solb
2013/07/11 04:29:05
Done.
|
+ scoped_refptr<AutoThreadTaskRunner> net_runner_; |
Wez
2013/07/11 00:56:23
nit: network_task_runner_
solb
2013/07/11 04:29:05
Done.
|
+ scoped_refptr<AutoThreadTaskRunner> disp_runner_; |
Wez
2013/07/11 00:56:23
nit: display_task_runner_
solb
2013/07/11 04:29:05
Done.
|
+ scoped_refptr<net::URLRequestContextGetter> url_requester_; |
+ |
+ // Java string handles: |
+ jstring username_jstr_; |
+ jstring auth_token_jstr_; |
+ jstring host_jid_jstr_; |
+ jstring host_id_jstr_; |
+ jstring host_pubkey_jstr_; |
+ jstring pin_jstr_; |
+ |
+ // C string pointers: |
+ const char* username_cstr_; |
+ const char* auth_token_cstr_; |
+ const char* host_jid_cstr_; |
+ const char* host_id_cstr_; |
+ const char* host_pubkey_cstr_; |
+ const char* pin_cstr_; |
Wez
2013/07/11 00:56:23
Replace these and the jstring references with std:
solb
2013/07/11 04:29:05
Done.
|
+ |
+ friend struct DefaultSingletonTraits<ChromotingJNIInstance>; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ChromotingJNIInstance); |
+}; |
+ |
+} // namespace remoting |
+ |
+#endif |