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

Side by Side Diff: remoting/client/jni/jni_client.cc

Issue 2745583008: Refactoring out the chromoting jni runtime class in favor of chromoting client runtime. (Closed)
Patch Set: Missed out on a () Created 3 years, 9 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 unified diff | Download patch
OLDNEW
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/chromoting_client_runtime.h"
11 #include "remoting/client/jni/chromoting_jni_instance.h" 12 #include "remoting/client/jni/chromoting_jni_instance.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/connect_to_host_info.h"
14 #include "remoting/client/jni/jni_gl_display_handler.h" 14 #include "remoting/client/jni/jni_gl_display_handler.h"
15 #include "remoting/client/jni/jni_pairing_secret_fetcher.h" 15 #include "remoting/client/jni/jni_pairing_secret_fetcher.h"
16 #include "remoting/client/jni/jni_touch_event_data.h" 16 #include "remoting/client/jni/jni_touch_event_data.h"
17 #include "remoting/protocol/video_renderer.h" 17 #include "remoting/protocol/video_renderer.h"
18 18
19 using base::android::ConvertJavaStringToUTF8; 19 using base::android::ConvertJavaStringToUTF8;
20 using base::android::ConvertUTF8ToJavaString; 20 using base::android::ConvertUTF8ToJavaString;
21 using base::android::JavaParamRef; 21 using base::android::JavaParamRef;
22 using base::android::ScopedJavaLocalRef; 22 using base::android::ScopedJavaLocalRef;
23 23
24 namespace remoting { 24 namespace remoting {
25 25
26 JniClient::JniClient(ChromotingJniRuntime* runtime, 26 JniClient::JniClient(base::android::ScopedJavaGlobalRef<jobject> java_client)
27 base::android::ScopedJavaGlobalRef<jobject> java_client) 27 : java_client_(java_client), weak_factory_(this) {
28 : runtime_(runtime), 28 runtime_ = ChromotingClientRuntime::GetInstance();
29 java_client_(java_client),
30 weak_factory_(this) {
31 weak_ptr_ = weak_factory_.GetWeakPtr(); 29 weak_ptr_ = weak_factory_.GetWeakPtr();
32 } 30 }
33 31
34 JniClient::~JniClient() { 32 JniClient::~JniClient() {
35 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); 33 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread());
36 34
37 // The session must be shut down first, since it depends on our other 35 // The session must be shut down first, since it depends on our other
38 // components' still being alive. 36 // components' still being alive.
39 DisconnectFromHost(); 37 DisconnectFromHost();
40 } 38 }
41 39
42 void JniClient::ConnectToHost(const ConnectToHostInfo& info) { 40 void JniClient::ConnectToHost(const ConnectToHostInfo& info) {
43 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); 41 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread());
44 DCHECK(!display_handler_); 42 DCHECK(!display_handler_);
45 DCHECK(!session_); 43 DCHECK(!session_);
46 DCHECK(!secret_fetcher_); 44 DCHECK(!secret_fetcher_);
47 display_handler_.reset(new JniGlDisplayHandler(runtime_, java_client_)); 45 display_handler_.reset(new JniGlDisplayHandler(java_client_));
48 secret_fetcher_.reset( 46 secret_fetcher_.reset(
49 new JniPairingSecretFetcher(runtime_, GetWeakPtr(), info.host_id)); 47 new JniPairingSecretFetcher(GetWeakPtr(), info.host_id));
50 session_.reset(new ChromotingJniInstance( 48 session_.reset(
51 runtime_, GetWeakPtr(), secret_fetcher_->GetWeakPtr(), 49 new ChromotingJniInstance(GetWeakPtr(), secret_fetcher_->GetWeakPtr(),
52 display_handler_->CreateCursorShapeStub(), 50 display_handler_->CreateCursorShapeStub(),
53 display_handler_->CreateVideoRenderer(), info)); 51 display_handler_->CreateVideoRenderer(), info));
54 session_->Connect(); 52 session_->Connect();
55 } 53 }
56 54
57 void JniClient::DisconnectFromHost() { 55 void JniClient::DisconnectFromHost() {
58 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); 56 DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread());
59 if (session_) { 57 if (session_) {
60 session_->Disconnect(); 58 session_->Disconnect();
61 runtime_->network_task_runner()->DeleteSoon(FROM_HERE, 59 runtime_->network_task_runner()->DeleteSoon(FROM_HERE,
62 session_.release()); 60 session_.release());
63 } 61 }
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 void JniClient::Destroy(JNIEnv* env, const JavaParamRef<jobject>& caller) { 278 void JniClient::Destroy(JNIEnv* env, const JavaParamRef<jobject>& caller) {
281 delete this; 279 delete this;
282 } 280 }
283 281
284 base::WeakPtr<JniClient> JniClient::GetWeakPtr() { 282 base::WeakPtr<JniClient> JniClient::GetWeakPtr() {
285 return weak_ptr_; 283 return weak_ptr_;
286 } 284 }
287 285
288 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) { 286 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) {
289 return reinterpret_cast<intptr_t>( 287 return reinterpret_cast<intptr_t>(
290 new JniClient(ChromotingJniRuntime::GetInstance(), 288 new JniClient(base::android::ScopedJavaGlobalRef<jobject>(env, caller)));
291 base::android::ScopedJavaGlobalRef<jobject>(env, caller)));
292 } 289 }
293 290
294 } // namespace remoting 291 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698