| 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 |