OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "remoting/client/jni/jni_client.h" | 5 #include "remoting/client/jni/jni_client.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "jni/Client_jni.h" | 10 #include "jni/Client_jni.h" |
11 #include "remoting/client/jni/chromoting_jni_instance.h" | 11 #include "remoting/client/jni/chromoting_jni_instance.h" |
12 #include "remoting/client/jni/chromoting_jni_runtime.h" | 12 #include "remoting/client/jni/chromoting_jni_runtime.h" |
| 13 #include "remoting/client/jni/connect_to_host_info.h" |
13 #include "remoting/client/jni/jni_gl_display_handler.h" | 14 #include "remoting/client/jni/jni_gl_display_handler.h" |
14 #include "remoting/client/jni/jni_pairing_secret_fetcher.h" | 15 #include "remoting/client/jni/jni_pairing_secret_fetcher.h" |
15 #include "remoting/client/jni/jni_touch_event_data.h" | 16 #include "remoting/client/jni/jni_touch_event_data.h" |
16 #include "remoting/protocol/video_renderer.h" | 17 #include "remoting/protocol/video_renderer.h" |
17 | 18 |
18 using base::android::ConvertJavaStringToUTF8; | 19 using base::android::ConvertJavaStringToUTF8; |
19 using base::android::ConvertUTF8ToJavaString; | 20 using base::android::ConvertUTF8ToJavaString; |
20 using base::android::JavaParamRef; | 21 using base::android::JavaParamRef; |
21 using base::android::ScopedJavaLocalRef; | 22 using base::android::ScopedJavaLocalRef; |
22 | 23 |
23 namespace remoting { | 24 namespace remoting { |
24 | 25 |
25 JniClient::JniClient(ChromotingJniRuntime* runtime, | 26 JniClient::JniClient(ChromotingJniRuntime* runtime, |
26 base::android::ScopedJavaGlobalRef<jobject> java_client) | 27 base::android::ScopedJavaGlobalRef<jobject> java_client) |
27 : runtime_(runtime), | 28 : runtime_(runtime), |
28 java_client_(java_client), | 29 java_client_(java_client), |
29 weak_factory_(this) { | 30 weak_factory_(this) { |
30 weak_ptr_ = weak_factory_.GetWeakPtr(); | 31 weak_ptr_ = weak_factory_.GetWeakPtr(); |
31 } | 32 } |
32 | 33 |
33 JniClient::~JniClient() { | 34 JniClient::~JniClient() { |
34 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); | 35 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); |
35 | 36 |
36 // The session must be shut down first, since it depends on our other | 37 // The session must be shut down first, since it depends on our other |
37 // components' still being alive. | 38 // components' still being alive. |
38 DisconnectFromHost(); | 39 DisconnectFromHost(); |
39 } | 40 } |
40 | 41 |
41 void JniClient::ConnectToHost(const std::string& username, | 42 void JniClient::ConnectToHost(const ConnectToHostInfo& info) { |
42 const std::string& auth_token, | |
43 const std::string& host_jid, | |
44 const std::string& host_id, | |
45 const std::string& host_pubkey, | |
46 const std::string& pairing_id, | |
47 const std::string& pairing_secret, | |
48 const std::string& capabilities, | |
49 const std::string& flags, | |
50 const std::string& host_version, | |
51 const std::string& host_os, | |
52 const std::string& host_os_version) { | |
53 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); | 43 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); |
54 DCHECK(!display_handler_); | 44 DCHECK(!display_handler_); |
55 DCHECK(!session_); | 45 DCHECK(!session_); |
56 DCHECK(!secret_fetcher_); | 46 DCHECK(!secret_fetcher_); |
57 display_handler_.reset(new JniGlDisplayHandler(runtime_, java_client_)); | 47 display_handler_.reset(new JniGlDisplayHandler(runtime_, java_client_)); |
58 secret_fetcher_.reset(new JniPairingSecretFetcher(runtime_, GetWeakPtr(), | 48 secret_fetcher_.reset( |
59 host_id)); | 49 new JniPairingSecretFetcher(runtime_, GetWeakPtr(), info.host_id)); |
60 // TODO(BUG 680752): Create ClientTelemetryLogger here. No need to pass host | |
61 // info all the way down. Currently we have to do that due to thread | |
62 // restriction. | |
63 session_.reset(new ChromotingJniInstance( | 50 session_.reset(new ChromotingJniInstance( |
64 runtime_, GetWeakPtr(), secret_fetcher_->GetWeakPtr(), | 51 runtime_, GetWeakPtr(), secret_fetcher_->GetWeakPtr(), |
65 display_handler_->CreateCursorShapeStub(), | 52 display_handler_->CreateCursorShapeStub(), |
66 display_handler_->CreateVideoRenderer(), | 53 display_handler_->CreateVideoRenderer(), info)); |
67 username, auth_token, host_jid, host_id, | |
68 host_pubkey, pairing_id, pairing_secret, capabilities, flags, | |
69 host_version, host_os, host_os_version)); | |
70 session_->Connect(); | 54 session_->Connect(); |
71 } | 55 } |
72 | 56 |
73 void JniClient::DisconnectFromHost() { | 57 void JniClient::DisconnectFromHost() { |
74 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); | 58 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); |
75 if (session_) { | 59 if (session_) { |
76 session_->Disconnect(); | 60 session_->Disconnect(); |
77 runtime_->network_task_runner()->DeleteSoon(FROM_HERE, | 61 runtime_->network_task_runner()->DeleteSoon(FROM_HERE, |
78 session_.release()); | 62 session_.release()); |
79 } | 63 } |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 | 135 |
152 // static | 136 // static |
153 bool JniClient::RegisterJni(JNIEnv* env) { | 137 bool JniClient::RegisterJni(JNIEnv* env) { |
154 return RegisterNativesImpl(env); | 138 return RegisterNativesImpl(env); |
155 } | 139 } |
156 | 140 |
157 void JniClient::Connect( | 141 void JniClient::Connect( |
158 JNIEnv* env, | 142 JNIEnv* env, |
159 const base::android::JavaParamRef<jobject>& caller, | 143 const base::android::JavaParamRef<jobject>& caller, |
160 const base::android::JavaParamRef<jstring>& username, | 144 const base::android::JavaParamRef<jstring>& username, |
161 const base::android::JavaParamRef<jstring>& authToken, | 145 const base::android::JavaParamRef<jstring>& auth_token, |
162 const base::android::JavaParamRef<jstring>& hostJid, | 146 const base::android::JavaParamRef<jstring>& host_jid, |
163 const base::android::JavaParamRef<jstring>& hostId, | 147 const base::android::JavaParamRef<jstring>& host_id, |
164 const base::android::JavaParamRef<jstring>& hostPubkey, | 148 const base::android::JavaParamRef<jstring>& host_pubkey, |
165 const base::android::JavaParamRef<jstring>& pairId, | 149 const base::android::JavaParamRef<jstring>& pair_id, |
166 const base::android::JavaParamRef<jstring>& pairSecret, | 150 const base::android::JavaParamRef<jstring>& pair_secret, |
167 const base::android::JavaParamRef<jstring>& capabilities, | 151 const base::android::JavaParamRef<jstring>& capabilities, |
168 const base::android::JavaParamRef<jstring>& flags, | 152 const base::android::JavaParamRef<jstring>& flags, |
169 const base::android::JavaParamRef<jstring>& host_version, | 153 const base::android::JavaParamRef<jstring>& host_version, |
170 const base::android::JavaParamRef<jstring>& host_os, | 154 const base::android::JavaParamRef<jstring>& host_os, |
171 const base::android::JavaParamRef<jstring>& host_os_version) { | 155 const base::android::JavaParamRef<jstring>& host_os_version) { |
172 ConnectToHost(ConvertJavaStringToUTF8(env, username), | 156 ConnectToHostInfo info; |
173 ConvertJavaStringToUTF8(env, authToken), | 157 info.username = ConvertJavaStringToUTF8(env, username); |
174 ConvertJavaStringToUTF8(env, hostJid), | 158 info.auth_token = ConvertJavaStringToUTF8(env, auth_token); |
175 ConvertJavaStringToUTF8(env, hostId), | 159 info.host_jid = ConvertJavaStringToUTF8(env, host_jid); |
176 ConvertJavaStringToUTF8(env, hostPubkey), | 160 info.host_id = ConvertJavaStringToUTF8(env, host_id); |
177 ConvertJavaStringToUTF8(env, pairId), | 161 info.host_pubkey = ConvertJavaStringToUTF8(env, host_pubkey); |
178 ConvertJavaStringToUTF8(env, pairSecret), | 162 info.pairing_id = ConvertJavaStringToUTF8(env, pair_id); |
179 ConvertJavaStringToUTF8(env, capabilities), | 163 info.pairing_secret = ConvertJavaStringToUTF8(env, pair_secret); |
180 ConvertJavaStringToUTF8(env, flags), | 164 info.capabilities = ConvertJavaStringToUTF8(env, capabilities); |
181 ConvertJavaStringToUTF8(env, host_version), | 165 info.flags = ConvertJavaStringToUTF8(env, flags); |
182 ConvertJavaStringToUTF8(env, host_os), | 166 info.host_version = ConvertJavaStringToUTF8(env, host_version); |
183 ConvertJavaStringToUTF8(env, host_os_version)); | 167 info.host_os = ConvertJavaStringToUTF8(env, host_os); |
| 168 info.host_os_version = ConvertJavaStringToUTF8(env, host_os_version); |
| 169 ConnectToHost(info); |
184 } | 170 } |
185 | 171 |
186 void JniClient::Disconnect(JNIEnv* env, | 172 void JniClient::Disconnect(JNIEnv* env, |
187 const base::android::JavaParamRef<jobject>& caller) { | 173 const base::android::JavaParamRef<jobject>& caller) { |
188 DisconnectFromHost(); | 174 DisconnectFromHost(); |
189 } | 175 } |
190 | 176 |
191 void JniClient::AuthenticationResponse( | 177 void JniClient::AuthenticationResponse( |
192 JNIEnv* env, | 178 JNIEnv* env, |
193 const JavaParamRef<jobject>& caller, | 179 const JavaParamRef<jobject>& caller, |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 return weak_ptr_; | 285 return weak_ptr_; |
300 } | 286 } |
301 | 287 |
302 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) { | 288 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) { |
303 return reinterpret_cast<intptr_t>( | 289 return reinterpret_cast<intptr_t>( |
304 new JniClient(ChromotingJniRuntime::GetInstance(), | 290 new JniClient(ChromotingJniRuntime::GetInstance(), |
305 base::android::ScopedJavaGlobalRef<jobject>(env, caller))); | 291 base::android::ScopedJavaGlobalRef<jobject>(env, caller))); |
306 } | 292 } |
307 | 293 |
308 } // namespace remoting | 294 } // namespace remoting |
OLD | NEW |