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

Unified Diff: webrtc/modules/utility/include/jvm_android.h

Issue 2533573002: Move ADM specific Android files into modules/audio_device/android/ (Closed)
Patch Set: re-add dep Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/utility/include/jvm_android.h
diff --git a/webrtc/modules/utility/include/jvm_android.h b/webrtc/modules/utility/include/jvm_android.h
deleted file mode 100644
index 51a0bd841a12d27a9d3af892e6a899659ba23dc3..0000000000000000000000000000000000000000
--- a/webrtc/modules/utility/include/jvm_android.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_UTILITY_INCLUDE_JVM_ANDROID_H_
-#define WEBRTC_MODULES_UTILITY_INCLUDE_JVM_ANDROID_H_
-
-#include <jni.h>
-
-#include <memory>
-#include <string>
-
-#include "webrtc/base/thread_checker.h"
-#include "webrtc/modules/utility/include/helpers_android.h"
-
-namespace webrtc {
-
-// The JNI interface pointer (JNIEnv) is valid only in the current thread.
-// Should another thread need to access the Java VM, it must first call
-// AttachCurrentThread() to attach itself to the VM and obtain a JNI interface
-// pointer. The native thread remains attached to the VM until it calls
-// DetachCurrentThread() to detach.
-class AttachCurrentThreadIfNeeded {
- public:
- AttachCurrentThreadIfNeeded();
- ~AttachCurrentThreadIfNeeded();
-
- private:
- rtc::ThreadChecker thread_checker_;
- bool attached_;
-};
-
-// This class is created by the NativeRegistration class and is used to wrap
-// the actual Java object handle (jobject) on which we can call methods from
-// C++ in to Java. See example in JVM for more details.
-// TODO(henrika): extend support for type of function calls.
-class GlobalRef {
- public:
- GlobalRef(JNIEnv* jni, jobject object);
- ~GlobalRef();
-
- jboolean CallBooleanMethod(jmethodID methodID, ...);
- jint CallIntMethod(jmethodID methodID, ...);
- void CallVoidMethod(jmethodID methodID, ...);
-
- private:
- JNIEnv* const jni_;
- const jobject j_object_;
-};
-
-// Wraps the jclass object on which we can call GetMethodId() functions to
-// query method IDs.
-class JavaClass {
- public:
- JavaClass(JNIEnv* jni, jclass clazz) : jni_(jni), j_class_(clazz) {}
- ~JavaClass() {}
-
- jmethodID GetMethodId(const char* name, const char* signature);
- jmethodID GetStaticMethodId(const char* name, const char* signature);
- jobject CallStaticObjectMethod(jmethodID methodID, ...);
- jint CallStaticIntMethod(jmethodID methodID, ...);
-
- protected:
- JNIEnv* const jni_;
- jclass const j_class_;
-};
-
-// Adds support of the NewObject factory method to the JavaClass class.
-// See example in JVM for more details on how to use it.
-class NativeRegistration : public JavaClass {
- public:
- NativeRegistration(JNIEnv* jni, jclass clazz);
- ~NativeRegistration();
-
- std::unique_ptr<GlobalRef> NewObject(
- const char* name, const char* signature, ...);
-
- private:
- JNIEnv* const jni_;
-};
-
-// This class is created by the JVM class and is used to expose methods that
-// needs the JNI interface pointer but its main purpose is to create a
-// NativeRegistration object given name of a Java class and a list of native
-// methods. See example in JVM for more details.
-class JNIEnvironment {
- public:
- explicit JNIEnvironment(JNIEnv* jni);
- ~JNIEnvironment();
-
- // Registers native methods with the Java class specified by |name|.
- // Note that the class name must be one of the names in the static
- // |loaded_classes| array defined in jvm_android.cc.
- // This method must be called on the construction thread.
- std::unique_ptr<NativeRegistration> RegisterNatives(
- const char* name, const JNINativeMethod *methods, int num_methods);
-
- // Converts from Java string to std::string.
- // This method must be called on the construction thread.
- std::string JavaToStdString(const jstring& j_string);
-
- private:
- rtc::ThreadChecker thread_checker_;
- JNIEnv* const jni_;
-};
-
-// Main class for working with Java from C++ using JNI in WebRTC.
-//
-// Example usage:
-//
-// // At initialization (e.g. in JNI_OnLoad), call JVM::Initialize.
-// JNIEnv* jni = ::base::android::AttachCurrentThread();
-// JavaVM* jvm = NULL;
-// jni->GetJavaVM(&jvm);
-// jobject context = ::base::android::GetApplicationContext();
-// webrtc::JVM::Initialize(jvm, context);
-//
-// // Header (.h) file of example class called User.
-// std::unique_ptr<JNIEnvironment> env;
-// std::unique_ptr<NativeRegistration> reg;
-// std::unique_ptr<GlobalRef> obj;
-//
-// // Construction (in .cc file) of User class.
-// User::User() {
-// // Calling thread must be attached to the JVM.
-// env = JVM::GetInstance()->environment();
-// reg = env->RegisterNatives("org/webrtc/WebRtcTest", ,);
-// obj = reg->NewObject("<init>", ,);
-// }
-//
-// // Each User method can now use |reg| and |obj| and call Java functions
-// // in WebRtcTest.java, e.g. boolean init() {}.
-// bool User::Foo() {
-// jmethodID id = reg->GetMethodId("init", "()Z");
-// return obj->CallBooleanMethod(id);
-// }
-//
-// // And finally, e.g. in JNI_OnUnLoad, call JVM::Uninitialize.
-// JVM::Uninitialize();
-class JVM {
- public:
- // Stores global handles to the Java VM interface and the application context.
- // Should be called once on a thread that is attached to the JVM.
- static void Initialize(JavaVM* jvm, jobject context);
- // Clears handles stored in Initialize(). Must be called on same thread as
- // Initialize().
- static void Uninitialize();
- // Gives access to the global Java VM interface pointer, which then can be
- // used to create a valid JNIEnvironment object or to get a JavaClass object.
- static JVM* GetInstance();
-
- // Creates a JNIEnvironment object.
- // This method returns a NULL pointer if AttachCurrentThread() has not been
- // called successfully. Use the AttachCurrentThreadIfNeeded class if needed.
- std::unique_ptr<JNIEnvironment> environment();
-
- // Returns a JavaClass object given class |name|.
- // Note that the class name must be one of the names in the static
- // |loaded_classes| array defined in jvm_android.cc.
- // This method must be called on the construction thread.
- JavaClass GetClass(const char* name);
-
- // TODO(henrika): can we make these private?
- JavaVM* jvm() const { return jvm_; }
- jobject context() const { return context_; }
-
- protected:
- JVM(JavaVM* jvm, jobject context);
- ~JVM();
-
- private:
- JNIEnv* jni() const { return GetEnv(jvm_); }
-
- rtc::ThreadChecker thread_checker_;
- JavaVM* const jvm_;
- jobject context_;
-};
-
-} // namespace webrtc
-
-#endif // WEBRTC_MODULES_UTILITY_INCLUDE_JVM_ANDROID_H_

Powered by Google App Engine
This is Rietveld 408576698