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

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

Issue 19967007: Various improvements to the Chromoting Android app (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add comments to clarify ChromotingJniRuntime pointer lifetimes Created 7 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « remoting/client/jni/jni_frame_consumer.cc ('k') | remoting/remoting.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 // This file defines functions that implement the static methods declared in a 5 // This file defines functions that implement the static methods declared in a
6 // closely-related Java class in the platform-specific user interface 6 // closely-related Java class in the platform-specific user interface
7 // implementation. In effect, it is the entry point for all JNI calls *into* 7 // implementation. In effect, it is the entry point for all JNI calls *into*
8 // the C++ codebase from Java. The separate ChromotingJni class serves as the 8 // the C++ codebase from Java. The separate ChromotingJniRuntime class serves
9 // corresponding exit point, and is responsible for making all JNI calls 9 // as the corresponding exit point, and is responsible for making all JNI calls
10 // *out of* the C++ codebase into Java. 10 // *out of* the C++ codebase into Java.
11 11
12 #include <jni.h> 12 #include <jni.h>
13 13
14 #include "base/android/jni_android.h" 14 #include "base/android/jni_android.h"
15 #include "base/command_line.h" 15 #include "base/command_line.h"
16 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
17 #include "google_apis/google_api_keys.h" 17 #include "google_apis/google_api_keys.h"
18 #include "remoting/client/jni/chromoting_jni.h"
19 #include "remoting/client/jni/chromoting_jni_instance.h" 18 #include "remoting/client/jni/chromoting_jni_instance.h"
19 #include "remoting/client/jni/chromoting_jni_runtime.h"
20 20
21 // Class and package name of the Java class that declares this file's functions. 21 // Class and package name of the Java class that declares this file's functions.
22 #define JNI_IMPLEMENTATION(method) \ 22 #define JNI_IMPLEMENTATION(method) \
23 Java_org_chromium_chromoting_jni_JniInterface_##method 23 Java_org_chromium_chromoting_jni_JniInterface_##method
24 24
25 extern "C" { 25 extern "C" {
26 26
27 JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { 27 JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
28 base::android::InitVM(vm); 28 base::android::InitVM(vm);
29 return JNI_VERSION_1_2; 29 return JNI_VERSION_1_2;
30 } 30 }
31 31
32 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(loadNative)(JNIEnv* env, 32 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(loadNative)(JNIEnv* env,
33 jobject that, 33 jobject that,
34 jobject context) { 34 jobject context) {
35 base::android::ScopedJavaLocalRef<jobject> context_activity(env, context); 35 base::android::ScopedJavaLocalRef<jobject> context_activity(env, context);
36 base::android::InitApplicationContext(context_activity); 36 base::android::InitApplicationContext(context_activity);
37 37
38 // The google_apis functions check the command-line arguments to make sure no 38 // The google_apis functions check the command-line arguments to make sure no
39 // runtime API keys have been specified by the environment. Unfortunately, we 39 // runtime API keys have been specified by the environment. Unfortunately, we
40 // neither launch Chromium nor have a command line, so we need to prevent 40 // neither launch Chromium nor have a command line, so we need to prevent
41 // them from DCHECKing out when they go looking. 41 // them from DCHECKing out when they go looking.
42 CommandLine::Init(0, NULL); 42 CommandLine::Init(0, NULL);
43 43
44 // Create the singleton now so that the Chromoting threads will be set up. 44 // Create the singleton now so that the Chromoting threads will be set up.
45 remoting::ChromotingJni::GetInstance(); 45 remoting::ChromotingJniRuntime::GetInstance();
46 } 46 }
47 47
48 JNIEXPORT jstring JNICALL JNI_IMPLEMENTATION(getApiKey)(JNIEnv* env, 48 JNIEXPORT jstring JNICALL JNI_IMPLEMENTATION(getApiKey)(JNIEnv* env,
49 jobject that) { 49 jobject that) {
50 return env->NewStringUTF(google_apis::GetAPIKey().c_str()); 50 return env->NewStringUTF(google_apis::GetAPIKey().c_str());
51 } 51 }
52 52
53 JNIEXPORT jstring JNICALL JNI_IMPLEMENTATION(getClientId)(JNIEnv* env, 53 JNIEXPORT jstring JNICALL JNI_IMPLEMENTATION(getClientId)(JNIEnv* env,
54 jobject that) { 54 jobject that) {
55 return env->NewStringUTF( 55 return env->NewStringUTF(
(...skipping 13 matching lines...) Expand all
69 jstring auth_token_jstr, 69 jstring auth_token_jstr,
70 jstring host_jid_jstr, 70 jstring host_jid_jstr,
71 jstring host_id_jstr, 71 jstring host_id_jstr,
72 jstring host_pubkey_jstr) { 72 jstring host_pubkey_jstr) {
73 const char* username_cstr = env->GetStringUTFChars(username_jstr, NULL); 73 const char* username_cstr = env->GetStringUTFChars(username_jstr, NULL);
74 const char* auth_token_cstr = env->GetStringUTFChars(auth_token_jstr, NULL); 74 const char* auth_token_cstr = env->GetStringUTFChars(auth_token_jstr, NULL);
75 const char* host_jid_cstr = env->GetStringUTFChars(host_jid_jstr, NULL); 75 const char* host_jid_cstr = env->GetStringUTFChars(host_jid_jstr, NULL);
76 const char* host_id_cstr = env->GetStringUTFChars(host_id_jstr, NULL); 76 const char* host_id_cstr = env->GetStringUTFChars(host_id_jstr, NULL);
77 const char* host_pubkey_cstr = env->GetStringUTFChars(host_pubkey_jstr, NULL); 77 const char* host_pubkey_cstr = env->GetStringUTFChars(host_pubkey_jstr, NULL);
78 78
79 remoting::ChromotingJni::GetInstance()->ConnectToHost( 79 remoting::ChromotingJniRuntime::GetInstance()->ConnectToHost(
80 username_cstr, 80 username_cstr,
81 auth_token_cstr, 81 auth_token_cstr,
82 host_jid_cstr, 82 host_jid_cstr,
83 host_id_cstr, 83 host_id_cstr,
84 host_pubkey_cstr); 84 host_pubkey_cstr);
85 85
86 env->ReleaseStringUTFChars(username_jstr, username_cstr); 86 env->ReleaseStringUTFChars(username_jstr, username_cstr);
87 env->ReleaseStringUTFChars(auth_token_jstr, auth_token_cstr); 87 env->ReleaseStringUTFChars(auth_token_jstr, auth_token_cstr);
88 env->ReleaseStringUTFChars(host_jid_jstr, host_jid_cstr); 88 env->ReleaseStringUTFChars(host_jid_jstr, host_jid_cstr);
89 env->ReleaseStringUTFChars(host_id_jstr, host_id_cstr); 89 env->ReleaseStringUTFChars(host_id_jstr, host_id_cstr);
90 env->ReleaseStringUTFChars(host_pubkey_jstr, host_pubkey_cstr); 90 env->ReleaseStringUTFChars(host_pubkey_jstr, host_pubkey_cstr);
91 } 91 }
92 92
93 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(disconnectNative)(JNIEnv* env, 93 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(disconnectNative)(JNIEnv* env,
94 jobject that) { 94 jobject that) {
95 remoting::ChromotingJni::GetInstance()->DisconnectFromHost(); 95 remoting::ChromotingJniRuntime::GetInstance()->DisconnectFromHost();
96 } 96 }
97 97
98 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(authenticationResponse)( 98 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(authenticationResponse)(
99 JNIEnv* env, 99 JNIEnv* env,
100 jobject that, 100 jobject that,
101 jstring pin_jstr) { 101 jstring pin_jstr) {
102 const char* pin_cstr = env->GetStringUTFChars(pin_jstr, NULL); 102 const char* pin_cstr = env->GetStringUTFChars(pin_jstr, NULL);
103 103
104 remoting::ChromotingJni::GetInstance()-> 104 remoting::ChromotingJniRuntime::GetInstance()->
105 session()->ProvideSecret(pin_cstr); 105 session()->ProvideSecret(pin_cstr);
106 106
107 env->ReleaseStringUTFChars(pin_jstr, pin_cstr); 107 env->ReleaseStringUTFChars(pin_jstr, pin_cstr);
108 } 108 }
109 109
110 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(scheduleRedrawNative)( 110 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(scheduleRedrawNative)(
111 JNIEnv* env, 111 JNIEnv* env,
112 jobject that) { 112 jobject that) {
113 remoting::ChromotingJni::GetInstance()->session()->RedrawDesktop(); 113 remoting::ChromotingJniRuntime::GetInstance()->session()->RedrawDesktop();
114 } 114 }
115 115
116 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(mouseActionNative)( 116 JNIEXPORT void JNICALL JNI_IMPLEMENTATION(mouseActionNative)(
117 JNIEnv* env, 117 JNIEnv* env,
118 jobject that, 118 jobject that,
119 jint x, 119 jint x,
120 jint y, 120 jint y,
121 jint which_button, 121 jint which_button,
122 jboolean button_down) { 122 jboolean button_down) {
123 remoting::ChromotingJni::GetInstance()->session()->PerformMouseAction( 123 remoting::ChromotingJniRuntime::GetInstance()->session()->PerformMouseAction(
124 x, 124 x,
125 y, 125 y,
126 static_cast<remoting::protocol::MouseEvent_MouseButton>(which_button), 126 static_cast<remoting::protocol::MouseEvent_MouseButton>(which_button),
127 button_down); 127 button_down);
128 } 128 }
129 129
130 } // extern "C" 130 } // extern "C"
OLDNEW
« no previous file with comments | « remoting/client/jni/jni_frame_consumer.cc ('k') | remoting/remoting.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698