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

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

Issue 9466024: Fixes JNI Bindings & startup perf. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove static for anon namespaced strings Created 8 years, 9 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
« no previous file with comments | « base/android/jni_generator/jni_generator.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # 2 #
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Tests for jni_generator.py. 7 """Tests for jni_generator.py.
8 8
9 This test suite contains various tests for the JNI generator. 9 This test suite contains various tests for the JNI generator.
10 It exercises the low-level parser all the way up to the 10 It exercises the low-level parser all the way up to the
(...skipping 29 matching lines...) Expand all
40 else: 40 else:
41 self.assertEquals(first[i], second[i]) 41 self.assertEquals(first[i], second[i])
42 42
43 def assertTextEquals(self, golden_text, generated_text): 43 def assertTextEquals(self, golden_text, generated_text):
44 stripped_golden = [l.strip() for l in golden_text.split('\n')] 44 stripped_golden = [l.strip() for l in golden_text.split('\n')]
45 stripped_generated = [l.strip() for l in generated_text.split('\n')] 45 stripped_generated = [l.strip() for l in generated_text.split('\n')]
46 if stripped_golden != stripped_generated: 46 if stripped_golden != stripped_generated:
47 print self.id() 47 print self.id()
48 for line in difflib.context_diff(stripped_golden, stripped_generated): 48 for line in difflib.context_diff(stripped_golden, stripped_generated):
49 print line 49 print line
50 print '\n\nGenerated'
51 print '=' * 80
52 print generated_text
53 print '=' * 80
50 self.fail('Golden text mismatch') 54 self.fail('Golden text mismatch')
51 55
52 def testNatives(self): 56 def testNatives(self):
53 test_data = """" 57 test_data = """"
54 private native int nativeInit(); 58 private native int nativeInit();
55 private native void nativeDestroy(int nativeChromeBrowserProvider); 59 private native void nativeDestroy(int nativeChromeBrowserProvider);
56 private native long nativeAddBookmark( 60 private native long nativeAddBookmark(
57 int nativeChromeBrowserProvider, 61 int nativeChromeBrowserProvider,
58 String url, String title, boolean isFolder, long parentId); 62 String url, String title, boolean isFolder, long parentId);
59 private static native String nativeGetDomainAndRegistry(String url); 63 private static native String nativeGetDomainAndRegistry(String url);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 224
221 #include "base/android/jni_android.h" 225 #include "base/android/jni_android.h"
222 #include "base/android/scoped_java_ref.h" 226 #include "base/android/scoped_java_ref.h"
223 #include "base/basictypes.h" 227 #include "base/basictypes.h"
224 #include "base/logging.h" 228 #include "base/logging.h"
225 229
226 using base::android::ScopedJavaLocalRef; 230 using base::android::ScopedJavaLocalRef;
227 231
228 // Step 1: forward declarations. 232 // Step 1: forward declarations.
229 namespace { 233 namespace {
230 const char* const kTestJniClassPath = "org/chromium/TestJni"; 234 const char kTestJniClassPath[] = "org/chromium/TestJni";
231 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 235 // Leaking this jclass as we cannot use LazyInstance from some threads.
232 base::android::ScopedJavaGlobalRef<jclass>& 236 jclass g_TestJni_clazz = NULL;
233 g_TestJni_clazz =
234 *(new base::android::ScopedJavaGlobalRef<jclass>());
235 } // namespace 237 } // namespace
236 238
237 static jint Init(JNIEnv* env, jobject obj); 239 static jint Init(JNIEnv* env, jobject obj);
238 240
239 241
240 static jstring GetDomainAndRegistry(JNIEnv* env, jclass clazz, 242 static jstring GetDomainAndRegistry(JNIEnv* env, jclass clazz,
241 jstring url); 243 jstring url);
242 244
243 245
244 static void CreateHistoricalTabFromState(JNIEnv* env, jclass clazz, 246 static void CreateHistoricalTabFromState(JNIEnv* env, jclass clazz,
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 device_orientation::DeviceOrientationAndroid* native = 326 device_orientation::DeviceOrientationAndroid* native =
325 reinterpret_cast<device_orientation::DeviceOrientationAndroid*>(nativePtr); 327 reinterpret_cast<device_orientation::DeviceOrientationAndroid*>(nativePtr);
326 return native->GotOrientation(env, obj, alpha, beta, gamma); 328 return native->GotOrientation(env, obj, alpha, beta, gamma);
327 } 329 }
328 330
329 331
330 // Step 3: GetMethodIDs and RegisterNatives. 332 // Step 3: GetMethodIDs and RegisterNatives.
331 333
332 334
333 static void GetMethodIDsImpl(JNIEnv* env) { 335 static void GetMethodIDsImpl(JNIEnv* env) {
334 g_TestJni_clazz.Reset( 336 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
335 base::android::GetClass(env, kTestJniClassPath)); 337 base::android::GetUnscopedClass(env, kTestJniClassPath)));
336 } 338 }
337 339
338 static bool RegisterNativesImpl(JNIEnv* env) { 340 static bool RegisterNativesImpl(JNIEnv* env) {
339 GetMethodIDsImpl(env); 341 GetMethodIDsImpl(env);
340 342
341 static const JNINativeMethod kMethodsTestJni[] = { 343 static const JNINativeMethod kMethodsTestJni[] = {
342 { "nativeInit", 344 { "nativeInit",
343 "(" 345 "("
344 ")" 346 ")"
345 "I", reinterpret_cast<void*>(Init) }, 347 "I", reinterpret_cast<void*>(Init) },
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 "(" 421 "("
420 "I" 422 "I"
421 "D" 423 "D"
422 "D" 424 "D"
423 "D" 425 "D"
424 ")" 426 ")"
425 "V", reinterpret_cast<void*>(GotOrientation) }, 427 "V", reinterpret_cast<void*>(GotOrientation) },
426 }; 428 };
427 const int kMethodsTestJniSize = arraysize(kMethodsTestJni); 429 const int kMethodsTestJniSize = arraysize(kMethodsTestJni);
428 430
429 if (env->RegisterNatives(g_TestJni_clazz.obj(), 431 if (env->RegisterNatives(g_TestJni_clazz,
430 kMethodsTestJni, 432 kMethodsTestJni,
431 kMethodsTestJniSize) < 0) { 433 kMethodsTestJniSize) < 0) {
432 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 434 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
433 return false; 435 return false;
434 } 436 }
435 437
436 return true; 438 return true;
437 } 439 }
438 440
439 #endif // org_chromium_TestJni_JNI 441 #endif // org_chromium_TestJni_JNI
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 477
476 #include "base/android/jni_android.h" 478 #include "base/android/jni_android.h"
477 #include "base/android/scoped_java_ref.h" 479 #include "base/android/scoped_java_ref.h"
478 #include "base/basictypes.h" 480 #include "base/basictypes.h"
479 #include "base/logging.h" 481 #include "base/logging.h"
480 482
481 using base::android::ScopedJavaLocalRef; 483 using base::android::ScopedJavaLocalRef;
482 484
483 // Step 1: forward declarations. 485 // Step 1: forward declarations.
484 namespace { 486 namespace {
485 const char* const kTestJniClassPath = "org/chromium/TestJni"; 487 const char kTestJniClassPath[] = "org/chromium/TestJni";
486 const char* const kMyInnerClassClassPath = "org/chromium/TestJni$MyInnerClass"; 488 const char kMyInnerClassClassPath[] = "org/chromium/TestJni$MyInnerClass";
487 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 489 // Leaking this jclass as we cannot use LazyInstance from some threads.
488 base::android::ScopedJavaGlobalRef<jclass>& 490 jclass g_TestJni_clazz = NULL;
489 g_TestJni_clazz =
490 *(new base::android::ScopedJavaGlobalRef<jclass>());
491 } // namespace 491 } // namespace
492 492
493 static jint Init(JNIEnv* env, jobject obj); 493 static jint Init(JNIEnv* env, jobject obj);
494 494
495 495
496 // Step 2: method stubs. 496 // Step 2: method stubs.
497 497
498 498
499 // Step 3: GetMethodIDs and RegisterNatives. 499 // Step 3: GetMethodIDs and RegisterNatives.
500 500
501 501
502 static void GetMethodIDsImpl(JNIEnv* env) { 502 static void GetMethodIDsImpl(JNIEnv* env) {
503 g_TestJni_clazz.Reset( 503 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
504 base::android::GetClass(env, kTestJniClassPath)); 504 base::android::GetUnscopedClass(env, kTestJniClassPath)));
505 } 505 }
506 506
507 static bool RegisterNativesImpl(JNIEnv* env) { 507 static bool RegisterNativesImpl(JNIEnv* env) {
508 GetMethodIDsImpl(env); 508 GetMethodIDsImpl(env);
509 509
510 static const JNINativeMethod kMethodsMyInnerClass[] = { 510 static const JNINativeMethod kMethodsMyInnerClass[] = {
511 { "nativeInit", 511 { "nativeInit",
512 "(" 512 "("
513 ")" 513 ")"
514 "I", reinterpret_cast<void*>(Init) }, 514 "I", reinterpret_cast<void*>(Init) },
515 }; 515 };
516 const int kMethodsMyInnerClassSize = arraysize(kMethodsMyInnerClass); 516 const int kMethodsMyInnerClassSize = arraysize(kMethodsMyInnerClass);
517 517
518 if (env->RegisterNatives(g_MyInnerClass_clazz.obj(), 518 if (env->RegisterNatives(g_MyInnerClass_clazz,
519 kMethodsMyInnerClass, 519 kMethodsMyInnerClass,
520 kMethodsMyInnerClassSize) < 0) { 520 kMethodsMyInnerClassSize) < 0) {
521 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 521 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
522 return false; 522 return false;
523 } 523 }
524 524
525 return true; 525 return true;
526 } 526 }
527 527
528 #endif // org_chromium_TestJni_JNI 528 #endif // org_chromium_TestJni_JNI
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 572
573 #include "base/android/jni_android.h" 573 #include "base/android/jni_android.h"
574 #include "base/android/scoped_java_ref.h" 574 #include "base/android/scoped_java_ref.h"
575 #include "base/basictypes.h" 575 #include "base/basictypes.h"
576 #include "base/logging.h" 576 #include "base/logging.h"
577 577
578 using base::android::ScopedJavaLocalRef; 578 using base::android::ScopedJavaLocalRef;
579 579
580 // Step 1: forward declarations. 580 // Step 1: forward declarations.
581 namespace { 581 namespace {
582 const char* const kMyOtherInnerClassClassPath = 582 const char kMyOtherInnerClassClassPath[] =
583 "org/chromium/TestJni$MyOtherInnerClass"; 583 "org/chromium/TestJni$MyOtherInnerClass";
584 const char* const kTestJniClassPath = "org/chromium/TestJni"; 584 const char kTestJniClassPath[] = "org/chromium/TestJni";
585 const char* const kMyInnerClassClassPath = "org/chromium/TestJni$MyInnerClass"; 585 const char kMyInnerClassClassPath[] = "org/chromium/TestJni$MyInnerClass";
586 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 586 // Leaking this jclass as we cannot use LazyInstance from some threads.
587 base::android::ScopedJavaGlobalRef<jclass>& 587 jclass g_TestJni_clazz = NULL;
588 g_TestJni_clazz =
589 *(new base::android::ScopedJavaGlobalRef<jclass>());
590 } // namespace 588 } // namespace
591 589
592 static jint Init(JNIEnv* env, jobject obj); 590 static jint Init(JNIEnv* env, jobject obj);
593 591
594 592
595 static jint Init(JNIEnv* env, jobject obj); 593 static jint Init(JNIEnv* env, jobject obj);
596 594
597 595
598 // Step 2: method stubs. 596 // Step 2: method stubs.
599 597
600 598
601 // Step 3: GetMethodIDs and RegisterNatives. 599 // Step 3: GetMethodIDs and RegisterNatives.
602 600
603 601
604 static void GetMethodIDsImpl(JNIEnv* env) { 602 static void GetMethodIDsImpl(JNIEnv* env) {
605 g_TestJni_clazz.Reset( 603 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
606 base::android::GetClass(env, kTestJniClassPath)); 604 base::android::GetUnscopedClass(env, kTestJniClassPath)));
607 } 605 }
608 606
609 static bool RegisterNativesImpl(JNIEnv* env) { 607 static bool RegisterNativesImpl(JNIEnv* env) {
610 GetMethodIDsImpl(env); 608 GetMethodIDsImpl(env);
611 609
612 static const JNINativeMethod kMethodsMyOtherInnerClass[] = { 610 static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
613 { "nativeInit", 611 { "nativeInit",
614 "(" 612 "("
615 ")" 613 ")"
616 "I", reinterpret_cast<void*>(Init) }, 614 "I", reinterpret_cast<void*>(Init) },
617 }; 615 };
618 const int kMethodsMyOtherInnerClassSize = 616 const int kMethodsMyOtherInnerClassSize =
619 arraysize(kMethodsMyOtherInnerClass); 617 arraysize(kMethodsMyOtherInnerClass);
620 618
621 if (env->RegisterNatives(g_MyOtherInnerClass_clazz.obj(), 619 if (env->RegisterNatives(g_MyOtherInnerClass_clazz,
622 kMethodsMyOtherInnerClass, 620 kMethodsMyOtherInnerClass,
623 kMethodsMyOtherInnerClassSize) < 0) { 621 kMethodsMyOtherInnerClassSize) < 0) {
624 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 622 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
625 return false; 623 return false;
626 } 624 }
627 625
628 static const JNINativeMethod kMethodsMyInnerClass[] = { 626 static const JNINativeMethod kMethodsMyInnerClass[] = {
629 { "nativeInit", 627 { "nativeInit",
630 "(" 628 "("
631 ")" 629 ")"
632 "I", reinterpret_cast<void*>(Init) }, 630 "I", reinterpret_cast<void*>(Init) },
633 }; 631 };
634 const int kMethodsMyInnerClassSize = arraysize(kMethodsMyInnerClass); 632 const int kMethodsMyInnerClassSize = arraysize(kMethodsMyInnerClass);
635 633
636 if (env->RegisterNatives(g_MyInnerClass_clazz.obj(), 634 if (env->RegisterNatives(g_MyInnerClass_clazz,
637 kMethodsMyInnerClass, 635 kMethodsMyInnerClass,
638 kMethodsMyInnerClassSize) < 0) { 636 kMethodsMyInnerClassSize) < 0) {
639 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 637 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
640 return false; 638 return false;
641 } 639 }
642 640
643 return true; 641 return true;
644 } 642 }
645 643
646 #endif // org_chromium_TestJni_JNI 644 #endif // org_chromium_TestJni_JNI
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 687
690 #include "base/android/jni_android.h" 688 #include "base/android/jni_android.h"
691 #include "base/android/scoped_java_ref.h" 689 #include "base/android/scoped_java_ref.h"
692 #include "base/basictypes.h" 690 #include "base/basictypes.h"
693 #include "base/logging.h" 691 #include "base/logging.h"
694 692
695 using base::android::ScopedJavaLocalRef; 693 using base::android::ScopedJavaLocalRef;
696 694
697 // Step 1: forward declarations. 695 // Step 1: forward declarations.
698 namespace { 696 namespace {
699 const char* const kMyOtherInnerClassClassPath = 697 const char kMyOtherInnerClassClassPath[] =
700 "org/chromium/TestJni$MyOtherInnerClass"; 698 "org/chromium/TestJni$MyOtherInnerClass";
701 const char* const kTestJniClassPath = "org/chromium/TestJni"; 699 const char kTestJniClassPath[] = "org/chromium/TestJni";
702 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 700 // Leaking this jclass as we cannot use LazyInstance from some threads.
703 base::android::ScopedJavaGlobalRef<jclass>& 701 jclass g_TestJni_clazz = NULL;
704 g_TestJni_clazz =
705 *(new base::android::ScopedJavaGlobalRef<jclass>());
706 } // namespace 702 } // namespace
707 703
708 static jint Init(JNIEnv* env, jobject obj); 704 static jint Init(JNIEnv* env, jobject obj);
709 705
710 706
711 static jint Init(JNIEnv* env, jobject obj); 707 static jint Init(JNIEnv* env, jobject obj);
712 708
713 709
714 // Step 2: method stubs. 710 // Step 2: method stubs.
715 711
716 712
717 // Step 3: GetMethodIDs and RegisterNatives. 713 // Step 3: GetMethodIDs and RegisterNatives.
718 714
719 715
720 static void GetMethodIDsImpl(JNIEnv* env) { 716 static void GetMethodIDsImpl(JNIEnv* env) {
721 g_TestJni_clazz.Reset( 717 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
722 base::android::GetClass(env, kTestJniClassPath)); 718 base::android::GetUnscopedClass(env, kTestJniClassPath)));
723 } 719 }
724 720
725 static bool RegisterNativesImpl(JNIEnv* env) { 721 static bool RegisterNativesImpl(JNIEnv* env) {
726 GetMethodIDsImpl(env); 722 GetMethodIDsImpl(env);
727 723
728 static const JNINativeMethod kMethodsMyOtherInnerClass[] = { 724 static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
729 { "nativeInit", 725 { "nativeInit",
730 "(" 726 "("
731 ")" 727 ")"
732 "I", reinterpret_cast<void*>(Init) }, 728 "I", reinterpret_cast<void*>(Init) },
733 }; 729 };
734 const int kMethodsMyOtherInnerClassSize = 730 const int kMethodsMyOtherInnerClassSize =
735 arraysize(kMethodsMyOtherInnerClass); 731 arraysize(kMethodsMyOtherInnerClass);
736 732
737 if (env->RegisterNatives(g_MyOtherInnerClass_clazz.obj(), 733 if (env->RegisterNatives(g_MyOtherInnerClass_clazz,
738 kMethodsMyOtherInnerClass, 734 kMethodsMyOtherInnerClass,
739 kMethodsMyOtherInnerClassSize) < 0) { 735 kMethodsMyOtherInnerClassSize) < 0) {
740 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 736 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
741 return false; 737 return false;
742 } 738 }
743 739
744 static const JNINativeMethod kMethodsTestJni[] = { 740 static const JNINativeMethod kMethodsTestJni[] = {
745 { "nativeInit", 741 { "nativeInit",
746 "(" 742 "("
747 ")" 743 ")"
748 "I", reinterpret_cast<void*>(Init) }, 744 "I", reinterpret_cast<void*>(Init) },
749 }; 745 };
750 const int kMethodsTestJniSize = arraysize(kMethodsTestJni); 746 const int kMethodsTestJniSize = arraysize(kMethodsTestJni);
751 747
752 if (env->RegisterNatives(g_TestJni_clazz.obj(), 748 if (env->RegisterNatives(g_TestJni_clazz,
753 kMethodsTestJni, 749 kMethodsTestJni,
754 kMethodsTestJniSize) < 0) { 750 kMethodsTestJniSize) < 0) {
755 LOG(ERROR) << "RegisterNatives failed in " << __FILE__; 751 LOG(ERROR) << "RegisterNatives failed in " << __FILE__;
756 return false; 752 return false;
757 } 753 }
758 754
759 return true; 755 return true;
760 } 756 }
761 757
762 #endif // org_chromium_TestJni_JNI 758 #endif // org_chromium_TestJni_JNI
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 923
928 #include "base/android/jni_android.h" 924 #include "base/android/jni_android.h"
929 #include "base/android/scoped_java_ref.h" 925 #include "base/android/scoped_java_ref.h"
930 #include "base/basictypes.h" 926 #include "base/basictypes.h"
931 #include "base/logging.h" 927 #include "base/logging.h"
932 928
933 using base::android::ScopedJavaLocalRef; 929 using base::android::ScopedJavaLocalRef;
934 930
935 // Step 1: forward declarations. 931 // Step 1: forward declarations.
936 namespace { 932 namespace {
937 const char* const kTestJniClassPath = "org/chromium/TestJni"; 933 const char kTestJniClassPath[] = "org/chromium/TestJni";
938 const char* const kInfoBarClassPath = "org/chromium/TestJni$InfoBar"; 934 const char kInfoBarClassPath[] = "org/chromium/TestJni$InfoBar";
939 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 935 // Leaking this jclass as we cannot use LazyInstance from some threads.
940 base::android::ScopedJavaGlobalRef<jclass>& 936 jclass g_TestJni_clazz = NULL;
941 g_TestJni_clazz = 937 // Leaking this jclass as we cannot use LazyInstance from some threads.
942 *(new base::android::ScopedJavaGlobalRef<jclass>()); 938 jclass g_InfoBar_clazz = NULL;
943 // Leaking this JavaRef as we cannot use LazyInstance from some threads.
944 base::android::ScopedJavaGlobalRef<jclass>&
945 g_InfoBar_clazz =
946 *(new base::android::ScopedJavaGlobalRef<jclass>());
947 } // namespace 939 } // namespace
948 940
949 941
950 // Step 2: method stubs. 942 // Step 2: method stubs.
951 943
952 static jmethodID g_TestJni_showConfirmInfoBar = 0; 944 static jmethodID g_TestJni_showConfirmInfoBar = 0;
953 static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env, 945 static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env,
954 jobject obj, jint nativeInfoBar, 946 jobject obj, jint nativeInfoBar,
955 jstring buttonOk, 947 jstring buttonOk,
956 jstring buttonCancel, 948 jstring buttonCancel,
957 jstring title, 949 jstring title,
958 jobject icon) { 950 jobject icon) {
959 /* Must call RegisterNativesImpl() */ 951 /* Must call RegisterNativesImpl() */
960 DCHECK(!g_TestJni_clazz.is_null()); 952 DCHECK(g_TestJni_clazz);
961 DCHECK(g_TestJni_showConfirmInfoBar); 953 DCHECK(g_TestJni_showConfirmInfoBar);
962 jobject ret = 954 jobject ret =
963 env->CallObjectMethod(obj, 955 env->CallObjectMethod(obj,
964 g_TestJni_showConfirmInfoBar, nativeInfoBar, buttonOk, buttonCancel, 956 g_TestJni_showConfirmInfoBar, nativeInfoBar, buttonOk, buttonCancel,
965 title, icon); 957 title, icon);
966 base::android::CheckException(env); 958 base::android::CheckException(env);
967 return ScopedJavaLocalRef<jobject>(env, ret); 959 return ScopedJavaLocalRef<jobject>(env, ret);
968 } 960 }
969 961
970 static jmethodID g_TestJni_showAutoLoginInfoBar = 0; 962 static jmethodID g_TestJni_showAutoLoginInfoBar = 0;
971 static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv* 963 static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv*
972 env, jobject obj, jint nativeInfoBar, 964 env, jobject obj, jint nativeInfoBar,
973 jstring realm, 965 jstring realm,
974 jstring account, 966 jstring account,
975 jstring args) { 967 jstring args) {
976 /* Must call RegisterNativesImpl() */ 968 /* Must call RegisterNativesImpl() */
977 DCHECK(!g_TestJni_clazz.is_null()); 969 DCHECK(g_TestJni_clazz);
978 DCHECK(g_TestJni_showAutoLoginInfoBar); 970 DCHECK(g_TestJni_showAutoLoginInfoBar);
979 jobject ret = 971 jobject ret =
980 env->CallObjectMethod(obj, 972 env->CallObjectMethod(obj,
981 g_TestJni_showAutoLoginInfoBar, nativeInfoBar, realm, account, args); 973 g_TestJni_showAutoLoginInfoBar, nativeInfoBar, realm, account, args);
982 base::android::CheckException(env); 974 base::android::CheckException(env);
983 return ScopedJavaLocalRef<jobject>(env, ret); 975 return ScopedJavaLocalRef<jobject>(env, ret);
984 } 976 }
985 977
986 static jmethodID g_InfoBar_dismiss = 0; 978 static jmethodID g_InfoBar_dismiss = 0;
987 static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) { 979 static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) {
988 /* Must call RegisterNativesImpl() */ 980 /* Must call RegisterNativesImpl() */
989 DCHECK(!g_InfoBar_clazz.is_null()); 981 DCHECK(g_InfoBar_clazz);
990 DCHECK(g_InfoBar_dismiss); 982 DCHECK(g_InfoBar_dismiss);
991 983
992 env->CallVoidMethod(obj, 984 env->CallVoidMethod(obj,
993 g_InfoBar_dismiss); 985 g_InfoBar_dismiss);
994 base::android::CheckException(env); 986 base::android::CheckException(env);
995 987
996 } 988 }
997 989
998 static jmethodID g_TestJni_shouldShowAutoLogin = 0; 990 static jmethodID g_TestJni_shouldShowAutoLogin = 0;
999 static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject 991 static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject
1000 chromeView, 992 chromeView,
1001 jstring realm, 993 jstring realm,
1002 jstring account, 994 jstring account,
1003 jstring args) { 995 jstring args) {
1004 /* Must call RegisterNativesImpl() */ 996 /* Must call RegisterNativesImpl() */
1005 DCHECK(!g_TestJni_clazz.is_null()); 997 DCHECK(g_TestJni_clazz);
1006 DCHECK(g_TestJni_shouldShowAutoLogin); 998 DCHECK(g_TestJni_shouldShowAutoLogin);
1007 jboolean ret = 999 jboolean ret =
1008 env->CallStaticBooleanMethod(g_TestJni_clazz.obj(), 1000 env->CallStaticBooleanMethod(g_TestJni_clazz,
1009 g_TestJni_shouldShowAutoLogin, chromeView, realm, account, args); 1001 g_TestJni_shouldShowAutoLogin, chromeView, realm, account, args);
1010 base::android::CheckException(env); 1002 base::android::CheckException(env);
1011 return ret; 1003 return ret;
1012 } 1004 }
1013 1005
1014 static jmethodID g_TestJni_openUrl = 0; 1006 static jmethodID g_TestJni_openUrl = 0;
1015 static ScopedJavaLocalRef<jobject> Java_TestJni_openUrl(JNIEnv* env, jstring 1007 static ScopedJavaLocalRef<jobject> Java_TestJni_openUrl(JNIEnv* env, jstring
1016 url) { 1008 url) {
1017 /* Must call RegisterNativesImpl() */ 1009 /* Must call RegisterNativesImpl() */
1018 DCHECK(!g_TestJni_clazz.is_null()); 1010 DCHECK(g_TestJni_clazz);
1019 DCHECK(g_TestJni_openUrl); 1011 DCHECK(g_TestJni_openUrl);
1020 jobject ret = 1012 jobject ret =
1021 env->CallStaticObjectMethod(g_TestJni_clazz.obj(), 1013 env->CallStaticObjectMethod(g_TestJni_clazz,
1022 g_TestJni_openUrl, url); 1014 g_TestJni_openUrl, url);
1023 base::android::CheckException(env); 1015 base::android::CheckException(env);
1024 return ScopedJavaLocalRef<jobject>(env, ret); 1016 return ScopedJavaLocalRef<jobject>(env, ret);
1025 } 1017 }
1026 1018
1027 static jmethodID g_TestJni_activateHardwareAcceleration = 0; 1019 static jmethodID g_TestJni_activateHardwareAcceleration = 0;
1028 static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj, 1020 static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj,
1029 jboolean activated, 1021 jboolean activated,
1030 jint iPid, 1022 jint iPid,
1031 jint iType, 1023 jint iType,
1032 jint iPrimaryID, 1024 jint iPrimaryID,
1033 jint iSecondaryID) { 1025 jint iSecondaryID) {
1034 /* Must call RegisterNativesImpl() */ 1026 /* Must call RegisterNativesImpl() */
1035 DCHECK(!g_TestJni_clazz.is_null()); 1027 DCHECK(g_TestJni_clazz);
1036 DCHECK(g_TestJni_activateHardwareAcceleration); 1028 DCHECK(g_TestJni_activateHardwareAcceleration);
1037 1029
1038 env->CallVoidMethod(obj, 1030 env->CallVoidMethod(obj,
1039 g_TestJni_activateHardwareAcceleration, activated, iPid, iType, 1031 g_TestJni_activateHardwareAcceleration, activated, iPid, iType,
1040 iPrimaryID, iSecondaryID); 1032 iPrimaryID, iSecondaryID);
1041 base::android::CheckException(env); 1033 base::android::CheckException(env);
1042 1034
1043 } 1035 }
1044 1036
1045 static jmethodID g_TestJni_uncheckedCall = 0; 1037 static jmethodID g_TestJni_uncheckedCall = 0;
1046 static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) { 1038 static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) {
1047 /* Must call RegisterNativesImpl() */ 1039 /* Must call RegisterNativesImpl() */
1048 DCHECK(!g_TestJni_clazz.is_null()); 1040 DCHECK(g_TestJni_clazz);
1049 DCHECK(g_TestJni_uncheckedCall); 1041 DCHECK(g_TestJni_uncheckedCall);
1050 1042
1051 env->CallVoidMethod(obj, 1043 env->CallVoidMethod(obj,
1052 g_TestJni_uncheckedCall, iParam); 1044 g_TestJni_uncheckedCall, iParam);
1053 1045
1054 1046
1055 } 1047 }
1056 1048
1057 // Step 3: GetMethodIDs and RegisterNatives. 1049 // Step 3: GetMethodIDs and RegisterNatives.
1058 1050
1059 1051
1060 static void GetMethodIDsImpl(JNIEnv* env) { 1052 static void GetMethodIDsImpl(JNIEnv* env) {
1061 g_TestJni_clazz.Reset( 1053 g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1062 base::android::GetClass(env, kTestJniClassPath)); 1054 base::android::GetUnscopedClass(env, kTestJniClassPath)));
1063 g_InfoBar_clazz.Reset( 1055 g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1064 base::android::GetClass(env, kInfoBarClassPath)); 1056 base::android::GetUnscopedClass(env, kInfoBarClassPath)));
1065 g_TestJni_showConfirmInfoBar = base::android::GetMethodID( 1057 g_TestJni_showConfirmInfoBar =
1066 env, g_TestJni_clazz, 1058 base::android::GetMethodID(
1067 "showConfirmInfoBar", 1059 env, g_TestJni_clazz,
1060 "showConfirmInfoBar",
1068 1061
1069 "(" 1062 "("
1070 "I" 1063 "I"
1071 "Ljava/lang/String;" 1064 "Ljava/lang/String;"
1072 "Ljava/lang/String;" 1065 "Ljava/lang/String;"
1073 "Ljava/lang/String;" 1066 "Ljava/lang/String;"
1074 "Landroid/graphics/Bitmap;" 1067 "Landroid/graphics/Bitmap;"
1075 ")" 1068 ")"
1076 "Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar;"); 1069 "Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar;");
1077 1070
1078 g_TestJni_showAutoLoginInfoBar = base::android::GetMethodID( 1071 g_TestJni_showAutoLoginInfoBar =
1079 env, g_TestJni_clazz, 1072 base::android::GetMethodID(
1080 "showAutoLoginInfoBar", 1073 env, g_TestJni_clazz,
1074 "showAutoLoginInfoBar",
1081 1075
1082 "(" 1076 "("
1083 "I" 1077 "I"
1084 "Ljava/lang/String;" 1078 "Ljava/lang/String;"
1085 "Ljava/lang/String;" 1079 "Ljava/lang/String;"
1086 "Ljava/lang/String;" 1080 "Ljava/lang/String;"
1087 ")" 1081 ")"
1088 "Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar;"); 1082 "Lcom/android/chrome/infobar/InfoBarContainer$NativeInfoBar;");
1089 1083
1090 g_InfoBar_dismiss = base::android::GetMethodID( 1084 g_InfoBar_dismiss =
1091 env, g_InfoBar_clazz, 1085 base::android::GetMethodID(
1092 "dismiss", 1086 env, g_InfoBar_clazz,
1087 "dismiss",
1093 1088
1094 "(" 1089 "("
1095 ")" 1090 ")"
1096 "V"); 1091 "V");
1097 1092
1098 g_TestJni_shouldShowAutoLogin = base::android::GetStaticMethodID( 1093 g_TestJni_shouldShowAutoLogin =
1099 env, g_TestJni_clazz, 1094 base::android::GetStaticMethodID(
1100 "shouldShowAutoLogin", 1095 env, g_TestJni_clazz,
1096 "shouldShowAutoLogin",
1101 1097
1102 "(" 1098 "("
1103 "Lorg/chromium/chromeview/ChromeView;" 1099 "Lorg/chromium/chromeview/ChromeView;"
1104 "Ljava/lang/String;" 1100 "Ljava/lang/String;"
1105 "Ljava/lang/String;" 1101 "Ljava/lang/String;"
1106 "Ljava/lang/String;" 1102 "Ljava/lang/String;"
1107 ")" 1103 ")"
1108 "Z"); 1104 "Z");
1109 1105
1110 g_TestJni_openUrl = base::android::GetStaticMethodID( 1106 g_TestJni_openUrl =
1111 env, g_TestJni_clazz, 1107 base::android::GetStaticMethodID(
1112 "openUrl", 1108 env, g_TestJni_clazz,
1109 "openUrl",
1113 1110
1114 "(" 1111 "("
1115 "Ljava/lang/String;" 1112 "Ljava/lang/String;"
1116 ")" 1113 ")"
1117 "Ljava/io/InputStream;"); 1114 "Ljava/io/InputStream;");
1118 1115
1119 g_TestJni_activateHardwareAcceleration = base::android::GetMethodID( 1116 g_TestJni_activateHardwareAcceleration =
1120 env, g_TestJni_clazz, 1117 base::android::GetMethodID(
1121 "activateHardwareAcceleration", 1118 env, g_TestJni_clazz,
1119 "activateHardwareAcceleration",
1122 1120
1123 "(" 1121 "("
1124 "Z" 1122 "Z"
1125 "I" 1123 "I"
1126 "I" 1124 "I"
1127 "I" 1125 "I"
1128 "I" 1126 "I"
1129 ")" 1127 ")"
1130 "V"); 1128 "V");
1131 1129
1132 g_TestJni_uncheckedCall = base::android::GetMethodID( 1130 g_TestJni_uncheckedCall =
1133 env, g_TestJni_clazz, 1131 base::android::GetMethodID(
1134 "uncheckedCall", 1132 env, g_TestJni_clazz,
1133 "uncheckedCall",
1135 1134
1136 "(" 1135 "("
1137 "I" 1136 "I"
1138 ")" 1137 ")"
1139 "V"); 1138 "V");
1140 1139
1141 } 1140 }
1142 1141
1143 static bool RegisterNativesImpl(JNIEnv* env) { 1142 static bool RegisterNativesImpl(JNIEnv* env) {
1144 GetMethodIDsImpl(env); 1143 GetMethodIDsImpl(env);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 1228
1230 #include "base/android/jni_android.h" 1229 #include "base/android/jni_android.h"
1231 #include "base/android/scoped_java_ref.h" 1230 #include "base/android/scoped_java_ref.h"
1232 #include "base/basictypes.h" 1231 #include "base/basictypes.h"
1233 #include "base/logging.h" 1232 #include "base/logging.h"
1234 1233
1235 using base::android::ScopedJavaLocalRef; 1234 using base::android::ScopedJavaLocalRef;
1236 1235
1237 // Step 1: forward declarations. 1236 // Step 1: forward declarations.
1238 namespace { 1237 namespace {
1239 const char* const kInputStreamClassPath = "java/io/InputStream"; 1238 const char kInputStreamClassPath[] = "java/io/InputStream";
1240 // Leaking this JavaRef as we cannot use LazyInstance from some threads. 1239 // Leaking this jclass as we cannot use LazyInstance from some threads.
1241 base::android::ScopedJavaGlobalRef<jclass>& 1240 jclass g_InputStream_clazz = NULL;
1242 g_InputStream_clazz =
1243 *(new base::android::ScopedJavaGlobalRef<jclass>());
1244 } // namespace 1241 } // namespace
1245 1242
1246 1243
1247 // Step 2: method stubs. 1244 // Step 2: method stubs.
1248 1245
1249 static jmethodID g_InputStream_available = 0; 1246 static jmethodID g_InputStream_available = 0;
1250 static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__ 1247 static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__
1251 ((unused)); 1248 ((unused));
1252 static jint Java_InputStream_available(JNIEnv* env, jobject obj) { 1249 static jint Java_InputStream_available(JNIEnv* env, jobject obj) {
1253 /* Must call RegisterNativesImpl() */ 1250 /* Must call RegisterNativesImpl() */
1254 DCHECK(!g_InputStream_clazz.is_null()); 1251 DCHECK(g_InputStream_clazz);
1255 DCHECK(g_InputStream_available); 1252 DCHECK(g_InputStream_available);
1256 jint ret = 1253 jint ret =
1257 env->CallIntMethod(obj, 1254 env->CallIntMethod(obj,
1258 g_InputStream_available); 1255 g_InputStream_available);
1259 base::android::CheckException(env); 1256 base::android::CheckException(env);
1260 return ret; 1257 return ret;
1261 } 1258 }
1262 1259
1263 static jmethodID g_InputStream_close = 0; 1260 static jmethodID g_InputStream_close = 0;
1264 static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__ 1261 static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__
1265 ((unused)); 1262 ((unused));
1266 static void Java_InputStream_close(JNIEnv* env, jobject obj) { 1263 static void Java_InputStream_close(JNIEnv* env, jobject obj) {
1267 /* Must call RegisterNativesImpl() */ 1264 /* Must call RegisterNativesImpl() */
1268 DCHECK(!g_InputStream_clazz.is_null()); 1265 DCHECK(g_InputStream_clazz);
1269 DCHECK(g_InputStream_close); 1266 DCHECK(g_InputStream_close);
1270 1267
1271 env->CallVoidMethod(obj, 1268 env->CallVoidMethod(obj,
1272 g_InputStream_close); 1269 g_InputStream_close);
1273 base::android::CheckException(env); 1270 base::android::CheckException(env);
1274 1271
1275 } 1272 }
1276 1273
1277 static jmethodID g_InputStream_mark = 0; 1274 static jmethodID g_InputStream_mark = 0;
1278 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) 1275 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0)
1279 __attribute__ ((unused)); 1276 __attribute__ ((unused));
1280 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) { 1277 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) {
1281 /* Must call RegisterNativesImpl() */ 1278 /* Must call RegisterNativesImpl() */
1282 DCHECK(!g_InputStream_clazz.is_null()); 1279 DCHECK(g_InputStream_clazz);
1283 DCHECK(g_InputStream_mark); 1280 DCHECK(g_InputStream_mark);
1284 1281
1285 env->CallVoidMethod(obj, 1282 env->CallVoidMethod(obj,
1286 g_InputStream_mark, p0); 1283 g_InputStream_mark, p0);
1287 base::android::CheckException(env); 1284 base::android::CheckException(env);
1288 1285
1289 } 1286 }
1290 1287
1291 static jmethodID g_InputStream_markSupported = 0; 1288 static jmethodID g_InputStream_markSupported = 0;
1292 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) 1289 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj)
1293 __attribute__ ((unused)); 1290 __attribute__ ((unused));
1294 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) { 1291 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) {
1295 /* Must call RegisterNativesImpl() */ 1292 /* Must call RegisterNativesImpl() */
1296 DCHECK(!g_InputStream_clazz.is_null()); 1293 DCHECK(g_InputStream_clazz);
1297 DCHECK(g_InputStream_markSupported); 1294 DCHECK(g_InputStream_markSupported);
1298 jboolean ret = 1295 jboolean ret =
1299 env->CallBooleanMethod(obj, 1296 env->CallBooleanMethod(obj,
1300 g_InputStream_markSupported); 1297 g_InputStream_markSupported);
1301 base::android::CheckException(env); 1298 base::android::CheckException(env);
1302 return ret; 1299 return ret;
1303 } 1300 }
1304 1301
1305 static jmethodID g_InputStream_read_pqI = 0; 1302 static jmethodID g_InputStream_read_pqI = 0;
1306 static jint Java_InputStream_read(JNIEnv* env, jobject obj) __attribute__ 1303 static jint Java_InputStream_read(JNIEnv* env, jobject obj) __attribute__
1307 ((unused)); 1304 ((unused));
1308 static jint Java_InputStream_read(JNIEnv* env, jobject obj) { 1305 static jint Java_InputStream_read(JNIEnv* env, jobject obj) {
1309 /* Must call RegisterNativesImpl() */ 1306 /* Must call RegisterNativesImpl() */
1310 DCHECK(!g_InputStream_clazz.is_null()); 1307 DCHECK(g_InputStream_clazz);
1311 DCHECK(g_InputStream_read_pqI); 1308 DCHECK(g_InputStream_read_pqI);
1312 jint ret = 1309 jint ret =
1313 env->CallIntMethod(obj, 1310 env->CallIntMethod(obj,
1314 g_InputStream_read_pqI); 1311 g_InputStream_read_pqI);
1315 base::android::CheckException(env); 1312 base::android::CheckException(env);
1316 return ret; 1313 return ret;
1317 } 1314 }
1318 1315
1319 static jmethodID g_InputStream_read_paBqI = 0; 1316 static jmethodID g_InputStream_read_paBqI = 0;
1320 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0) 1317 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0)
1321 __attribute__ ((unused)); 1318 __attribute__ ((unused));
1322 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0) { 1319 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0) {
1323 /* Must call RegisterNativesImpl() */ 1320 /* Must call RegisterNativesImpl() */
1324 DCHECK(!g_InputStream_clazz.is_null()); 1321 DCHECK(g_InputStream_clazz);
1325 DCHECK(g_InputStream_read_paBqI); 1322 DCHECK(g_InputStream_read_paBqI);
1326 jint ret = 1323 jint ret =
1327 env->CallIntMethod(obj, 1324 env->CallIntMethod(obj,
1328 g_InputStream_read_paBqI, p0); 1325 g_InputStream_read_paBqI, p0);
1329 base::android::CheckException(env); 1326 base::android::CheckException(env);
1330 return ret; 1327 return ret;
1331 } 1328 }
1332 1329
1333 static jmethodID g_InputStream_read_paBIIqI = 0; 1330 static jmethodID g_InputStream_read_paBIIqI = 0;
1334 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0, 1331 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0,
1335 jint p1, 1332 jint p1,
1336 jint p2) __attribute__ ((unused)); 1333 jint p2) __attribute__ ((unused));
1337 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0, 1334 static jint Java_InputStream_read(JNIEnv* env, jobject obj, jbyteArray p0,
1338 jint p1, 1335 jint p1,
1339 jint p2) { 1336 jint p2) {
1340 /* Must call RegisterNativesImpl() */ 1337 /* Must call RegisterNativesImpl() */
1341 DCHECK(!g_InputStream_clazz.is_null()); 1338 DCHECK(g_InputStream_clazz);
1342 DCHECK(g_InputStream_read_paBIIqI); 1339 DCHECK(g_InputStream_read_paBIIqI);
1343 jint ret = 1340 jint ret =
1344 env->CallIntMethod(obj, 1341 env->CallIntMethod(obj,
1345 g_InputStream_read_paBIIqI, p0, p1, p2); 1342 g_InputStream_read_paBIIqI, p0, p1, p2);
1346 base::android::CheckException(env); 1343 base::android::CheckException(env);
1347 return ret; 1344 return ret;
1348 } 1345 }
1349 1346
1350 static jmethodID g_InputStream_reset = 0; 1347 static jmethodID g_InputStream_reset = 0;
1351 static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__ 1348 static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__
1352 ((unused)); 1349 ((unused));
1353 static void Java_InputStream_reset(JNIEnv* env, jobject obj) { 1350 static void Java_InputStream_reset(JNIEnv* env, jobject obj) {
1354 /* Must call RegisterNativesImpl() */ 1351 /* Must call RegisterNativesImpl() */
1355 DCHECK(!g_InputStream_clazz.is_null()); 1352 DCHECK(g_InputStream_clazz);
1356 DCHECK(g_InputStream_reset); 1353 DCHECK(g_InputStream_reset);
1357 1354
1358 env->CallVoidMethod(obj, 1355 env->CallVoidMethod(obj,
1359 g_InputStream_reset); 1356 g_InputStream_reset);
1360 base::android::CheckException(env); 1357 base::android::CheckException(env);
1361 1358
1362 } 1359 }
1363 1360
1364 static jmethodID g_InputStream_skip = 0; 1361 static jmethodID g_InputStream_skip = 0;
1365 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) 1362 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0)
1366 __attribute__ ((unused)); 1363 __attribute__ ((unused));
1367 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) { 1364 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) {
1368 /* Must call RegisterNativesImpl() */ 1365 /* Must call RegisterNativesImpl() */
1369 DCHECK(!g_InputStream_clazz.is_null()); 1366 DCHECK(g_InputStream_clazz);
1370 DCHECK(g_InputStream_skip); 1367 DCHECK(g_InputStream_skip);
1371 jlong ret = 1368 jlong ret =
1372 env->CallLongMethod(obj, 1369 env->CallLongMethod(obj,
1373 g_InputStream_skip, p0); 1370 g_InputStream_skip, p0);
1374 base::android::CheckException(env); 1371 base::android::CheckException(env);
1375 return ret; 1372 return ret;
1376 } 1373 }
1377 1374
1378 // Step 3: GetMethodIDs and RegisterNatives. 1375 // Step 3: GetMethodIDs and RegisterNatives.
1379 namespace JNI_InputStream { 1376 namespace JNI_InputStream {
1380 1377
1381 static void GetMethodIDsImpl(JNIEnv* env) { 1378 static void GetMethodIDsImpl(JNIEnv* env) {
1382 g_InputStream_clazz.Reset( 1379 g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1383 base::android::GetClass(env, kInputStreamClassPath)); 1380 base::android::GetUnscopedClass(env, kInputStreamClassPath)));
1384 g_InputStream_available = base::android::GetMethodID( 1381 g_InputStream_available =
1385 env, g_InputStream_clazz, 1382 base::android::GetMethodID(
1386 "available", 1383 env, g_InputStream_clazz,
1384 "available",
1387 1385
1388 "(" 1386 "("
1389 ")" 1387 ")"
1390 "I"); 1388 "I");
1391 1389
1392 g_InputStream_close = base::android::GetMethodID( 1390 g_InputStream_close =
1393 env, g_InputStream_clazz, 1391 base::android::GetMethodID(
1394 "close", 1392 env, g_InputStream_clazz,
1393 "close",
1395 1394
1396 "(" 1395 "("
1397 ")" 1396 ")"
1398 "V"); 1397 "V");
1399 1398
1400 g_InputStream_mark = base::android::GetMethodID( 1399 g_InputStream_mark =
1401 env, g_InputStream_clazz, 1400 base::android::GetMethodID(
1402 "mark", 1401 env, g_InputStream_clazz,
1402 "mark",
1403 1403
1404 "(" 1404 "("
1405 "I" 1405 "I"
1406 ")" 1406 ")"
1407 "V"); 1407 "V");
1408 1408
1409 g_InputStream_markSupported = base::android::GetMethodID( 1409 g_InputStream_markSupported =
1410 env, g_InputStream_clazz, 1410 base::android::GetMethodID(
1411 "markSupported", 1411 env, g_InputStream_clazz,
1412 "markSupported",
1412 1413
1413 "(" 1414 "("
1414 ")" 1415 ")"
1415 "Z"); 1416 "Z");
1416 1417
1417 g_InputStream_read_pqI = base::android::GetMethodID( 1418 g_InputStream_read_pqI =
1418 env, g_InputStream_clazz, 1419 base::android::GetMethodID(
1419 "read", 1420 env, g_InputStream_clazz,
1421 "read",
1420 1422
1421 "(" 1423 "("
1422 ")" 1424 ")"
1423 "I"); 1425 "I");
1424 1426
1425 g_InputStream_read_paBqI = base::android::GetMethodID( 1427 g_InputStream_read_paBqI =
1426 env, g_InputStream_clazz, 1428 base::android::GetMethodID(
1427 "read", 1429 env, g_InputStream_clazz,
1430 "read",
1428 1431
1429 "(" 1432 "("
1430 "[B" 1433 "[B"
1431 ")" 1434 ")"
1432 "I"); 1435 "I");
1433 1436
1434 g_InputStream_read_paBIIqI = base::android::GetMethodID( 1437 g_InputStream_read_paBIIqI =
1435 env, g_InputStream_clazz, 1438 base::android::GetMethodID(
1436 "read", 1439 env, g_InputStream_clazz,
1440 "read",
1437 1441
1438 "(" 1442 "("
1439 "[B" 1443 "[B"
1440 "I" 1444 "I"
1441 "I" 1445 "I"
1442 ")" 1446 ")"
1443 "I"); 1447 "I");
1444 1448
1445 g_InputStream_reset = base::android::GetMethodID( 1449 g_InputStream_reset =
1446 env, g_InputStream_clazz, 1450 base::android::GetMethodID(
1447 "reset", 1451 env, g_InputStream_clazz,
1452 "reset",
1448 1453
1449 "(" 1454 "("
1450 ")" 1455 ")"
1451 "V"); 1456 "V");
1452 1457
1453 g_InputStream_skip = base::android::GetMethodID( 1458 g_InputStream_skip =
1454 env, g_InputStream_clazz, 1459 base::android::GetMethodID(
1455 "skip", 1460 env, g_InputStream_clazz,
1461 "skip",
1456 1462
1457 "(" 1463 "("
1458 "J" 1464 "J"
1459 ")" 1465 ")"
1460 "J"); 1466 "J");
1461 1467
1462 } 1468 }
1463 1469
1464 static bool RegisterNativesImpl(JNIEnv* env) { 1470 static bool RegisterNativesImpl(JNIEnv* env) {
1465 JNI_InputStream::GetMethodIDsImpl(env); 1471 JNI_InputStream::GetMethodIDsImpl(env);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1518 self.assertRaises(SystemExit, jni_generator.CheckFilenames, 1524 self.assertRaises(SystemExit, jni_generator.CheckFilenames,
1519 ['NotTheSame.java'], ['not_good.h']) 1525 ['NotTheSame.java'], ['not_good.h'])
1520 self.assertRaises(SystemExit, jni_generator.CheckFilenames, 1526 self.assertRaises(SystemExit, jni_generator.CheckFilenames,
1521 ['MissingJniSuffix.java'], ['missing_jni_suffix.h']) 1527 ['MissingJniSuffix.java'], ['missing_jni_suffix.h'])
1522 jni_generator.CheckFilenames(['ThisIsFine.java'], ['this_is_fine_jni.h']) 1528 jni_generator.CheckFilenames(['ThisIsFine.java'], ['this_is_fine_jni.h'])
1523 jni_generator.CheckFilenames([], []) 1529 jni_generator.CheckFilenames([], [])
1524 1530
1525 1531
1526 if __name__ == '__main__': 1532 if __name__ == '__main__':
1527 unittest.main() 1533 unittest.main()
OLDNEW
« no previous file with comments | « base/android/jni_generator/jni_generator.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698