diff options
-rw-r--r-- | remoting/android/java/src/org/chromium/chromoting/jni/Client.java | 31 | ||||
-rw-r--r-- | remoting/client/jni/chromoting_jni_runtime.cc | 2 | ||||
-rw-r--r-- | remoting/client/jni/chromoting_jni_runtime.h | 2 | ||||
-rw-r--r-- | remoting/client/jni/jni_client.cc | 30 | ||||
-rw-r--r-- | remoting/client/jni/jni_client.h | 30 | ||||
-rw-r--r-- | remoting/client/jni/remoting_jni_onload.cc (renamed from remoting/client/jni/chromoting_jni_onload.cc) | 3 | ||||
-rw-r--r-- | remoting/client/jni/remoting_jni_registrar.cc | 28 | ||||
-rw-r--r-- | remoting/client/jni/remoting_jni_registrar.h | 17 | ||||
-rw-r--r-- | remoting/remoting_android.gypi | 7 |
9 files changed, 146 insertions, 4 deletions
diff --git a/remoting/android/java/src/org/chromium/chromoting/jni/Client.java b/remoting/android/java/src/org/chromium/chromoting/jni/Client.java new file mode 100644 index 0000000..6c67a8c --- /dev/null +++ b/remoting/android/java/src/org/chromium/chromoting/jni/Client.java @@ -0,0 +1,31 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chromoting.jni; + +import org.chromium.base.annotations.JNINamespace; + +/** + * Class to manage a client connection to the host. This class controls the lifetime of the + * corresponding C++ object which implements the connection. A new object should be created for + * each connection to the host, so that notifications from a connection are always sent to the + * right object. + */ +@JNINamespace("remoting") +public class Client { + // Pointer to the C++ object, cast to a |long|. + private long mNativeJniClient; + + public void init() { + mNativeJniClient = nativeInit(); + } + + private native long nativeInit(); + + public void destroy() { + nativeDestroy(mNativeJniClient); + } + + private native void nativeDestroy(long nativeJniClient); +} diff --git a/remoting/client/jni/chromoting_jni_runtime.cc b/remoting/client/jni/chromoting_jni_runtime.cc index 130c895..6bdf286 100644 --- a/remoting/client/jni/chromoting_jni_runtime.cc +++ b/remoting/client/jni/chromoting_jni_runtime.cc @@ -30,7 +30,7 @@ const int kBytesPerPixel = 4; namespace remoting { -bool RegisterJni(JNIEnv* env) { +bool RegisterChromotingJniRuntime(JNIEnv* env) { return remoting::RegisterNativesImpl(env); } diff --git a/remoting/client/jni/chromoting_jni_runtime.h b/remoting/client/jni/chromoting_jni_runtime.h index 1ca1124..5fb4957 100644 --- a/remoting/client/jni/chromoting_jni_runtime.h +++ b/remoting/client/jni/chromoting_jni_runtime.h @@ -18,7 +18,7 @@ template<typename T> struct DefaultSingletonTraits; namespace remoting { -bool RegisterJni(JNIEnv* env); +bool RegisterChromotingJniRuntime(JNIEnv* env); // Houses the global resources on which the Chromoting components run // (e.g. message loops and task runners). Proxies outgoing JNI calls from its diff --git a/remoting/client/jni/jni_client.cc b/remoting/client/jni/jni_client.cc new file mode 100644 index 0000000..0f634ff --- /dev/null +++ b/remoting/client/jni/jni_client.cc @@ -0,0 +1,30 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "remoting/client/jni/jni_client.h" + +#include "jni/Client_jni.h" + +namespace remoting { + +JniClient::JniClient() { +} + +JniClient::~JniClient() { +} + +// static +bool JniClient::RegisterJni(JNIEnv* env) { + return RegisterNativesImpl(env); +} + +void JniClient::Destroy(JNIEnv* env, jobject caller) { + delete this; +} + +static jlong Init(JNIEnv* env, jobject caller) { + return reinterpret_cast<intptr_t>(new JniClient()); +} + +} // namespace remoting diff --git a/remoting/client/jni/jni_client.h b/remoting/client/jni/jni_client.h new file mode 100644 index 0000000..56c6bc1 --- /dev/null +++ b/remoting/client/jni/jni_client.h @@ -0,0 +1,30 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_CLIENT_JNI_JNI_CLIENT_H_ +#define REMOTING_CLIENT_JNI_JNI_CLIENT_H_ + +#include <jni.h> + +#include "base/macros.h" + +namespace remoting { + +class JniClient { + public: + JniClient(); + ~JniClient(); + + // Register C++ methods exposed to Java using JNI. + static bool RegisterJni(JNIEnv* env); + + void Destroy(JNIEnv* env, jobject caller); + + private: + DISALLOW_COPY_AND_ASSIGN(JniClient); +}; + +} // namespace remoting + +#endif // REMOTING_CLIENT_JNI_JNI_CLIENT_H_ diff --git a/remoting/client/jni/chromoting_jni_onload.cc b/remoting/client/jni/remoting_jni_onload.cc index 53e7420..b539747 100644 --- a/remoting/client/jni/chromoting_jni_onload.cc +++ b/remoting/client/jni/remoting_jni_onload.cc @@ -7,8 +7,9 @@ #include "base/android/jni_android.h" #include "base/android/jni_registrar.h" #include "base/android/jni_utils.h" +#include "base/bind.h" #include "net/android/net_jni_registrar.h" -#include "remoting/client/jni/chromoting_jni_runtime.h" +#include "remoting/client/jni/remoting_jni_registrar.h" #include "ui/gfx/android/gfx_jni_registrar.h" namespace { diff --git a/remoting/client/jni/remoting_jni_registrar.cc b/remoting/client/jni/remoting_jni_registrar.cc new file mode 100644 index 0000000..b1be442 --- /dev/null +++ b/remoting/client/jni/remoting_jni_registrar.cc @@ -0,0 +1,28 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + + +#include "remoting/client/jni/remoting_jni_registrar.h" + +#include "base/android/jni_android.h" +#include "base/android/jni_registrar.h" +#include "base/macros.h" +#include "remoting/client/jni/chromoting_jni_runtime.h" +#include "remoting/client/jni/jni_client.h" + +namespace remoting { + +namespace { +const base::android::RegistrationMethod kRemotingRegisteredMethods[] = { + {"JniClient", JniClient::RegisterJni}, + {"ChromotingJniRuntime", RegisterChromotingJniRuntime} +}; +} // namespace + +bool RegisterJni(JNIEnv* env) { + return RegisterNativeMethods(env, kRemotingRegisteredMethods, + arraysize(kRemotingRegisteredMethods)); +} + +} // namespace remoting diff --git a/remoting/client/jni/remoting_jni_registrar.h b/remoting/client/jni/remoting_jni_registrar.h new file mode 100644 index 0000000..e301fbe --- /dev/null +++ b/remoting/client/jni/remoting_jni_registrar.h @@ -0,0 +1,17 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef REMOTING_CLIENT_JNI_REMOTING_JNI_REGISTRAR_H_ +#define REMOTING_CLIENT_JNI_REMOTING_JNI_REGISTRAR_H_ + +#include <jni.h> + +namespace remoting { + +// Register all JNI bindings necessary for remoting. +bool RegisterJni(JNIEnv* env); + +} // namespace remoting + +#endif // REMOTING_CLIENT_JNI_REMOTING_JNI_REGISTRAR_H_ diff --git a/remoting/remoting_android.gypi b/remoting/remoting_android.gypi index c05119d..061465c 100644 --- a/remoting/remoting_android.gypi +++ b/remoting/remoting_android.gypi @@ -10,6 +10,7 @@ 'target_name': 'remoting_jni_headers', 'type': 'none', 'sources': [ + 'android/java/src/org/chromium/chromoting/jni/Client.java', 'android/java/src/org/chromium/chromoting/jni/JniInterface.java', ], 'variables': { @@ -33,11 +34,15 @@ 'client/jni/android_keymap.h', 'client/jni/chromoting_jni_instance.cc', 'client/jni/chromoting_jni_instance.h', - 'client/jni/chromoting_jni_onload.cc', 'client/jni/chromoting_jni_runtime.cc', 'client/jni/chromoting_jni_runtime.h', + 'client/jni/jni_client.cc', + 'client/jni/jni_client.h', 'client/jni/jni_frame_consumer.cc', 'client/jni/jni_frame_consumer.h', + 'client/jni/remoting_jni_onload.cc', + 'client/jni/remoting_jni_registrar.cc', + 'client/jni/remoting_jni_registrar.h', ], }, # end of target 'remoting_client_jni' { |