blob: 7d8658b611633cfe334c5a3019a27f79ec7794e6 [file] [log] [blame]
magjed768c6482016-12-06 04:29:37 -08001/*
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11// Android's FindClass() is trickier than usual because the app-specific
12// ClassLoader is not consulted when there is no app-specific frame on the
13// stack. Consequently, we only look up all classes once in app/webrtc.
14// http://developer.android.com/training/articles/perf-jni.html#faq_FindClass
15
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020016#ifndef SDK_ANDROID_SRC_JNI_CLASSREFERENCEHOLDER_H_
17#define SDK_ANDROID_SRC_JNI_CLASSREFERENCEHOLDER_H_
magjed768c6482016-12-06 04:29:37 -080018
19#include <jni.h>
20#include <map>
21#include <string>
22
magjeda3d4f682017-08-28 16:24:06 -070023namespace webrtc {
24namespace jni {
magjed768c6482016-12-06 04:29:37 -080025
26// LoadGlobalClassReferenceHolder must be called in JNI_OnLoad.
27void LoadGlobalClassReferenceHolder();
28// FreeGlobalClassReferenceHolder must be called in JNI_UnLoad.
29void FreeGlobalClassReferenceHolder();
30
31// Returns a global reference guaranteed to be valid for the lifetime of the
32// process.
33jclass FindClass(JNIEnv* jni, const char* name);
34
magjeda3d4f682017-08-28 16:24:06 -070035} // namespace jni
36} // namespace webrtc
37
38// TODO(magjed): Remove once external clients are updated.
39namespace webrtc_jni {
40
41using webrtc::jni::LoadGlobalClassReferenceHolder;
42using webrtc::jni::FreeGlobalClassReferenceHolder;
43
magjed768c6482016-12-06 04:29:37 -080044} // namespace webrtc_jni
45
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020046#endif // SDK_ANDROID_SRC_JNI_CLASSREFERENCEHOLDER_H_