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

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

Issue 23587011: Fix building with Java 7 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add test case Created 7 years, 3 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
« 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/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 1548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 datatype='int'), 1559 datatype='int'),
1560 Param(name='p3', 1560 Param(name='p3',
1561 datatype='int'),], 1561 datatype='int'),],
1562 'int')) 1562 'int'))
1563 self.assertEquals('openJIIS_JLS', 1563 self.assertEquals('openJIIS_JLS',
1564 jni_generator.GetMangledMethodName('open', 1564 jni_generator.GetMangledMethodName('open',
1565 [Param(name='p1', 1565 [Param(name='p1',
1566 datatype='java/lang/String'),], 1566 datatype='java/lang/String'),],
1567 'java/io/InputStream')) 1567 'java/io/InputStream'))
1568 1568
1569 def testFromJavaPGenerics(self):
1570 contents = """
1571 public abstract class java.util.HashSet<T> extends java.util.AbstractSet<E> impl ements java.util.Set<E>, java.lang.Cloneable, java.io.Serializable {
joth 2013/08/31 02:43:38 nit: I think we'd like this wrapped like the Input
1572 public void dummy();
1573 }
1574 """
1575 jni_from_javap = jni_generator.JNIFromJavaP(contents.split('\n'), None)
1576 self.assertEquals(1, len(jni_from_javap.called_by_natives))
1577 golden_content = """\
1578 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
1579 // Use of this source code is governed by a BSD-style license that can be
1580 // found in the LICENSE file.
1581
1582 // This file is autogenerated by
1583 // base/android/jni_generator/jni_generator_tests.py
1584 // For
1585 // java/util/HashSet
1586
1587 #ifndef java_util_HashSet_JNI
1588 #define java_util_HashSet_JNI
1589
1590 #include <jni.h>
1591
1592 #include "base/android/jni_android.h"
1593 #include "base/android/scoped_java_ref.h"
1594 #include "base/basictypes.h"
1595 #include "base/logging.h"
1596
1597 using base::android::ScopedJavaLocalRef;
1598
1599 // Step 1: forward declarations.
1600 namespace {
1601 const char kHashSetClassPath[] = "java/util/HashSet";
1602 // Leaking this jclass as we cannot use LazyInstance from some threads.
1603 jclass g_HashSet_clazz = NULL;
1604 } // namespace
1605
1606 namespace JNI_HashSet {
1607
1608 // Step 2: method stubs.
1609
1610 static base::subtle::AtomicWord g_HashSet_dummy = 0;
1611 static void Java_HashSet_dummy(JNIEnv* env, jobject obj) __attribute__
1612 ((unused));
1613 static void Java_HashSet_dummy(JNIEnv* env, jobject obj) {
1614 /* Must call RegisterNativesImpl() */
1615 DCHECK(g_HashSet_clazz);
1616 jmethodID method_id =
1617 base::android::MethodID::LazyGet<
1618 base::android::MethodID::TYPE_INSTANCE>(
1619 env, g_HashSet_clazz,
1620 "dummy",
1621
1622 "("
1623 ")"
1624 "V",
1625 &g_HashSet_dummy);
1626
1627 env->CallVoidMethod(obj,
1628 method_id);
1629 base::android::CheckException(env);
1630
1631 }
1632
1633 // Step 3: RegisterNatives.
1634
1635 static bool RegisterNativesImpl(JNIEnv* env) {
1636
1637 g_HashSet_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
1638 base::android::GetClass(env, kHashSetClassPath).obj()));
1639 return true;
1640 }
1641 } // namespace JNI_HashSet
1642
1643 #endif // java_util_HashSet_JNI
1644 """
1645 self.assertTextEquals(golden_content, jni_from_javap.GetContent())
1646
1569 def testFromJavaP(self): 1647 def testFromJavaP(self):
1570 contents = """ 1648 contents = """
1571 public abstract class java.io.InputStream extends java.lang.Object 1649 public abstract class java.io.InputStream extends java.lang.Object
1572 implements java.io.Closeable{ 1650 implements java.io.Closeable{
1573 public java.io.InputStream(); 1651 public java.io.InputStream();
1574 public int available() throws java.io.IOException; 1652 public int available() throws java.io.IOException;
1575 public void close() throws java.io.IOException; 1653 public void close() throws java.io.IOException;
1576 public void mark(int); 1654 public void mark(int);
1577 public boolean markSupported(); 1655 public boolean markSupported();
1578 public abstract int read() throws java.io.IOException; 1656 public abstract int read() throws java.io.IOException;
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
2075 2153
2076 def testJniParamsJavaToJni(self): 2154 def testJniParamsJavaToJni(self):
2077 self.assertTextEquals('I', JniParams.JavaToJni('int')) 2155 self.assertTextEquals('I', JniParams.JavaToJni('int'))
2078 self.assertTextEquals('[B', JniParams.JavaToJni('byte[]')) 2156 self.assertTextEquals('[B', JniParams.JavaToJni('byte[]'))
2079 self.assertTextEquals( 2157 self.assertTextEquals(
2080 '[Ljava/nio/ByteBuffer;', JniParams.JavaToJni('java/nio/ByteBuffer[]')) 2158 '[Ljava/nio/ByteBuffer;', JniParams.JavaToJni('java/nio/ByteBuffer[]'))
2081 2159
2082 2160
2083 if __name__ == '__main__': 2161 if __name__ == '__main__':
2084 unittest.main() 2162 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