Index: base/android/jni_generator/jni_generator_tests.py |
diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py |
index ba9ee21331c52c7cd9068f159bb71502084fc443..5fe6cf27051a156f081011d004df302fc4eb4189 100755 |
--- a/base/android/jni_generator/jni_generator_tests.py |
+++ b/base/android/jni_generator/jni_generator_tests.py |
@@ -222,6 +222,7 @@ class TestGenerator(unittest.TestCase): |
#include <jni.h> |
#include "base/android/jni_android.h" |
+#include "base/android/jni_method_id.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
@@ -315,19 +316,16 @@ static void GotOrientation(JNIEnv* env, jobject obj, |
jdouble gamma) { |
DCHECK(nativeDataFetcherImplAndroid) << "GotOrientation"; |
DataFetcherImplAndroid* native = |
- reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid); |
+ reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid); |
return native->GotOrientation(env, obj, alpha, beta, gamma); |
} |
-// Step 3: GetMethodIDs and RegisterNatives. |
-static void GetMethodIDsImpl(JNIEnv* env) { |
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kTestJniClassPath))); |
-} |
+// Step 3: RegisterNatives. |
static bool RegisterNativesImpl(JNIEnv* env) { |
- GetMethodIDsImpl(env); |
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kTestJniClassPath))); |
static const JNINativeMethod kMethodsTestJni[] = { |
{ "nativeInit", |
"(" |
@@ -463,6 +461,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
#include <jni.h> |
#include "base/android/jni_android.h" |
+#include "base/android/jni_method_id.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
@@ -481,15 +480,12 @@ static jint Init(JNIEnv* env, jobject obj); |
// Step 2: method stubs. |
-// Step 3: GetMethodIDs and RegisterNatives. |
-static void GetMethodIDsImpl(JNIEnv* env) { |
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kTestJniClassPath))); |
-} |
+// Step 3: RegisterNatives. |
static bool RegisterNativesImpl(JNIEnv* env) { |
- GetMethodIDsImpl(env); |
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kTestJniClassPath))); |
static const JNINativeMethod kMethodsMyInnerClass[] = { |
{ "nativeInit", |
"(" |
@@ -553,6 +549,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
#include <jni.h> |
#include "base/android/jni_android.h" |
+#include "base/android/jni_method_id.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
@@ -575,15 +572,12 @@ static jint Init(JNIEnv* env, jobject obj); |
// Step 2: method stubs. |
-// Step 3: GetMethodIDs and RegisterNatives. |
-static void GetMethodIDsImpl(JNIEnv* env) { |
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kTestJniClassPath))); |
-} |
+// Step 3: RegisterNatives. |
static bool RegisterNativesImpl(JNIEnv* env) { |
- GetMethodIDsImpl(env); |
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kTestJniClassPath))); |
static const JNINativeMethod kMethodsMyOtherInnerClass[] = { |
{ "nativeInit", |
"(" |
@@ -662,6 +656,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
#include <jni.h> |
#include "base/android/jni_android.h" |
+#include "base/android/jni_method_id.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
@@ -683,15 +678,12 @@ static jint Init(JNIEnv* env, jobject obj); |
// Step 2: method stubs. |
-// Step 3: GetMethodIDs and RegisterNatives. |
-static void GetMethodIDsImpl(JNIEnv* env) { |
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kTestJniClassPath))); |
-} |
+// Step 3: RegisterNatives. |
static bool RegisterNativesImpl(JNIEnv* env) { |
- GetMethodIDsImpl(env); |
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kTestJniClassPath))); |
static const JNINativeMethod kMethodsMyOtherInnerClass[] = { |
{ "nativeInit", |
"(" |
@@ -892,6 +884,7 @@ static bool RegisterNativesImpl(JNIEnv* env) { |
#include <jni.h> |
#include "base/android/jni_android.h" |
+#include "base/android/jni_method_id.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
@@ -910,7 +903,7 @@ jclass g_InfoBar_clazz = NULL; |
// Step 2: method stubs. |
-static jmethodID g_TestJni_showConfirmInfoBar = 0; |
+static base::subtle::AtomicWord g_TestJni_showConfirmInfoBar = 0; |
static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env, |
jobject obj, jint nativeInfoBar, |
jstring buttonOk, |
@@ -919,16 +912,32 @@ static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env, |
jobject icon) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_TestJni_clazz); |
- DCHECK(g_TestJni_showConfirmInfoBar); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_TestJni_clazz, |
+ "showConfirmInfoBar", |
+ |
+"(" |
+"I" |
+"Ljava/lang/String;" |
+"Ljava/lang/String;" |
+"Ljava/lang/String;" |
+"Landroid/graphics/Bitmap;" |
+")" |
+"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;", |
+ &g_TestJni_showConfirmInfoBar); |
+ |
jobject ret = |
env->CallObjectMethod(obj, |
- g_TestJni_showConfirmInfoBar, nativeInfoBar, buttonOk, buttonCancel, |
- title, icon); |
+ id, nativeInfoBar, buttonOk, buttonCancel, title, icon); |
base::android::CheckException(env); |
return ScopedJavaLocalRef<jobject>(env, ret); |
} |
-static jmethodID g_TestJni_showAutoLoginInfoBar = 0; |
+static base::subtle::AtomicWord g_TestJni_showAutoLoginInfoBar = 0; |
static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv* |
env, jobject obj, jint nativeInfoBar, |
jstring realm, |
@@ -936,27 +945,54 @@ static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv* |
jstring args) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_TestJni_clazz); |
- DCHECK(g_TestJni_showAutoLoginInfoBar); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_TestJni_clazz, |
+ "showAutoLoginInfoBar", |
+ |
+"(" |
+"I" |
+"Ljava/lang/String;" |
+"Ljava/lang/String;" |
+"Ljava/lang/String;" |
+")" |
+"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;", |
+ &g_TestJni_showAutoLoginInfoBar); |
+ |
jobject ret = |
env->CallObjectMethod(obj, |
- g_TestJni_showAutoLoginInfoBar, nativeInfoBar, realm, account, args); |
+ id, nativeInfoBar, realm, account, args); |
base::android::CheckException(env); |
return ScopedJavaLocalRef<jobject>(env, ret); |
} |
-static jmethodID g_InfoBar_dismiss = 0; |
+static base::subtle::AtomicWord g_InfoBar_dismiss = 0; |
static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InfoBar_clazz); |
- DCHECK(g_InfoBar_dismiss); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_InfoBar_clazz, |
+ "dismiss", |
+ |
+"(" |
+")" |
+"V", |
+ &g_InfoBar_dismiss); |
env->CallVoidMethod(obj, |
- g_InfoBar_dismiss); |
+ id); |
base::android::CheckException(env); |
} |
-static jmethodID g_TestJni_shouldShowAutoLogin = 0; |
+static base::subtle::AtomicWord g_TestJni_shouldShowAutoLogin = 0; |
static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject |
contentView, |
jstring realm, |
@@ -964,28 +1000,57 @@ static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject |
jstring args) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_TestJni_clazz); |
- DCHECK(g_TestJni_shouldShowAutoLogin); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_STATIC, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_TestJni_clazz, |
+ "shouldShowAutoLogin", |
+ |
+"(" |
+"Lorg/chromium/content/browser/ContentViewCore;" |
+"Ljava/lang/String;" |
+"Ljava/lang/String;" |
+"Ljava/lang/String;" |
+")" |
+"Z", |
+ &g_TestJni_shouldShowAutoLogin); |
+ |
jboolean ret = |
env->CallStaticBooleanMethod(g_TestJni_clazz, |
- g_TestJni_shouldShowAutoLogin, contentView, realm, account, args); |
+ id, contentView, realm, account, args); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_TestJni_openUrl = 0; |
+static base::subtle::AtomicWord g_TestJni_openUrl = 0; |
static ScopedJavaLocalRef<jobject> Java_TestJni_openUrl(JNIEnv* env, jstring |
url) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_TestJni_clazz); |
- DCHECK(g_TestJni_openUrl); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_STATIC, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_TestJni_clazz, |
+ "openUrl", |
+ |
+"(" |
+"Ljava/lang/String;" |
+")" |
+"Ljava/io/InputStream;", |
+ &g_TestJni_openUrl); |
+ |
jobject ret = |
env->CallStaticObjectMethod(g_TestJni_clazz, |
- g_TestJni_openUrl, url); |
+ id, url); |
base::android::CheckException(env); |
return ScopedJavaLocalRef<jobject>(env, ret); |
} |
-static jmethodID g_TestJni_activateHardwareAcceleration = 0; |
+static base::subtle::AtomicWord g_TestJni_activateHardwareAcceleration = 0; |
static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj, |
jboolean activated, |
jint iPid, |
@@ -994,120 +1059,61 @@ static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj, |
jint iSecondaryID) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_TestJni_clazz); |
- DCHECK(g_TestJni_activateHardwareAcceleration); |
- |
- env->CallVoidMethod(obj, |
- g_TestJni_activateHardwareAcceleration, activated, iPid, iType, |
- iPrimaryID, iSecondaryID); |
- base::android::CheckException(env); |
+ jmethodID id = |
-} |
- |
-static jmethodID g_TestJni_uncheckedCall = 0; |
-static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) { |
- /* Must call RegisterNativesImpl() */ |
- DCHECK(g_TestJni_clazz); |
- DCHECK(g_TestJni_uncheckedCall); |
- |
- env->CallVoidMethod(obj, |
- g_TestJni_uncheckedCall, iParam); |
- |
-} |
- |
-// Step 3: GetMethodIDs and RegisterNatives. |
-static void GetMethodIDsImpl(JNIEnv* env) { |
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kTestJniClassPath))); |
- g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kInfoBarClassPath))); |
- g_TestJni_showConfirmInfoBar = |
- base::android::GetMethodID( |
- env, g_TestJni_clazz, |
- "showConfirmInfoBar", |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_TestJni_clazz, |
+ "activateHardwareAcceleration", |
"(" |
+"Z" |
+"I" |
+"I" |
"I" |
-"Ljava/lang/String;" |
-"Ljava/lang/String;" |
-"Ljava/lang/String;" |
-"Landroid/graphics/Bitmap;" |
-")" |
-"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;"); |
- |
- g_TestJni_showAutoLoginInfoBar = |
- base::android::GetMethodID( |
- env, g_TestJni_clazz, |
- "showAutoLoginInfoBar", |
- |
-"(" |
"I" |
-"Ljava/lang/String;" |
-"Ljava/lang/String;" |
-"Ljava/lang/String;" |
-")" |
-"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;"); |
- |
- g_InfoBar_dismiss = |
- base::android::GetMethodID( |
- env, g_InfoBar_clazz, |
- "dismiss", |
- |
-"(" |
")" |
-"V"); |
+"V", |
+ &g_TestJni_activateHardwareAcceleration); |
- g_TestJni_shouldShowAutoLogin = |
- base::android::GetStaticMethodID( |
- env, g_TestJni_clazz, |
- "shouldShowAutoLogin", |
- |
-"(" |
-"Lorg/chromium/content/browser/ContentViewCore;" |
-"Ljava/lang/String;" |
-"Ljava/lang/String;" |
-"Ljava/lang/String;" |
-")" |
-"Z"); |
+ env->CallVoidMethod(obj, |
+ id, activated, iPid, iType, iPrimaryID, iSecondaryID); |
+ base::android::CheckException(env); |
- g_TestJni_openUrl = |
- base::android::GetStaticMethodID( |
- env, g_TestJni_clazz, |
- "openUrl", |
+} |
-"(" |
-"Ljava/lang/String;" |
-")" |
-"Ljava/io/InputStream;"); |
+static base::subtle::AtomicWord g_TestJni_uncheckedCall = 0; |
+static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) { |
+ /* Must call RegisterNativesImpl() */ |
+ DCHECK(g_TestJni_clazz); |
+ jmethodID id = |
- g_TestJni_activateHardwareAcceleration = |
- base::android::GetMethodID( |
- env, g_TestJni_clazz, |
- "activateHardwareAcceleration", |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_YES>( |
+ env, g_TestJni_clazz, |
+ "uncheckedCall", |
"(" |
-"Z" |
-"I" |
-"I" |
-"I" |
"I" |
")" |
-"V"); |
- |
- g_TestJni_uncheckedCall = |
- base::android::GetMethodID( |
- env, g_TestJni_clazz, |
- "uncheckedCall", |
+"V", |
+ &g_TestJni_uncheckedCall); |
-"(" |
-"I" |
-")" |
-"V"); |
+ env->CallVoidMethod(obj, |
+ id, iParam); |
} |
+// Step 3: RegisterNatives. |
+ |
static bool RegisterNativesImpl(JNIEnv* env) { |
- GetMethodIDsImpl(env); |
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kTestJniClassPath))); |
+ g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kInfoBarClassPath))); |
return true; |
} |
@@ -1200,6 +1206,7 @@ public abstract class java.io.InputStream extends java.lang.Object |
#include <jni.h> |
#include "base/android/jni_android.h" |
+#include "base/android/jni_method_id.h" |
#include "base/android/scoped_java_ref.h" |
#include "base/basictypes.h" |
#include "base/logging.h" |
@@ -1217,91 +1224,163 @@ namespace JNI_InputStream { |
// Step 2: method stubs. |
-static jmethodID g_InputStream_available = 0; |
+static base::subtle::AtomicWord g_InputStream_available = 0; |
static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__ |
((unused)); |
static jint Java_InputStream_available(JNIEnv* env, jobject obj) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_available); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "available", |
+ |
+"(" |
+")" |
+"I", |
+ &g_InputStream_available); |
+ |
jint ret = |
env->CallIntMethod(obj, |
- g_InputStream_available); |
+ id); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_InputStream_close = 0; |
+static base::subtle::AtomicWord g_InputStream_close = 0; |
static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__ |
((unused)); |
static void Java_InputStream_close(JNIEnv* env, jobject obj) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_close); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "close", |
+ |
+"(" |
+")" |
+"V", |
+ &g_InputStream_close); |
env->CallVoidMethod(obj, |
- g_InputStream_close); |
+ id); |
base::android::CheckException(env); |
} |
-static jmethodID g_InputStream_mark = 0; |
+static base::subtle::AtomicWord g_InputStream_mark = 0; |
static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) |
__attribute__ ((unused)); |
static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_mark); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "mark", |
+ |
+"(" |
+"I" |
+")" |
+"V", |
+ &g_InputStream_mark); |
env->CallVoidMethod(obj, |
- g_InputStream_mark, p0); |
+ id, p0); |
base::android::CheckException(env); |
} |
-static jmethodID g_InputStream_markSupported = 0; |
+static base::subtle::AtomicWord g_InputStream_markSupported = 0; |
static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) |
__attribute__ ((unused)); |
static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_markSupported); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "markSupported", |
+ |
+"(" |
+")" |
+"Z", |
+ &g_InputStream_markSupported); |
+ |
jboolean ret = |
env->CallBooleanMethod(obj, |
- g_InputStream_markSupported); |
+ id); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_InputStream_readI = 0; |
+static base::subtle::AtomicWord g_InputStream_readI = 0; |
static jint Java_InputStream_readI(JNIEnv* env, jobject obj) __attribute__ |
((unused)); |
static jint Java_InputStream_readI(JNIEnv* env, jobject obj) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_readI); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "read", |
+ |
+"(" |
+")" |
+"I", |
+ &g_InputStream_readI); |
+ |
jint ret = |
env->CallIntMethod(obj, |
- g_InputStream_readI); |
+ id); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_InputStream_readI_AB = 0; |
+static base::subtle::AtomicWord g_InputStream_readI_AB = 0; |
static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) |
__attribute__ ((unused)); |
static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_readI_AB); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "read", |
+ |
+"(" |
+"[B" |
+")" |
+"I", |
+ &g_InputStream_readI_AB); |
+ |
jint ret = |
env->CallIntMethod(obj, |
- g_InputStream_readI_AB, p0); |
+ id, p0); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_InputStream_readI_AB_I_I = 0; |
+static base::subtle::AtomicWord g_InputStream_readI_AB_I_I = 0; |
static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray |
p0, |
jint p1, |
@@ -1312,161 +1391,113 @@ static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray |
jint p2) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_readI_AB_I_I); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "read", |
+ |
+"(" |
+"[B" |
+"I" |
+"I" |
+")" |
+"I", |
+ &g_InputStream_readI_AB_I_I); |
+ |
jint ret = |
env->CallIntMethod(obj, |
- g_InputStream_readI_AB_I_I, p0, p1, p2); |
+ id, p0, p1, p2); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_InputStream_reset = 0; |
+static base::subtle::AtomicWord g_InputStream_reset = 0; |
static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__ |
((unused)); |
static void Java_InputStream_reset(JNIEnv* env, jobject obj) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_reset); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "reset", |
+ |
+"(" |
+")" |
+"V", |
+ &g_InputStream_reset); |
env->CallVoidMethod(obj, |
- g_InputStream_reset); |
+ id); |
base::android::CheckException(env); |
} |
-static jmethodID g_InputStream_skip = 0; |
+static base::subtle::AtomicWord g_InputStream_skip = 0; |
static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) |
__attribute__ ((unused)); |
static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_skip); |
+ jmethodID id = |
+ |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "skip", |
+ |
+"(" |
+"J" |
+")" |
+"J", |
+ &g_InputStream_skip); |
+ |
jlong ret = |
env->CallLongMethod(obj, |
- g_InputStream_skip, p0); |
+ id, p0); |
base::android::CheckException(env); |
return ret; |
} |
-static jmethodID g_InputStream_Constructor = 0; |
+static base::subtle::AtomicWord g_InputStream_Constructor = 0; |
static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) |
-__attribute__ ((unused)); |
+ __attribute__ ((unused)); |
static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) { |
/* Must call RegisterNativesImpl() */ |
DCHECK(g_InputStream_clazz); |
- DCHECK(g_InputStream_Constructor); |
- jobject ret = |
- env->NewObject(g_InputStream_clazz, |
- g_InputStream_Constructor); |
- base::android::CheckException(env); |
- return ScopedJavaLocalRef<jobject>(env, ret); |
-} |
+ jmethodID id = |
-// Step 3: GetMethodIDs and RegisterNatives. |
-static void GetMethodIDsImpl(JNIEnv* env) { |
- g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
- base::android::GetUnscopedClass(env, kInputStreamClassPath))); |
- g_InputStream_available = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "available", |
+ base::android::MethodID::LazyGet< |
+ base::android::MethodID::METHODTYPE_NORMAL, |
+ base::android::MethodID::EXCEPTIONCHECK_NO>( |
+ env, g_InputStream_clazz, |
+ "<init>", |
"(" |
")" |
-"I"); |
- |
- g_InputStream_close = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "close", |
- |
-"(" |
-")" |
-"V"); |
- |
- g_InputStream_mark = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "mark", |
- |
-"(" |
-"I" |
-")" |
-"V"); |
- |
- g_InputStream_markSupported = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "markSupported", |
- |
-"(" |
-")" |
-"Z"); |
- |
- g_InputStream_readI = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "read", |
- |
-"(" |
-")" |
-"I"); |
- |
- g_InputStream_readI_AB = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "read", |
- |
-"(" |
-"[B" |
-")" |
-"I"); |
- |
- g_InputStream_readI_AB_I_I = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "read", |
- |
-"(" |
-"[B" |
-"I" |
-"I" |
-")" |
-"I"); |
- |
- g_InputStream_reset = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "reset", |
- |
-"(" |
-")" |
-"V"); |
- |
- g_InputStream_skip = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "skip", |
- |
-"(" |
-"J" |
-")" |
-"J"); |
- |
- g_InputStream_Constructor = |
- base::android::GetMethodIDOrNull( |
- env, g_InputStream_clazz, |
- "<init>", |
- |
-"(" |
-")" |
-"V"); |
+"V", |
+ &g_InputStream_Constructor); |
+ jobject ret = |
+ env->NewObject(g_InputStream_clazz, |
+ id); |
+ base::android::CheckException(env); |
+ return ScopedJavaLocalRef<jobject>(env, ret); |
} |
+// Step 3: RegisterNatives. |
+ |
static bool RegisterNativesImpl(JNIEnv* env) { |
- GetMethodIDsImpl(env); |
+ g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
+ base::android::GetUnscopedClass(env, kInputStreamClassPath))); |
return true; |
} |
} // namespace JNI_InputStream |