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

Side by Side Diff: base/android/jni_generator/jni_generator_tests.py

Issue 11038015: Android: lazy initialization for method id. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Split files Created 8 years, 2 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Tests for jni_generator.py. 6 """Tests for jni_generator.py.
7 7
8 This test suite contains various tests for the JNI generator. 8 This test suite contains various tests for the JNI generator.
9 It exercises the low-level parser all the way up to the 9 It exercises the low-level parser all the way up to the
10 code generator and ensures the output matches a golden 10 code generator and ensures the output matches a golden
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // base/android/jni_generator/jni_generator_tests.py 215 // base/android/jni_generator/jni_generator_tests.py
216 // For 216 // For
217 // org/chromium/TestJni 217 // org/chromium/TestJni
218 218
219 #ifndef org_chromium_TestJni_JNI 219 #ifndef org_chromium_TestJni_JNI
220 #define org_chromium_TestJni_JNI 220 #define org_chromium_TestJni_JNI
221 221
222 #include <jni.h> 222 #include <jni.h>
223 223
224 #include "base/android/jni_android.h" 224 #include "base/android/jni_android.h"
225 #include "base/android/jni_method_id.h"
225 #include "base/android/scoped_java_ref.h" 226 #include "base/android/scoped_java_ref.h"
226 #include "base/basictypes.h" 227 #include "base/basictypes.h"
227 #include "base/logging.h" 228 #include "base/logging.h"
228 229
229 using base::android::ScopedJavaLocalRef; 230 using base::android::ScopedJavaLocalRef;
230 231
231 // Step 1: forward declarations. 232 // Step 1: forward declarations.
232 namespace { 233 namespace {
233 const char kTestJniClassPath[] = "org/chromium/TestJni"; 234 const char kTestJniClassPath[] = "org/chromium/TestJni";
234 // Leaking this jclass as we cannot use LazyInstance from some threads. 235 // Leaking this jclass as we cannot use LazyInstance from some threads.
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 selectionArgs, sortOrder).Release(); 309 selectionArgs, sortOrder).Release();
309 } 310 }
310 311
311 static void GotOrientation(JNIEnv* env, jobject obj, 312 static void GotOrientation(JNIEnv* env, jobject obj,
312 jint nativeDataFetcherImplAndroid, 313 jint nativeDataFetcherImplAndroid,
313 jdouble alpha, 314 jdouble alpha,
314 jdouble beta, 315 jdouble beta,
315 jdouble gamma) { 316 jdouble gamma) {
316 DCHECK(nativeDataFetcherImplAndroid) << "GotOrientation"; 317 DCHECK(nativeDataFetcherImplAndroid) << "GotOrientation";
317 DataFetcherImplAndroid* native = 318 DataFetcherImplAndroid* native =
318 reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid); 319 reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid);
319 return native->GotOrientation(env, obj, alpha, beta, gamma); 320 return native->GotOrientation(env, obj, alpha, beta, gamma);
320 } 321 }
321 322
322 // Step 3: GetMethodIDs and RegisterNatives. 323 // Step 3: RegisterNatives.
323 static void GetMethodIDsImpl(JNIEnv* env) { 324
325 static bool RegisterNativesImpl(JNIEnv* env) {
326
324 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 327 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
325 base::android::GetUnscopedClass(env, kTestJniClassPath))); 328 base::android::GetUnscopedClass(env, kTestJniClassPath)));
326 }
327
328 static bool RegisterNativesImpl(JNIEnv* env) {
329 GetMethodIDsImpl(env);
330
331 static const JNINativeMethod kMethodsTestJni[] = { 329 static const JNINativeMethod kMethodsTestJni[] = {
332 { "nativeInit", 330 { "nativeInit",
333 "(" 331 "("
334 ")" 332 ")"
335 "I", reinterpret_cast<void*>(Init) }, 333 "I", reinterpret_cast<void*>(Init) },
336 { "nativeDestroy", 334 { "nativeDestroy",
337 "(" 335 "("
338 "I" 336 "I"
339 ")" 337 ")"
340 "V", reinterpret_cast<void*>(Destroy) }, 338 "V", reinterpret_cast<void*>(Destroy) },
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 // base/android/jni_generator/jni_generator_tests.py 454 // base/android/jni_generator/jni_generator_tests.py
457 // For 455 // For
458 // org/chromium/TestJni 456 // org/chromium/TestJni
459 457
460 #ifndef org_chromium_TestJni_JNI 458 #ifndef org_chromium_TestJni_JNI
461 #define org_chromium_TestJni_JNI 459 #define org_chromium_TestJni_JNI
462 460
463 #include <jni.h> 461 #include <jni.h>
464 462
465 #include "base/android/jni_android.h" 463 #include "base/android/jni_android.h"
464 #include "base/android/jni_method_id.h"
466 #include "base/android/scoped_java_ref.h" 465 #include "base/android/scoped_java_ref.h"
467 #include "base/basictypes.h" 466 #include "base/basictypes.h"
468 #include "base/logging.h" 467 #include "base/logging.h"
469 468
470 using base::android::ScopedJavaLocalRef; 469 using base::android::ScopedJavaLocalRef;
471 470
472 // Step 1: forward declarations. 471 // Step 1: forward declarations.
473 namespace { 472 namespace {
474 const char kTestJniClassPath[] = "org/chromium/TestJni"; 473 const char kTestJniClassPath[] = "org/chromium/TestJni";
475 const char kMyInnerClassClassPath[] = "org/chromium/TestJni$MyInnerClass"; 474 const char kMyInnerClassClassPath[] = "org/chromium/TestJni$MyInnerClass";
476 // Leaking this jclass as we cannot use LazyInstance from some threads. 475 // Leaking this jclass as we cannot use LazyInstance from some threads.
477 jclass g_TestJni_clazz = NULL; 476 jclass g_TestJni_clazz = NULL;
478 } // namespace 477 } // namespace
479 478
480 static jint Init(JNIEnv* env, jobject obj); 479 static jint Init(JNIEnv* env, jobject obj);
481 480
482 // Step 2: method stubs. 481 // Step 2: method stubs.
483 482
484 // Step 3: GetMethodIDs and RegisterNatives. 483 // Step 3: RegisterNatives.
485 static void GetMethodIDsImpl(JNIEnv* env) { 484
485 static bool RegisterNativesImpl(JNIEnv* env) {
486
486 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 487 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
487 base::android::GetUnscopedClass(env, kTestJniClassPath))); 488 base::android::GetUnscopedClass(env, kTestJniClassPath)));
488 }
489
490 static bool RegisterNativesImpl(JNIEnv* env) {
491 GetMethodIDsImpl(env);
492
493 static const JNINativeMethod kMethodsMyInnerClass[] = { 489 static const JNINativeMethod kMethodsMyInnerClass[] = {
494 { "nativeInit", 490 { "nativeInit",
495 "(" 491 "("
496 ")" 492 ")"
497 "I", reinterpret_cast<void*>(Init) }, 493 "I", reinterpret_cast<void*>(Init) },
498 }; 494 };
499 const int kMethodsMyInnerClassSize = arraysize(kMethodsMyInnerClass); 495 const int kMethodsMyInnerClassSize = arraysize(kMethodsMyInnerClass);
500 496
501 if (env->RegisterNatives(g_MyInnerClass_clazz, 497 if (env->RegisterNatives(g_MyInnerClass_clazz,
502 kMethodsMyInnerClass, 498 kMethodsMyInnerClass,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 // base/android/jni_generator/jni_generator_tests.py 542 // base/android/jni_generator/jni_generator_tests.py
547 // For 543 // For
548 // org/chromium/TestJni 544 // org/chromium/TestJni
549 545
550 #ifndef org_chromium_TestJni_JNI 546 #ifndef org_chromium_TestJni_JNI
551 #define org_chromium_TestJni_JNI 547 #define org_chromium_TestJni_JNI
552 548
553 #include <jni.h> 549 #include <jni.h>
554 550
555 #include "base/android/jni_android.h" 551 #include "base/android/jni_android.h"
552 #include "base/android/jni_method_id.h"
556 #include "base/android/scoped_java_ref.h" 553 #include "base/android/scoped_java_ref.h"
557 #include "base/basictypes.h" 554 #include "base/basictypes.h"
558 #include "base/logging.h" 555 #include "base/logging.h"
559 556
560 using base::android::ScopedJavaLocalRef; 557 using base::android::ScopedJavaLocalRef;
561 558
562 // Step 1: forward declarations. 559 // Step 1: forward declarations.
563 namespace { 560 namespace {
564 const char kMyOtherInnerClassClassPath[] = 561 const char kMyOtherInnerClassClassPath[] =
565 "org/chromium/TestJni$MyOtherInnerClass"; 562 "org/chromium/TestJni$MyOtherInnerClass";
566 const char kTestJniClassPath[] = "org/chromium/TestJni"; 563 const char kTestJniClassPath[] = "org/chromium/TestJni";
567 const char kMyInnerClassClassPath[] = "org/chromium/TestJni$MyInnerClass"; 564 const char kMyInnerClassClassPath[] = "org/chromium/TestJni$MyInnerClass";
568 // Leaking this jclass as we cannot use LazyInstance from some threads. 565 // Leaking this jclass as we cannot use LazyInstance from some threads.
569 jclass g_TestJni_clazz = NULL; 566 jclass g_TestJni_clazz = NULL;
570 } // namespace 567 } // namespace
571 568
572 static jint Init(JNIEnv* env, jobject obj); 569 static jint Init(JNIEnv* env, jobject obj);
573 570
574 static jint Init(JNIEnv* env, jobject obj); 571 static jint Init(JNIEnv* env, jobject obj);
575 572
576 // Step 2: method stubs. 573 // Step 2: method stubs.
577 574
578 // Step 3: GetMethodIDs and RegisterNatives. 575 // Step 3: RegisterNatives.
579 static void GetMethodIDsImpl(JNIEnv* env) { 576
577 static bool RegisterNativesImpl(JNIEnv* env) {
578
580 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 579 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
581 base::android::GetUnscopedClass(env, kTestJniClassPath))); 580 base::android::GetUnscopedClass(env, kTestJniClassPath)));
582 }
583
584 static bool RegisterNativesImpl(JNIEnv* env) {
585 GetMethodIDsImpl(env);
586
587 static const JNINativeMethod kMethodsMyOtherInnerClass[] = { 581 static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
588 { "nativeInit", 582 { "nativeInit",
589 "(" 583 "("
590 ")" 584 ")"
591 "I", reinterpret_cast<void*>(Init) }, 585 "I", reinterpret_cast<void*>(Init) },
592 }; 586 };
593 const int kMethodsMyOtherInnerClassSize = 587 const int kMethodsMyOtherInnerClassSize =
594 arraysize(kMethodsMyOtherInnerClass); 588 arraysize(kMethodsMyOtherInnerClass);
595 589
596 if (env->RegisterNatives(g_MyOtherInnerClass_clazz, 590 if (env->RegisterNatives(g_MyOtherInnerClass_clazz,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 // base/android/jni_generator/jni_generator_tests.py 649 // base/android/jni_generator/jni_generator_tests.py
656 // For 650 // For
657 // org/chromium/TestJni 651 // org/chromium/TestJni
658 652
659 #ifndef org_chromium_TestJni_JNI 653 #ifndef org_chromium_TestJni_JNI
660 #define org_chromium_TestJni_JNI 654 #define org_chromium_TestJni_JNI
661 655
662 #include <jni.h> 656 #include <jni.h>
663 657
664 #include "base/android/jni_android.h" 658 #include "base/android/jni_android.h"
659 #include "base/android/jni_method_id.h"
665 #include "base/android/scoped_java_ref.h" 660 #include "base/android/scoped_java_ref.h"
666 #include "base/basictypes.h" 661 #include "base/basictypes.h"
667 #include "base/logging.h" 662 #include "base/logging.h"
668 663
669 using base::android::ScopedJavaLocalRef; 664 using base::android::ScopedJavaLocalRef;
670 665
671 // Step 1: forward declarations. 666 // Step 1: forward declarations.
672 namespace { 667 namespace {
673 const char kMyOtherInnerClassClassPath[] = 668 const char kMyOtherInnerClassClassPath[] =
674 "org/chromium/TestJni$MyOtherInnerClass"; 669 "org/chromium/TestJni$MyOtherInnerClass";
675 const char kTestJniClassPath[] = "org/chromium/TestJni"; 670 const char kTestJniClassPath[] = "org/chromium/TestJni";
676 // Leaking this jclass as we cannot use LazyInstance from some threads. 671 // Leaking this jclass as we cannot use LazyInstance from some threads.
677 jclass g_TestJni_clazz = NULL; 672 jclass g_TestJni_clazz = NULL;
678 } // namespace 673 } // namespace
679 674
680 static jint Init(JNIEnv* env, jobject obj); 675 static jint Init(JNIEnv* env, jobject obj);
681 676
682 static jint Init(JNIEnv* env, jobject obj); 677 static jint Init(JNIEnv* env, jobject obj);
683 678
684 // Step 2: method stubs. 679 // Step 2: method stubs.
685 680
686 // Step 3: GetMethodIDs and RegisterNatives. 681 // Step 3: RegisterNatives.
687 static void GetMethodIDsImpl(JNIEnv* env) { 682
683 static bool RegisterNativesImpl(JNIEnv* env) {
684
688 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( 685 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
689 base::android::GetUnscopedClass(env, kTestJniClassPath))); 686 base::android::GetUnscopedClass(env, kTestJniClassPath)));
690 }
691
692 static bool RegisterNativesImpl(JNIEnv* env) {
693 GetMethodIDsImpl(env);
694
695 static const JNINativeMethod kMethodsMyOtherInnerClass[] = { 687 static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
696 { "nativeInit", 688 { "nativeInit",
697 "(" 689 "("
698 ")" 690 ")"
699 "I", reinterpret_cast<void*>(Init) }, 691 "I", reinterpret_cast<void*>(Init) },
700 }; 692 };
701 const int kMethodsMyOtherInnerClassSize = 693 const int kMethodsMyOtherInnerClassSize =
702 arraysize(kMethodsMyOtherInnerClass); 694 arraysize(kMethodsMyOtherInnerClass);
703 695
704 if (env->RegisterNatives(g_MyOtherInnerClass_clazz, 696 if (env->RegisterNatives(g_MyOtherInnerClass_clazz,
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 // base/android/jni_generator/jni_generator_tests.py 877 // base/android/jni_generator/jni_generator_tests.py
886 // For 878 // For
887 // org/chromium/TestJni 879 // org/chromium/TestJni
888 880
889 #ifndef org_chromium_TestJni_JNI 881 #ifndef org_chromium_TestJni_JNI
890 #define org_chromium_TestJni_JNI 882 #define org_chromium_TestJni_JNI
891 883
892 #include <jni.h> 884 #include <jni.h>
893 885
894 #include "base/android/jni_android.h" 886 #include "base/android/jni_android.h"
887 #include "base/android/jni_method_id.h"
895 #include "base/android/scoped_java_ref.h" 888 #include "base/android/scoped_java_ref.h"
896 #include "base/basictypes.h" 889 #include "base/basictypes.h"
897 #include "base/logging.h" 890 #include "base/logging.h"
898 891
899 using base::android::ScopedJavaLocalRef; 892 using base::android::ScopedJavaLocalRef;
900 893
901 // Step 1: forward declarations. 894 // Step 1: forward declarations.
902 namespace { 895 namespace {
903 const char kTestJniClassPath[] = "org/chromium/TestJni"; 896 const char kTestJniClassPath[] = "org/chromium/TestJni";
904 const char kInfoBarClassPath[] = "org/chromium/TestJni$InfoBar"; 897 const char kInfoBarClassPath[] = "org/chromium/TestJni$InfoBar";
905 // Leaking this jclass as we cannot use LazyInstance from some threads. 898 // Leaking this jclass as we cannot use LazyInstance from some threads.
906 jclass g_TestJni_clazz = NULL; 899 jclass g_TestJni_clazz = NULL;
907 // Leaking this jclass as we cannot use LazyInstance from some threads. 900 // Leaking this jclass as we cannot use LazyInstance from some threads.
908 jclass g_InfoBar_clazz = NULL; 901 jclass g_InfoBar_clazz = NULL;
909 } // namespace 902 } // namespace
910 903
911 // Step 2: method stubs. 904 // Step 2: method stubs.
912 905
913 static jmethodID g_TestJni_showConfirmInfoBar = 0; 906 static base::subtle::AtomicWord g_TestJni_showConfirmInfoBar = 0;
914 static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env, 907 static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env,
915 jobject obj, jint nativeInfoBar, 908 jobject obj, jint nativeInfoBar,
916 jstring buttonOk, 909 jstring buttonOk,
917 jstring buttonCancel, 910 jstring buttonCancel,
918 jstring title, 911 jstring title,
919 jobject icon) { 912 jobject icon) {
920 /* Must call RegisterNativesImpl() */ 913 /* Must call RegisterNativesImpl() */
921 DCHECK(g_TestJni_clazz); 914 DCHECK(g_TestJni_clazz);
922 DCHECK(g_TestJni_showConfirmInfoBar); 915 jmethodID id =
916
917 base::android::MethodID::LazyGet<
918 base::android::MethodID::METHODTYPE_NORMAL,
919 base::android::MethodID::EXCEPTIONCHECK_YES>(
920 env, g_TestJni_clazz,
921 "showConfirmInfoBar",
922
923 "("
924 "I"
925 "Ljava/lang/String;"
926 "Ljava/lang/String;"
927 "Ljava/lang/String;"
928 "Landroid/graphics/Bitmap;"
929 ")"
930 "Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;",
931 &g_TestJni_showConfirmInfoBar);
932
923 jobject ret = 933 jobject ret =
924 env->CallObjectMethod(obj, 934 env->CallObjectMethod(obj,
925 g_TestJni_showConfirmInfoBar, nativeInfoBar, buttonOk, buttonCancel, 935 id, nativeInfoBar, buttonOk, buttonCancel, title, icon);
926 title, icon);
927 base::android::CheckException(env); 936 base::android::CheckException(env);
928 return ScopedJavaLocalRef<jobject>(env, ret); 937 return ScopedJavaLocalRef<jobject>(env, ret);
929 } 938 }
930 939
931 static jmethodID g_TestJni_showAutoLoginInfoBar = 0; 940 static base::subtle::AtomicWord g_TestJni_showAutoLoginInfoBar = 0;
932 static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv* 941 static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv*
933 env, jobject obj, jint nativeInfoBar, 942 env, jobject obj, jint nativeInfoBar,
934 jstring realm, 943 jstring realm,
935 jstring account, 944 jstring account,
936 jstring args) { 945 jstring args) {
937 /* Must call RegisterNativesImpl() */ 946 /* Must call RegisterNativesImpl() */
938 DCHECK(g_TestJni_clazz); 947 DCHECK(g_TestJni_clazz);
939 DCHECK(g_TestJni_showAutoLoginInfoBar); 948 jmethodID id =
949
950 base::android::MethodID::LazyGet<
951 base::android::MethodID::METHODTYPE_NORMAL,
952 base::android::MethodID::EXCEPTIONCHECK_YES>(
953 env, g_TestJni_clazz,
954 "showAutoLoginInfoBar",
955
956 "("
957 "I"
958 "Ljava/lang/String;"
959 "Ljava/lang/String;"
960 "Ljava/lang/String;"
961 ")"
962 "Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;",
963 &g_TestJni_showAutoLoginInfoBar);
964
940 jobject ret = 965 jobject ret =
941 env->CallObjectMethod(obj, 966 env->CallObjectMethod(obj,
942 g_TestJni_showAutoLoginInfoBar, nativeInfoBar, realm, account, args); 967 id, nativeInfoBar, realm, account, args);
943 base::android::CheckException(env); 968 base::android::CheckException(env);
944 return ScopedJavaLocalRef<jobject>(env, ret); 969 return ScopedJavaLocalRef<jobject>(env, ret);
945 } 970 }
946 971
947 static jmethodID g_InfoBar_dismiss = 0; 972 static base::subtle::AtomicWord g_InfoBar_dismiss = 0;
948 static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) { 973 static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) {
949 /* Must call RegisterNativesImpl() */ 974 /* Must call RegisterNativesImpl() */
950 DCHECK(g_InfoBar_clazz); 975 DCHECK(g_InfoBar_clazz);
951 DCHECK(g_InfoBar_dismiss); 976 jmethodID id =
977
978 base::android::MethodID::LazyGet<
979 base::android::MethodID::METHODTYPE_NORMAL,
980 base::android::MethodID::EXCEPTIONCHECK_YES>(
981 env, g_InfoBar_clazz,
982 "dismiss",
983
984 "("
985 ")"
986 "V",
987 &g_InfoBar_dismiss);
952 988
953 env->CallVoidMethod(obj, 989 env->CallVoidMethod(obj,
954 g_InfoBar_dismiss); 990 id);
955 base::android::CheckException(env); 991 base::android::CheckException(env);
956 992
957 } 993 }
958 994
959 static jmethodID g_TestJni_shouldShowAutoLogin = 0; 995 static base::subtle::AtomicWord g_TestJni_shouldShowAutoLogin = 0;
960 static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject 996 static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject
961 contentView, 997 contentView,
962 jstring realm, 998 jstring realm,
963 jstring account, 999 jstring account,
964 jstring args) { 1000 jstring args) {
965 /* Must call RegisterNativesImpl() */ 1001 /* Must call RegisterNativesImpl() */
966 DCHECK(g_TestJni_clazz); 1002 DCHECK(g_TestJni_clazz);
967 DCHECK(g_TestJni_shouldShowAutoLogin); 1003 jmethodID id =
1004
1005 base::android::MethodID::LazyGet<
1006 base::android::MethodID::METHODTYPE_STATIC,
1007 base::android::MethodID::EXCEPTIONCHECK_YES>(
1008 env, g_TestJni_clazz,
1009 "shouldShowAutoLogin",
1010
1011 "("
1012 "Lorg/chromium/content/browser/ContentViewCore;"
1013 "Ljava/lang/String;"
1014 "Ljava/lang/String;"
1015 "Ljava/lang/String;"
1016 ")"
1017 "Z",
1018 &g_TestJni_shouldShowAutoLogin);
1019
968 jboolean ret = 1020 jboolean ret =
969 env->CallStaticBooleanMethod(g_TestJni_clazz, 1021 env->CallStaticBooleanMethod(g_TestJni_clazz,
970 g_TestJni_shouldShowAutoLogin, contentView, realm, account, args); 1022 id, contentView, realm, account, args);
971 base::android::CheckException(env); 1023 base::android::CheckException(env);
972 return ret; 1024 return ret;
973 } 1025 }
974 1026
975 static jmethodID g_TestJni_openUrl = 0; 1027 static base::subtle::AtomicWord g_TestJni_openUrl = 0;
976 static ScopedJavaLocalRef<jobject> Java_TestJni_openUrl(JNIEnv* env, jstring 1028 static ScopedJavaLocalRef<jobject> Java_TestJni_openUrl(JNIEnv* env, jstring
977 url) { 1029 url) {
978 /* Must call RegisterNativesImpl() */ 1030 /* Must call RegisterNativesImpl() */
979 DCHECK(g_TestJni_clazz); 1031 DCHECK(g_TestJni_clazz);
980 DCHECK(g_TestJni_openUrl); 1032 jmethodID id =
1033
1034 base::android::MethodID::LazyGet<
1035 base::android::MethodID::METHODTYPE_STATIC,
1036 base::android::MethodID::EXCEPTIONCHECK_YES>(
1037 env, g_TestJni_clazz,
1038 "openUrl",
1039
1040 "("
1041 "Ljava/lang/String;"
1042 ")"
1043 "Ljava/io/InputStream;",
1044 &g_TestJni_openUrl);
1045
981 jobject ret = 1046 jobject ret =
982 env->CallStaticObjectMethod(g_TestJni_clazz, 1047 env->CallStaticObjectMethod(g_TestJni_clazz,
983 g_TestJni_openUrl, url); 1048 id, url);
984 base::android::CheckException(env); 1049 base::android::CheckException(env);
985 return ScopedJavaLocalRef<jobject>(env, ret); 1050 return ScopedJavaLocalRef<jobject>(env, ret);
986 } 1051 }
987 1052
988 static jmethodID g_TestJni_activateHardwareAcceleration = 0; 1053 static base::subtle::AtomicWord g_TestJni_activateHardwareAcceleration = 0;
989 static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj, 1054 static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj,
990 jboolean activated, 1055 jboolean activated,
991 jint iPid, 1056 jint iPid,
992 jint iType, 1057 jint iType,
993 jint iPrimaryID, 1058 jint iPrimaryID,
994 jint iSecondaryID) { 1059 jint iSecondaryID) {
995 /* Must call RegisterNativesImpl() */ 1060 /* Must call RegisterNativesImpl() */
996 DCHECK(g_TestJni_clazz); 1061 DCHECK(g_TestJni_clazz);
997 DCHECK(g_TestJni_activateHardwareAcceleration); 1062 jmethodID id =
998 1063
999 env->CallVoidMethod(obj, 1064 base::android::MethodID::LazyGet<
1000 g_TestJni_activateHardwareAcceleration, activated, iPid, iType, 1065 base::android::MethodID::METHODTYPE_NORMAL,
1001 iPrimaryID, iSecondaryID); 1066 base::android::MethodID::EXCEPTIONCHECK_YES>(
1002 base::android::CheckException(env); 1067 env, g_TestJni_clazz,
1003 1068 "activateHardwareAcceleration",
1004 }
1005
1006 static jmethodID g_TestJni_uncheckedCall = 0;
1007 static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) {
1008 /* Must call RegisterNativesImpl() */
1009 DCHECK(g_TestJni_clazz);
1010 DCHECK(g_TestJni_uncheckedCall);
1011
1012 env->CallVoidMethod(obj,
1013 g_TestJni_uncheckedCall, iParam);
1014
1015 }
1016
1017 // Step 3: GetMethodIDs and RegisterNatives.
1018 static void GetMethodIDsImpl(JNIEnv* env) {
1019 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1020 base::android::GetUnscopedClass(env, kTestJniClassPath)));
1021 g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1022 base::android::GetUnscopedClass(env, kInfoBarClassPath)));
1023 g_TestJni_showConfirmInfoBar =
1024 base::android::GetMethodID(
1025 env, g_TestJni_clazz,
1026 "showConfirmInfoBar",
1027
1028 "("
1029 "I"
1030 "Ljava/lang/String;"
1031 "Ljava/lang/String;"
1032 "Ljava/lang/String;"
1033 "Landroid/graphics/Bitmap;"
1034 ")"
1035 "Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;");
1036
1037 g_TestJni_showAutoLoginInfoBar =
1038 base::android::GetMethodID(
1039 env, g_TestJni_clazz,
1040 "showAutoLoginInfoBar",
1041
1042 "("
1043 "I"
1044 "Ljava/lang/String;"
1045 "Ljava/lang/String;"
1046 "Ljava/lang/String;"
1047 ")"
1048 "Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;");
1049
1050 g_InfoBar_dismiss =
1051 base::android::GetMethodID(
1052 env, g_InfoBar_clazz,
1053 "dismiss",
1054
1055 "("
1056 ")"
1057 "V");
1058
1059 g_TestJni_shouldShowAutoLogin =
1060 base::android::GetStaticMethodID(
1061 env, g_TestJni_clazz,
1062 "shouldShowAutoLogin",
1063
1064 "("
1065 "Lorg/chromium/content/browser/ContentViewCore;"
1066 "Ljava/lang/String;"
1067 "Ljava/lang/String;"
1068 "Ljava/lang/String;"
1069 ")"
1070 "Z");
1071
1072 g_TestJni_openUrl =
1073 base::android::GetStaticMethodID(
1074 env, g_TestJni_clazz,
1075 "openUrl",
1076
1077 "("
1078 "Ljava/lang/String;"
1079 ")"
1080 "Ljava/io/InputStream;");
1081
1082 g_TestJni_activateHardwareAcceleration =
1083 base::android::GetMethodID(
1084 env, g_TestJni_clazz,
1085 "activateHardwareAcceleration",
1086 1069
1087 "(" 1070 "("
1088 "Z" 1071 "Z"
1089 "I" 1072 "I"
1090 "I" 1073 "I"
1091 "I" 1074 "I"
1092 "I" 1075 "I"
1093 ")" 1076 ")"
1094 "V"); 1077 "V",
1078 &g_TestJni_activateHardwareAcceleration);
1095 1079
1096 g_TestJni_uncheckedCall = 1080 env->CallVoidMethod(obj,
1097 base::android::GetMethodID( 1081 id, activated, iPid, iType, iPrimaryID, iSecondaryID);
1098 env, g_TestJni_clazz, 1082 base::android::CheckException(env);
1099 "uncheckedCall", 1083
1084 }
1085
1086 static base::subtle::AtomicWord g_TestJni_uncheckedCall = 0;
1087 static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) {
1088 /* Must call RegisterNativesImpl() */
1089 DCHECK(g_TestJni_clazz);
1090 jmethodID id =
1091
1092 base::android::MethodID::LazyGet<
1093 base::android::MethodID::METHODTYPE_NORMAL,
1094 base::android::MethodID::EXCEPTIONCHECK_YES>(
1095 env, g_TestJni_clazz,
1096 "uncheckedCall",
1100 1097
1101 "(" 1098 "("
1102 "I" 1099 "I"
1103 ")" 1100 ")"
1104 "V"); 1101 "V",
1102 &g_TestJni_uncheckedCall);
1103
1104 env->CallVoidMethod(obj,
1105 id, iParam);
1105 1106
1106 } 1107 }
1107 1108
1109 // Step 3: RegisterNatives.
1110
1108 static bool RegisterNativesImpl(JNIEnv* env) { 1111 static bool RegisterNativesImpl(JNIEnv* env) {
1109 GetMethodIDsImpl(env);
1110 1112
1113 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1114 base::android::GetUnscopedClass(env, kTestJniClassPath)));
1115 g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1116 base::android::GetUnscopedClass(env, kInfoBarClassPath)));
1111 return true; 1117 return true;
1112 } 1118 }
1113 1119
1114 #endif // org_chromium_TestJni_JNI 1120 #endif // org_chromium_TestJni_JNI
1115 """ 1121 """
1116 self.assertTextEquals(golden_content, h.GetContent()) 1122 self.assertTextEquals(golden_content, h.GetContent())
1117 1123
1118 def testCalledByNativeParseError(self): 1124 def testCalledByNativeParseError(self):
1119 try: 1125 try:
1120 jni_generator.ExtractCalledByNatives(""" 1126 jni_generator.ExtractCalledByNatives("""
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 // base/android/jni_generator/jni_generator_tests.py 1199 // base/android/jni_generator/jni_generator_tests.py
1194 // For 1200 // For
1195 // java/io/InputStream 1201 // java/io/InputStream
1196 1202
1197 #ifndef java_io_InputStream_JNI 1203 #ifndef java_io_InputStream_JNI
1198 #define java_io_InputStream_JNI 1204 #define java_io_InputStream_JNI
1199 1205
1200 #include <jni.h> 1206 #include <jni.h>
1201 1207
1202 #include "base/android/jni_android.h" 1208 #include "base/android/jni_android.h"
1209 #include "base/android/jni_method_id.h"
1203 #include "base/android/scoped_java_ref.h" 1210 #include "base/android/scoped_java_ref.h"
1204 #include "base/basictypes.h" 1211 #include "base/basictypes.h"
1205 #include "base/logging.h" 1212 #include "base/logging.h"
1206 1213
1207 using base::android::ScopedJavaLocalRef; 1214 using base::android::ScopedJavaLocalRef;
1208 1215
1209 // Step 1: forward declarations. 1216 // Step 1: forward declarations.
1210 namespace { 1217 namespace {
1211 const char kInputStreamClassPath[] = "java/io/InputStream"; 1218 const char kInputStreamClassPath[] = "java/io/InputStream";
1212 // Leaking this jclass as we cannot use LazyInstance from some threads. 1219 // Leaking this jclass as we cannot use LazyInstance from some threads.
1213 jclass g_InputStream_clazz = NULL; 1220 jclass g_InputStream_clazz = NULL;
1214 } // namespace 1221 } // namespace
1215 1222
1216 namespace JNI_InputStream { 1223 namespace JNI_InputStream {
1217 1224
1218 // Step 2: method stubs. 1225 // Step 2: method stubs.
1219 1226
1220 static jmethodID g_InputStream_available = 0; 1227 static base::subtle::AtomicWord g_InputStream_available = 0;
1221 static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__ 1228 static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__
1222 ((unused)); 1229 ((unused));
1223 static jint Java_InputStream_available(JNIEnv* env, jobject obj) { 1230 static jint Java_InputStream_available(JNIEnv* env, jobject obj) {
1224 /* Must call RegisterNativesImpl() */ 1231 /* Must call RegisterNativesImpl() */
1225 DCHECK(g_InputStream_clazz); 1232 DCHECK(g_InputStream_clazz);
1226 DCHECK(g_InputStream_available); 1233 jmethodID id =
1234
1235 base::android::MethodID::LazyGet<
1236 base::android::MethodID::METHODTYPE_NORMAL,
1237 base::android::MethodID::EXCEPTIONCHECK_NO>(
1238 env, g_InputStream_clazz,
1239 "available",
1240
1241 "("
1242 ")"
1243 "I",
1244 &g_InputStream_available);
1245
1227 jint ret = 1246 jint ret =
1228 env->CallIntMethod(obj, 1247 env->CallIntMethod(obj,
1229 g_InputStream_available); 1248 id);
1230 base::android::CheckException(env); 1249 base::android::CheckException(env);
1231 return ret; 1250 return ret;
1232 } 1251 }
1233 1252
1234 static jmethodID g_InputStream_close = 0; 1253 static base::subtle::AtomicWord g_InputStream_close = 0;
1235 static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__ 1254 static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__
1236 ((unused)); 1255 ((unused));
1237 static void Java_InputStream_close(JNIEnv* env, jobject obj) { 1256 static void Java_InputStream_close(JNIEnv* env, jobject obj) {
1238 /* Must call RegisterNativesImpl() */ 1257 /* Must call RegisterNativesImpl() */
1239 DCHECK(g_InputStream_clazz); 1258 DCHECK(g_InputStream_clazz);
1240 DCHECK(g_InputStream_close); 1259 jmethodID id =
1260
1261 base::android::MethodID::LazyGet<
1262 base::android::MethodID::METHODTYPE_NORMAL,
1263 base::android::MethodID::EXCEPTIONCHECK_NO>(
1264 env, g_InputStream_clazz,
1265 "close",
1266
1267 "("
1268 ")"
1269 "V",
1270 &g_InputStream_close);
1241 1271
1242 env->CallVoidMethod(obj, 1272 env->CallVoidMethod(obj,
1243 g_InputStream_close); 1273 id);
1244 base::android::CheckException(env); 1274 base::android::CheckException(env);
1245 1275
1246 } 1276 }
1247 1277
1248 static jmethodID g_InputStream_mark = 0; 1278 static base::subtle::AtomicWord g_InputStream_mark = 0;
1249 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) 1279 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0)
1250 __attribute__ ((unused)); 1280 __attribute__ ((unused));
1251 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) { 1281 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) {
1252 /* Must call RegisterNativesImpl() */ 1282 /* Must call RegisterNativesImpl() */
1253 DCHECK(g_InputStream_clazz); 1283 DCHECK(g_InputStream_clazz);
1254 DCHECK(g_InputStream_mark); 1284 jmethodID id =
1285
1286 base::android::MethodID::LazyGet<
1287 base::android::MethodID::METHODTYPE_NORMAL,
1288 base::android::MethodID::EXCEPTIONCHECK_NO>(
1289 env, g_InputStream_clazz,
1290 "mark",
1291
1292 "("
1293 "I"
1294 ")"
1295 "V",
1296 &g_InputStream_mark);
1255 1297
1256 env->CallVoidMethod(obj, 1298 env->CallVoidMethod(obj,
1257 g_InputStream_mark, p0); 1299 id, p0);
1258 base::android::CheckException(env); 1300 base::android::CheckException(env);
1259 1301
1260 } 1302 }
1261 1303
1262 static jmethodID g_InputStream_markSupported = 0; 1304 static base::subtle::AtomicWord g_InputStream_markSupported = 0;
1263 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) 1305 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj)
1264 __attribute__ ((unused)); 1306 __attribute__ ((unused));
1265 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) { 1307 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) {
1266 /* Must call RegisterNativesImpl() */ 1308 /* Must call RegisterNativesImpl() */
1267 DCHECK(g_InputStream_clazz); 1309 DCHECK(g_InputStream_clazz);
1268 DCHECK(g_InputStream_markSupported); 1310 jmethodID id =
1311
1312 base::android::MethodID::LazyGet<
1313 base::android::MethodID::METHODTYPE_NORMAL,
1314 base::android::MethodID::EXCEPTIONCHECK_NO>(
1315 env, g_InputStream_clazz,
1316 "markSupported",
1317
1318 "("
1319 ")"
1320 "Z",
1321 &g_InputStream_markSupported);
1322
1269 jboolean ret = 1323 jboolean ret =
1270 env->CallBooleanMethod(obj, 1324 env->CallBooleanMethod(obj,
1271 g_InputStream_markSupported); 1325 id);
1272 base::android::CheckException(env); 1326 base::android::CheckException(env);
1273 return ret; 1327 return ret;
1274 } 1328 }
1275 1329
1276 static jmethodID g_InputStream_readI = 0; 1330 static base::subtle::AtomicWord g_InputStream_readI = 0;
1277 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) __attribute__ 1331 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) __attribute__
1278 ((unused)); 1332 ((unused));
1279 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) { 1333 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) {
1280 /* Must call RegisterNativesImpl() */ 1334 /* Must call RegisterNativesImpl() */
1281 DCHECK(g_InputStream_clazz); 1335 DCHECK(g_InputStream_clazz);
1282 DCHECK(g_InputStream_readI); 1336 jmethodID id =
1337
1338 base::android::MethodID::LazyGet<
1339 base::android::MethodID::METHODTYPE_NORMAL,
1340 base::android::MethodID::EXCEPTIONCHECK_NO>(
1341 env, g_InputStream_clazz,
1342 "read",
1343
1344 "("
1345 ")"
1346 "I",
1347 &g_InputStream_readI);
1348
1283 jint ret = 1349 jint ret =
1284 env->CallIntMethod(obj, 1350 env->CallIntMethod(obj,
1285 g_InputStream_readI); 1351 id);
1286 base::android::CheckException(env); 1352 base::android::CheckException(env);
1287 return ret; 1353 return ret;
1288 } 1354 }
1289 1355
1290 static jmethodID g_InputStream_readI_AB = 0; 1356 static base::subtle::AtomicWord g_InputStream_readI_AB = 0;
1291 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) 1357 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0)
1292 __attribute__ ((unused)); 1358 __attribute__ ((unused));
1293 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) { 1359 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) {
1294 /* Must call RegisterNativesImpl() */ 1360 /* Must call RegisterNativesImpl() */
1295 DCHECK(g_InputStream_clazz); 1361 DCHECK(g_InputStream_clazz);
1296 DCHECK(g_InputStream_readI_AB); 1362 jmethodID id =
1363
1364 base::android::MethodID::LazyGet<
1365 base::android::MethodID::METHODTYPE_NORMAL,
1366 base::android::MethodID::EXCEPTIONCHECK_NO>(
1367 env, g_InputStream_clazz,
1368 "read",
1369
1370 "("
1371 "[B"
1372 ")"
1373 "I",
1374 &g_InputStream_readI_AB);
1375
1297 jint ret = 1376 jint ret =
1298 env->CallIntMethod(obj, 1377 env->CallIntMethod(obj,
1299 g_InputStream_readI_AB, p0); 1378 id, p0);
1300 base::android::CheckException(env); 1379 base::android::CheckException(env);
1301 return ret; 1380 return ret;
1302 } 1381 }
1303 1382
1304 static jmethodID g_InputStream_readI_AB_I_I = 0; 1383 static base::subtle::AtomicWord g_InputStream_readI_AB_I_I = 0;
1305 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray 1384 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray
1306 p0, 1385 p0,
1307 jint p1, 1386 jint p1,
1308 jint p2) __attribute__ ((unused)); 1387 jint p2) __attribute__ ((unused));
1309 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray 1388 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray
1310 p0, 1389 p0,
1311 jint p1, 1390 jint p1,
1312 jint p2) { 1391 jint p2) {
1313 /* Must call RegisterNativesImpl() */ 1392 /* Must call RegisterNativesImpl() */
1314 DCHECK(g_InputStream_clazz); 1393 DCHECK(g_InputStream_clazz);
1315 DCHECK(g_InputStream_readI_AB_I_I); 1394 jmethodID id =
1316 jint ret =
1317 env->CallIntMethod(obj,
1318 g_InputStream_readI_AB_I_I, p0, p1, p2);
1319 base::android::CheckException(env);
1320 return ret;
1321 }
1322 1395
1323 static jmethodID g_InputStream_reset = 0; 1396 base::android::MethodID::LazyGet<
1324 static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__ 1397 base::android::MethodID::METHODTYPE_NORMAL,
1325 ((unused)); 1398 base::android::MethodID::EXCEPTIONCHECK_NO>(
1326 static void Java_InputStream_reset(JNIEnv* env, jobject obj) { 1399 env, g_InputStream_clazz,
1327 /* Must call RegisterNativesImpl() */ 1400 "read",
1328 DCHECK(g_InputStream_clazz);
1329 DCHECK(g_InputStream_reset);
1330
1331 env->CallVoidMethod(obj,
1332 g_InputStream_reset);
1333 base::android::CheckException(env);
1334
1335 }
1336
1337 static jmethodID g_InputStream_skip = 0;
1338 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0)
1339 __attribute__ ((unused));
1340 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) {
1341 /* Must call RegisterNativesImpl() */
1342 DCHECK(g_InputStream_clazz);
1343 DCHECK(g_InputStream_skip);
1344 jlong ret =
1345 env->CallLongMethod(obj,
1346 g_InputStream_skip, p0);
1347 base::android::CheckException(env);
1348 return ret;
1349 }
1350
1351 static jmethodID g_InputStream_Constructor = 0;
1352 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env)
1353 __attribute__ ((unused));
1354 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) {
1355 /* Must call RegisterNativesImpl() */
1356 DCHECK(g_InputStream_clazz);
1357 DCHECK(g_InputStream_Constructor);
1358 jobject ret =
1359 env->NewObject(g_InputStream_clazz,
1360 g_InputStream_Constructor);
1361 base::android::CheckException(env);
1362 return ScopedJavaLocalRef<jobject>(env, ret);
1363 }
1364
1365 // Step 3: GetMethodIDs and RegisterNatives.
1366 static void GetMethodIDsImpl(JNIEnv* env) {
1367 g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1368 base::android::GetUnscopedClass(env, kInputStreamClassPath)));
1369 g_InputStream_available =
1370 base::android::GetMethodIDOrNull(
1371 env, g_InputStream_clazz,
1372 "available",
1373
1374 "("
1375 ")"
1376 "I");
1377
1378 g_InputStream_close =
1379 base::android::GetMethodIDOrNull(
1380 env, g_InputStream_clazz,
1381 "close",
1382
1383 "("
1384 ")"
1385 "V");
1386
1387 g_InputStream_mark =
1388 base::android::GetMethodIDOrNull(
1389 env, g_InputStream_clazz,
1390 "mark",
1391
1392 "("
1393 "I"
1394 ")"
1395 "V");
1396
1397 g_InputStream_markSupported =
1398 base::android::GetMethodIDOrNull(
1399 env, g_InputStream_clazz,
1400 "markSupported",
1401
1402 "("
1403 ")"
1404 "Z");
1405
1406 g_InputStream_readI =
1407 base::android::GetMethodIDOrNull(
1408 env, g_InputStream_clazz,
1409 "read",
1410
1411 "("
1412 ")"
1413 "I");
1414
1415 g_InputStream_readI_AB =
1416 base::android::GetMethodIDOrNull(
1417 env, g_InputStream_clazz,
1418 "read",
1419
1420 "("
1421 "[B"
1422 ")"
1423 "I");
1424
1425 g_InputStream_readI_AB_I_I =
1426 base::android::GetMethodIDOrNull(
1427 env, g_InputStream_clazz,
1428 "read",
1429 1401
1430 "(" 1402 "("
1431 "[B" 1403 "[B"
1432 "I" 1404 "I"
1433 "I" 1405 "I"
1434 ")" 1406 ")"
1435 "I"); 1407 "I",
1408 &g_InputStream_readI_AB_I_I);
1436 1409
1437 g_InputStream_reset = 1410 jint ret =
1438 base::android::GetMethodIDOrNull( 1411 env->CallIntMethod(obj,
1439 env, g_InputStream_clazz, 1412 id, p0, p1, p2);
1440 "reset", 1413 base::android::CheckException(env);
1414 return ret;
1415 }
1416
1417 static base::subtle::AtomicWord g_InputStream_reset = 0;
1418 static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__
1419 ((unused));
1420 static void Java_InputStream_reset(JNIEnv* env, jobject obj) {
1421 /* Must call RegisterNativesImpl() */
1422 DCHECK(g_InputStream_clazz);
1423 jmethodID id =
1424
1425 base::android::MethodID::LazyGet<
1426 base::android::MethodID::METHODTYPE_NORMAL,
1427 base::android::MethodID::EXCEPTIONCHECK_NO>(
1428 env, g_InputStream_clazz,
1429 "reset",
1441 1430
1442 "(" 1431 "("
1443 ")" 1432 ")"
1444 "V"); 1433 "V",
1434 &g_InputStream_reset);
1445 1435
1446 g_InputStream_skip = 1436 env->CallVoidMethod(obj,
1447 base::android::GetMethodIDOrNull( 1437 id);
1448 env, g_InputStream_clazz, 1438 base::android::CheckException(env);
1449 "skip", 1439
1440 }
1441
1442 static base::subtle::AtomicWord g_InputStream_skip = 0;
1443 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0)
1444 __attribute__ ((unused));
1445 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) {
1446 /* Must call RegisterNativesImpl() */
1447 DCHECK(g_InputStream_clazz);
1448 jmethodID id =
1449
1450 base::android::MethodID::LazyGet<
1451 base::android::MethodID::METHODTYPE_NORMAL,
1452 base::android::MethodID::EXCEPTIONCHECK_NO>(
1453 env, g_InputStream_clazz,
1454 "skip",
1450 1455
1451 "(" 1456 "("
1452 "J" 1457 "J"
1453 ")" 1458 ")"
1454 "J"); 1459 "J",
1460 &g_InputStream_skip);
1455 1461
1456 g_InputStream_Constructor = 1462 jlong ret =
1457 base::android::GetMethodIDOrNull( 1463 env->CallLongMethod(obj,
1458 env, g_InputStream_clazz, 1464 id, p0);
1459 "<init>", 1465 base::android::CheckException(env);
1466 return ret;
1467 }
1468
1469 static base::subtle::AtomicWord g_InputStream_Constructor = 0;
1470 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env)
1471 __attribute__ ((unused));
1472 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) {
1473 /* Must call RegisterNativesImpl() */
1474 DCHECK(g_InputStream_clazz);
1475 jmethodID id =
1476
1477 base::android::MethodID::LazyGet<
1478 base::android::MethodID::METHODTYPE_NORMAL,
1479 base::android::MethodID::EXCEPTIONCHECK_NO>(
1480 env, g_InputStream_clazz,
1481 "<init>",
1460 1482
1461 "(" 1483 "("
1462 ")" 1484 ")"
1463 "V"); 1485 "V",
1486 &g_InputStream_Constructor);
1464 1487
1488 jobject ret =
1489 env->NewObject(g_InputStream_clazz,
1490 id);
1491 base::android::CheckException(env);
1492 return ScopedJavaLocalRef<jobject>(env, ret);
1465 } 1493 }
1466 1494
1495 // Step 3: RegisterNatives.
1496
1467 static bool RegisterNativesImpl(JNIEnv* env) { 1497 static bool RegisterNativesImpl(JNIEnv* env) {
1468 GetMethodIDsImpl(env);
1469 1498
1499 g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1500 base::android::GetUnscopedClass(env, kInputStreamClassPath)));
1470 return true; 1501 return true;
1471 } 1502 }
1472 } // namespace JNI_InputStream 1503 } // namespace JNI_InputStream
1473 1504
1474 #endif // java_io_InputStream_JNI 1505 #endif // java_io_InputStream_JNI
1475 """ 1506 """
1476 self.assertTextEquals(golden_content, jni_from_javap.GetContent()) 1507 self.assertTextEquals(golden_content, jni_from_javap.GetContent())
1477 1508
1478 def testREForNatives(self): 1509 def testREForNatives(self):
1479 # We should not match "native SyncSetupFlow" inside the comment. 1510 # We should not match "native SyncSetupFlow" inside the comment.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 test_data, ('com/google/lookhowextremelylongiam/snarf/' 1567 test_data, ('com/google/lookhowextremelylongiam/snarf/'
1537 'icankeepthisupallday/ReallyLongClassNamesAreAllTheRage')) 1568 'icankeepthisupallday/ReallyLongClassNamesAreAllTheRage'))
1538 jni_lines = jni_from_java.GetContent().split('\n') 1569 jni_lines = jni_from_java.GetContent().split('\n')
1539 line = filter(lambda line: line.lstrip().startswith('#ifndef'), 1570 line = filter(lambda line: line.lstrip().startswith('#ifndef'),
1540 jni_lines)[0] 1571 jni_lines)[0]
1541 self.assertTrue(len(line) > 80, 1572 self.assertTrue(len(line) > 80,
1542 ('Expected #ifndef line to be > 80 chars: ', line)) 1573 ('Expected #ifndef line to be > 80 chars: ', line))
1543 1574
1544 if __name__ == '__main__': 1575 if __name__ == '__main__':
1545 unittest.main() 1576 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698