OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/chromoting_jni_runtime.h" | 5 #include "remoting/client/jni/chromoting_jni_runtime.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 } | 70 } |
71 | 71 |
72 static void Connect(JNIEnv* env, | 72 static void Connect(JNIEnv* env, |
73 jclass clazz, | 73 jclass clazz, |
74 jstring username, | 74 jstring username, |
75 jstring authToken, | 75 jstring authToken, |
76 jstring hostJid, | 76 jstring hostJid, |
77 jstring hostId, | 77 jstring hostId, |
78 jstring hostPubkey, | 78 jstring hostPubkey, |
79 jstring pairId, | 79 jstring pairId, |
80 jstring pairSecret) { | 80 jstring pairSecret, |
| 81 jstring capabilities) { |
81 remoting::ChromotingJniRuntime::GetInstance()->ConnectToHost( | 82 remoting::ChromotingJniRuntime::GetInstance()->ConnectToHost( |
82 ConvertJavaStringToUTF8(env, username).c_str(), | 83 ConvertJavaStringToUTF8(env, username).c_str(), |
83 ConvertJavaStringToUTF8(env, authToken).c_str(), | 84 ConvertJavaStringToUTF8(env, authToken).c_str(), |
84 ConvertJavaStringToUTF8(env, hostJid).c_str(), | 85 ConvertJavaStringToUTF8(env, hostJid).c_str(), |
85 ConvertJavaStringToUTF8(env, hostId).c_str(), | 86 ConvertJavaStringToUTF8(env, hostId).c_str(), |
86 ConvertJavaStringToUTF8(env, hostPubkey).c_str(), | 87 ConvertJavaStringToUTF8(env, hostPubkey).c_str(), |
87 ConvertJavaStringToUTF8(env, pairId).c_str(), | 88 ConvertJavaStringToUTF8(env, pairId).c_str(), |
88 ConvertJavaStringToUTF8(env, pairSecret).c_str()); | 89 ConvertJavaStringToUTF8(env, pairSecret).c_str(), |
| 90 ConvertJavaStringToUTF8(env, capabilities).c_str()); |
89 } | 91 } |
90 | 92 |
91 static void Disconnect(JNIEnv* env, jclass clazz) { | 93 static void Disconnect(JNIEnv* env, jclass clazz) { |
92 remoting::ChromotingJniRuntime::GetInstance()->DisconnectFromHost(); | 94 remoting::ChromotingJniRuntime::GetInstance()->DisconnectFromHost(); |
93 } | 95 } |
94 | 96 |
95 static void AuthenticationResponse(JNIEnv* env, | 97 static void AuthenticationResponse(JNIEnv* env, |
96 jclass clazz, | 98 jclass clazz, |
97 jstring pin, | 99 jstring pin, |
98 jboolean createPair, | 100 jboolean createPair, |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 jstring token, | 151 jstring token, |
150 jstring shared_secret) { | 152 jstring shared_secret) { |
151 ChromotingJniRuntime* runtime = remoting::ChromotingJniRuntime::GetInstance(); | 153 ChromotingJniRuntime* runtime = remoting::ChromotingJniRuntime::GetInstance(); |
152 runtime->network_task_runner()->PostTask(FROM_HERE, base::Bind( | 154 runtime->network_task_runner()->PostTask(FROM_HERE, base::Bind( |
153 &ChromotingJniInstance::HandleOnThirdPartyTokenFetched, | 155 &ChromotingJniInstance::HandleOnThirdPartyTokenFetched, |
154 runtime->session(), | 156 runtime->session(), |
155 ConvertJavaStringToUTF8(env, token), | 157 ConvertJavaStringToUTF8(env, token), |
156 ConvertJavaStringToUTF8(env, shared_secret))); | 158 ConvertJavaStringToUTF8(env, shared_secret))); |
157 } | 159 } |
158 | 160 |
| 161 static void SendExtensionMessage(JNIEnv* env, |
| 162 jclass clazz, |
| 163 jstring type, |
| 164 jstring data) { |
| 165 remoting::ChromotingJniRuntime::GetInstance()->session()->SendClientMessage( |
| 166 ConvertJavaStringToUTF8(env, type), |
| 167 ConvertJavaStringToUTF8(env, data)); |
| 168 } |
| 169 |
159 // ChromotingJniRuntime implementation. | 170 // ChromotingJniRuntime implementation. |
160 | 171 |
161 // static | 172 // static |
162 ChromotingJniRuntime* ChromotingJniRuntime::GetInstance() { | 173 ChromotingJniRuntime* ChromotingJniRuntime::GetInstance() { |
163 return Singleton<ChromotingJniRuntime>::get(); | 174 return Singleton<ChromotingJniRuntime>::get(); |
164 } | 175 } |
165 | 176 |
166 ChromotingJniRuntime::ChromotingJniRuntime() { | 177 ChromotingJniRuntime::ChromotingJniRuntime() { |
167 at_exit_manager_.reset(new base::AtExitManager()); | 178 at_exit_manager_.reset(new base::AtExitManager()); |
168 | 179 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 done_event.Wait(); | 218 done_event.Wait(); |
208 base::android::DetachFromVM(); | 219 base::android::DetachFromVM(); |
209 } | 220 } |
210 | 221 |
211 void ChromotingJniRuntime::ConnectToHost(const char* username, | 222 void ChromotingJniRuntime::ConnectToHost(const char* username, |
212 const char* auth_token, | 223 const char* auth_token, |
213 const char* host_jid, | 224 const char* host_jid, |
214 const char* host_id, | 225 const char* host_id, |
215 const char* host_pubkey, | 226 const char* host_pubkey, |
216 const char* pairing_id, | 227 const char* pairing_id, |
217 const char* pairing_secret) { | 228 const char* pairing_secret, |
| 229 const char* capabilities) { |
218 DCHECK(ui_task_runner_->BelongsToCurrentThread()); | 230 DCHECK(ui_task_runner_->BelongsToCurrentThread()); |
219 DCHECK(!session_); | 231 DCHECK(!session_); |
220 session_ = new ChromotingJniInstance(this, | 232 session_ = new ChromotingJniInstance(this, |
221 username, | 233 username, |
222 auth_token, | 234 auth_token, |
223 host_jid, | 235 host_jid, |
224 host_id, | 236 host_id, |
225 host_pubkey, | 237 host_pubkey, |
226 pairing_id, | 238 pairing_id, |
227 pairing_secret); | 239 pairing_secret, |
| 240 capabilities); |
228 } | 241 } |
229 | 242 |
230 void ChromotingJniRuntime::DisconnectFromHost() { | 243 void ChromotingJniRuntime::DisconnectFromHost() { |
231 DCHECK(ui_task_runner_->BelongsToCurrentThread()); | 244 DCHECK(ui_task_runner_->BelongsToCurrentThread()); |
232 if (session_) { | 245 if (session_) { |
233 session_->Disconnect(); | 246 session_->Disconnect(); |
234 session_ = NULL; | 247 session_ = NULL; |
235 } | 248 } |
236 } | 249 } |
237 | 250 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 ScopedJavaLocalRef<jstring> j_url = | 287 ScopedJavaLocalRef<jstring> j_url = |
275 ConvertUTF8ToJavaString(env, token_url.spec()); | 288 ConvertUTF8ToJavaString(env, token_url.spec()); |
276 ScopedJavaLocalRef<jstring> j_client_id = | 289 ScopedJavaLocalRef<jstring> j_client_id = |
277 ConvertUTF8ToJavaString(env, client_id); | 290 ConvertUTF8ToJavaString(env, client_id); |
278 ScopedJavaLocalRef<jstring> j_scope = ConvertUTF8ToJavaString(env, scope); | 291 ScopedJavaLocalRef<jstring> j_scope = ConvertUTF8ToJavaString(env, scope); |
279 | 292 |
280 Java_JniInterface_fetchThirdPartyToken( | 293 Java_JniInterface_fetchThirdPartyToken( |
281 env, j_url.obj(), j_client_id.obj(), j_scope.obj()); | 294 env, j_url.obj(), j_client_id.obj(), j_scope.obj()); |
282 } | 295 } |
283 | 296 |
| 297 void ChromotingJniRuntime::SetCapabilities(const std::string& capabilities) { |
| 298 DCHECK(ui_task_runner_->BelongsToCurrentThread()); |
| 299 JNIEnv* env = base::android::AttachCurrentThread(); |
| 300 |
| 301 ScopedJavaLocalRef<jstring> j_cap = |
| 302 ConvertUTF8ToJavaString(env, capabilities); |
| 303 |
| 304 Java_JniInterface_setCapabilities(env, j_cap.obj()); |
| 305 } |
| 306 |
| 307 void ChromotingJniRuntime::HandleExtensionMessage(const std::string& type, |
| 308 const std::string& message) { |
| 309 DCHECK(ui_task_runner_->BelongsToCurrentThread()); |
| 310 JNIEnv* env = base::android::AttachCurrentThread(); |
| 311 |
| 312 ScopedJavaLocalRef<jstring> j_type = ConvertUTF8ToJavaString(env, type); |
| 313 ScopedJavaLocalRef<jstring> j_message = ConvertUTF8ToJavaString(env, message); |
| 314 |
| 315 Java_JniInterface_handleExtensionMessage(env, j_type.obj(), j_message.obj()); |
| 316 } |
| 317 |
284 base::android::ScopedJavaLocalRef<jobject> ChromotingJniRuntime::NewBitmap( | 318 base::android::ScopedJavaLocalRef<jobject> ChromotingJniRuntime::NewBitmap( |
285 webrtc::DesktopSize size) { | 319 webrtc::DesktopSize size) { |
286 JNIEnv* env = base::android::AttachCurrentThread(); | 320 JNIEnv* env = base::android::AttachCurrentThread(); |
287 return Java_JniInterface_newBitmap(env, size.width(), size.height()); | 321 return Java_JniInterface_newBitmap(env, size.width(), size.height()); |
288 } | 322 } |
289 | 323 |
290 void ChromotingJniRuntime::UpdateFrameBitmap(jobject bitmap) { | 324 void ChromotingJniRuntime::UpdateFrameBitmap(jobject bitmap) { |
291 DCHECK(display_task_runner_->BelongsToCurrentThread()); | 325 DCHECK(display_task_runner_->BelongsToCurrentThread()); |
292 | 326 |
293 JNIEnv* env = base::android::AttachCurrentThread(); | 327 JNIEnv* env = base::android::AttachCurrentThread(); |
(...skipping 28 matching lines...) Expand all Loading... |
322 | 356 |
323 JNIEnv* env = base::android::AttachCurrentThread(); | 357 JNIEnv* env = base::android::AttachCurrentThread(); |
324 Java_JniInterface_redrawGraphicsInternal(env); | 358 Java_JniInterface_redrawGraphicsInternal(env); |
325 } | 359 } |
326 | 360 |
327 void ChromotingJniRuntime::DetachFromVmAndSignal(base::WaitableEvent* waiter) { | 361 void ChromotingJniRuntime::DetachFromVmAndSignal(base::WaitableEvent* waiter) { |
328 base::android::DetachFromVM(); | 362 base::android::DetachFromVM(); |
329 waiter->Signal(); | 363 waiter->Signal(); |
330 } | 364 } |
331 } // namespace remoting | 365 } // namespace remoting |
OLD | NEW |