| OLD | NEW |
| 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 1565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1576 jni_generator.GetMangledMethodName('open', | 1576 jni_generator.GetMangledMethodName('open', |
| 1577 [Param(name='p1', | 1577 [Param(name='p1', |
| 1578 datatype='java/lang/String'),], | 1578 datatype='java/lang/String'),], |
| 1579 'java/io/InputStream')) | 1579 'java/io/InputStream')) |
| 1580 | 1580 |
| 1581 def testFromJavaPGenerics(self): | 1581 def testFromJavaPGenerics(self): |
| 1582 contents = """ | 1582 contents = """ |
| 1583 public abstract class java.util.HashSet<T> extends java.util.AbstractSet<E> | 1583 public abstract class java.util.HashSet<T> extends java.util.AbstractSet<E> |
| 1584 implements java.util.Set<E>, java.lang.Cloneable, java.io.Serializable { | 1584 implements java.util.Set<E>, java.lang.Cloneable, java.io.Serializable { |
| 1585 public void dummy(); | 1585 public void dummy(); |
| 1586 Signature: ()V |
| 1586 } | 1587 } |
| 1587 """ | 1588 """ |
| 1588 jni_from_javap = jni_generator.JNIFromJavaP(contents.split('\n'), | 1589 jni_from_javap = jni_generator.JNIFromJavaP(contents.split('\n'), |
| 1589 TestOptions()) | 1590 TestOptions()) |
| 1590 self.assertEquals(1, len(jni_from_javap.called_by_natives)) | 1591 self.assertEquals(1, len(jni_from_javap.called_by_natives)) |
| 1591 golden_content = """\ | 1592 golden_content = """\ |
| 1592 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1593 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 1593 // Use of this source code is governed by a BSD-style license that can be | 1594 // Use of this source code is governed by a BSD-style license that can be |
| 1594 // found in the LICENSE file. | 1595 // found in the LICENSE file. |
| 1595 | 1596 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1625 static void Java_HashSet_dummy(JNIEnv* env, jobject obj) __attribute__ | 1626 static void Java_HashSet_dummy(JNIEnv* env, jobject obj) __attribute__ |
| 1626 ((unused)); | 1627 ((unused)); |
| 1627 static void Java_HashSet_dummy(JNIEnv* env, jobject obj) { | 1628 static void Java_HashSet_dummy(JNIEnv* env, jobject obj) { |
| 1628 /* Must call RegisterNativesImpl() */ | 1629 /* Must call RegisterNativesImpl() */ |
| 1629 DCHECK(g_HashSet_clazz); | 1630 DCHECK(g_HashSet_clazz); |
| 1630 jmethodID method_id = | 1631 jmethodID method_id = |
| 1631 base::android::MethodID::LazyGet< | 1632 base::android::MethodID::LazyGet< |
| 1632 base::android::MethodID::TYPE_INSTANCE>( | 1633 base::android::MethodID::TYPE_INSTANCE>( |
| 1633 env, g_HashSet_clazz, | 1634 env, g_HashSet_clazz, |
| 1634 "dummy", | 1635 "dummy", |
| 1635 | 1636 "()V", |
| 1636 "(" | |
| 1637 ")" | |
| 1638 "V", | |
| 1639 &g_HashSet_dummy); | 1637 &g_HashSet_dummy); |
| 1640 | 1638 |
| 1641 env->CallVoidMethod(obj, | 1639 env->CallVoidMethod(obj, |
| 1642 method_id); | 1640 method_id); |
| 1643 base::android::CheckException(env); | 1641 base::android::CheckException(env); |
| 1644 | 1642 |
| 1645 } | 1643 } |
| 1646 | 1644 |
| 1647 // Step 3: RegisterNatives. | 1645 // Step 3: RegisterNatives. |
| 1648 | 1646 |
| 1649 static bool RegisterNativesImpl(JNIEnv* env) { | 1647 static bool RegisterNativesImpl(JNIEnv* env) { |
| 1650 | 1648 |
| 1651 g_HashSet_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( | 1649 g_HashSet_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
| 1652 base::android::GetClass(env, kHashSetClassPath).obj())); | 1650 base::android::GetClass(env, kHashSetClassPath).obj())); |
| 1653 return true; | 1651 return true; |
| 1654 } | 1652 } |
| 1655 } // namespace JNI_HashSet | 1653 } // namespace JNI_HashSet |
| 1656 | 1654 |
| 1657 #endif // java_util_HashSet_JNI | 1655 #endif // java_util_HashSet_JNI |
| 1658 """ | 1656 """ |
| 1659 self.assertTextEquals(golden_content, jni_from_javap.GetContent()) | 1657 self.assertTextEquals(golden_content, jni_from_javap.GetContent()) |
| 1660 | 1658 |
| 1659 def testSnippnetJavap6_7(self): |
| 1660 content_javap6 = """ |
| 1661 public class java.util.HashSet { |
| 1662 public boolean add(java.lang.Object); |
| 1663 Signature: (Ljava/lang/Object;)Z |
| 1664 } |
| 1665 """ |
| 1666 |
| 1667 content_javap7 = """ |
| 1668 public class java.util.HashSet { |
| 1669 public boolean add(E); |
| 1670 Signature: (Ljava/lang/Object;)Z |
| 1671 } |
| 1672 """ |
| 1673 jni_from_javap6 = jni_generator.JNIFromJavaP(content_javap6.split('\n'), |
| 1674 TestOptions()) |
| 1675 jni_from_javap7 = jni_generator.JNIFromJavaP(content_javap7.split('\n'), |
| 1676 TestOptions()) |
| 1677 self.assertTrue(jni_from_javap6.GetContent()) |
| 1678 self.assertTrue(jni_from_javap7.GetContent()) |
| 1679 # Ensure the javap7 is correctly parsed and uses the Signature field rather |
| 1680 # than the "E" parameter. |
| 1681 self.assertTextEquals(jni_from_javap6.GetContent(), |
| 1682 jni_from_javap7.GetContent()) |
| 1683 |
| 1661 def testFromJavaP(self): | 1684 def testFromJavaP(self): |
| 1662 contents = """ | 1685 contents = """ |
| 1663 public abstract class java.io.InputStream extends java.lang.Object | 1686 public abstract class java.io.InputStream extends |
| 1664 implements java.io.Closeable{ | 1687 java.lang.Object implements java.io.Closeable{ |
| 1665 public java.io.InputStream(); | 1688 public java.io.InputStream(); |
| 1666 public int available() throws java.io.IOException; | 1689 Signature: ()V |
| 1667 public void close() throws java.io.IOException; | 1690 public int available() throws java.io.IOException; |
| 1668 public void mark(int); | 1691 Signature: ()I |
| 1669 public boolean markSupported(); | 1692 public void close() throws java.io.IOException; |
| 1670 public abstract int read() throws java.io.IOException; | 1693 Signature: ()V |
| 1671 public int read(byte[]) throws java.io.IOException; | 1694 public void mark(int); |
| 1672 public int read(byte[], int, int) throws java.io.IOException; | 1695 Signature: (I)V |
| 1673 public synchronized void reset() throws java.io.IOException; | 1696 public boolean markSupported(); |
| 1674 public long skip(long) throws java.io.IOException; | 1697 Signature: ()Z |
| 1698 public abstract int read() throws java.io.IOException; |
| 1699 Signature: ()I |
| 1700 public int read(byte[]) throws java.io.IOException; |
| 1701 Signature: ([B)I |
| 1702 public int read(byte[], int, int) throws java.io.IOException; |
| 1703 Signature: ([BII)I |
| 1704 public synchronized void reset() throws java.io.IOException; |
| 1705 Signature: ()V |
| 1706 public long skip(long) throws java.io.IOException; |
| 1707 Signature: (J)J |
| 1675 } | 1708 } |
| 1676 """ | 1709 """ |
| 1677 jni_from_javap = jni_generator.JNIFromJavaP(contents.split('\n'), | 1710 jni_from_javap = jni_generator.JNIFromJavaP(contents.split('\n'), |
| 1678 TestOptions()) | 1711 TestOptions()) |
| 1679 self.assertEquals(10, len(jni_from_javap.called_by_natives)) | 1712 self.assertEquals(10, len(jni_from_javap.called_by_natives)) |
| 1680 golden_content = """\ | 1713 golden_content = """\ |
| 1681 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1714 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 1682 // Use of this source code is governed by a BSD-style license that can be | 1715 // Use of this source code is governed by a BSD-style license that can be |
| 1683 // found in the LICENSE file. | 1716 // found in the LICENSE file. |
| 1684 | 1717 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1714 static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__ | 1747 static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__ |
| 1715 ((unused)); | 1748 ((unused)); |
| 1716 static jint Java_InputStream_available(JNIEnv* env, jobject obj) { | 1749 static jint Java_InputStream_available(JNIEnv* env, jobject obj) { |
| 1717 /* Must call RegisterNativesImpl() */ | 1750 /* Must call RegisterNativesImpl() */ |
| 1718 DCHECK(g_InputStream_clazz); | 1751 DCHECK(g_InputStream_clazz); |
| 1719 jmethodID method_id = | 1752 jmethodID method_id = |
| 1720 base::android::MethodID::LazyGet< | 1753 base::android::MethodID::LazyGet< |
| 1721 base::android::MethodID::TYPE_INSTANCE>( | 1754 base::android::MethodID::TYPE_INSTANCE>( |
| 1722 env, g_InputStream_clazz, | 1755 env, g_InputStream_clazz, |
| 1723 "available", | 1756 "available", |
| 1724 | 1757 "()I", |
| 1725 "(" | |
| 1726 ")" | |
| 1727 "I", | |
| 1728 &g_InputStream_available); | 1758 &g_InputStream_available); |
| 1729 | 1759 |
| 1730 jint ret = | 1760 jint ret = |
| 1731 env->CallIntMethod(obj, | 1761 env->CallIntMethod(obj, |
| 1732 method_id); | 1762 method_id); |
| 1733 base::android::CheckException(env); | 1763 base::android::CheckException(env); |
| 1734 return ret; | 1764 return ret; |
| 1735 } | 1765 } |
| 1736 | 1766 |
| 1737 static base::subtle::AtomicWord g_InputStream_close = 0; | 1767 static base::subtle::AtomicWord g_InputStream_close = 0; |
| 1738 static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__ | 1768 static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__ |
| 1739 ((unused)); | 1769 ((unused)); |
| 1740 static void Java_InputStream_close(JNIEnv* env, jobject obj) { | 1770 static void Java_InputStream_close(JNIEnv* env, jobject obj) { |
| 1741 /* Must call RegisterNativesImpl() */ | 1771 /* Must call RegisterNativesImpl() */ |
| 1742 DCHECK(g_InputStream_clazz); | 1772 DCHECK(g_InputStream_clazz); |
| 1743 jmethodID method_id = | 1773 jmethodID method_id = |
| 1744 base::android::MethodID::LazyGet< | 1774 base::android::MethodID::LazyGet< |
| 1745 base::android::MethodID::TYPE_INSTANCE>( | 1775 base::android::MethodID::TYPE_INSTANCE>( |
| 1746 env, g_InputStream_clazz, | 1776 env, g_InputStream_clazz, |
| 1747 "close", | 1777 "close", |
| 1748 | 1778 "()V", |
| 1749 "(" | |
| 1750 ")" | |
| 1751 "V", | |
| 1752 &g_InputStream_close); | 1779 &g_InputStream_close); |
| 1753 | 1780 |
| 1754 env->CallVoidMethod(obj, | 1781 env->CallVoidMethod(obj, |
| 1755 method_id); | 1782 method_id); |
| 1756 base::android::CheckException(env); | 1783 base::android::CheckException(env); |
| 1757 | 1784 |
| 1758 } | 1785 } |
| 1759 | 1786 |
| 1760 static base::subtle::AtomicWord g_InputStream_mark = 0; | 1787 static base::subtle::AtomicWord g_InputStream_mark = 0; |
| 1761 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) | 1788 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) |
| 1762 __attribute__ ((unused)); | 1789 __attribute__ ((unused)); |
| 1763 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) { | 1790 static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) { |
| 1764 /* Must call RegisterNativesImpl() */ | 1791 /* Must call RegisterNativesImpl() */ |
| 1765 DCHECK(g_InputStream_clazz); | 1792 DCHECK(g_InputStream_clazz); |
| 1766 jmethodID method_id = | 1793 jmethodID method_id = |
| 1767 base::android::MethodID::LazyGet< | 1794 base::android::MethodID::LazyGet< |
| 1768 base::android::MethodID::TYPE_INSTANCE>( | 1795 base::android::MethodID::TYPE_INSTANCE>( |
| 1769 env, g_InputStream_clazz, | 1796 env, g_InputStream_clazz, |
| 1770 "mark", | 1797 "mark", |
| 1771 | 1798 "(I)V", |
| 1772 "(" | |
| 1773 "I" | |
| 1774 ")" | |
| 1775 "V", | |
| 1776 &g_InputStream_mark); | 1799 &g_InputStream_mark); |
| 1777 | 1800 |
| 1778 env->CallVoidMethod(obj, | 1801 env->CallVoidMethod(obj, |
| 1779 method_id, p0); | 1802 method_id, p0); |
| 1780 base::android::CheckException(env); | 1803 base::android::CheckException(env); |
| 1781 | 1804 |
| 1782 } | 1805 } |
| 1783 | 1806 |
| 1784 static base::subtle::AtomicWord g_InputStream_markSupported = 0; | 1807 static base::subtle::AtomicWord g_InputStream_markSupported = 0; |
| 1785 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) | 1808 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) |
| 1786 __attribute__ ((unused)); | 1809 __attribute__ ((unused)); |
| 1787 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) { | 1810 static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) { |
| 1788 /* Must call RegisterNativesImpl() */ | 1811 /* Must call RegisterNativesImpl() */ |
| 1789 DCHECK(g_InputStream_clazz); | 1812 DCHECK(g_InputStream_clazz); |
| 1790 jmethodID method_id = | 1813 jmethodID method_id = |
| 1791 base::android::MethodID::LazyGet< | 1814 base::android::MethodID::LazyGet< |
| 1792 base::android::MethodID::TYPE_INSTANCE>( | 1815 base::android::MethodID::TYPE_INSTANCE>( |
| 1793 env, g_InputStream_clazz, | 1816 env, g_InputStream_clazz, |
| 1794 "markSupported", | 1817 "markSupported", |
| 1795 | 1818 "()Z", |
| 1796 "(" | |
| 1797 ")" | |
| 1798 "Z", | |
| 1799 &g_InputStream_markSupported); | 1819 &g_InputStream_markSupported); |
| 1800 | 1820 |
| 1801 jboolean ret = | 1821 jboolean ret = |
| 1802 env->CallBooleanMethod(obj, | 1822 env->CallBooleanMethod(obj, |
| 1803 method_id); | 1823 method_id); |
| 1804 base::android::CheckException(env); | 1824 base::android::CheckException(env); |
| 1805 return ret; | 1825 return ret; |
| 1806 } | 1826 } |
| 1807 | 1827 |
| 1808 static base::subtle::AtomicWord g_InputStream_readI = 0; | 1828 static base::subtle::AtomicWord g_InputStream_readI = 0; |
| 1809 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) __attribute__ | 1829 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) __attribute__ |
| 1810 ((unused)); | 1830 ((unused)); |
| 1811 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) { | 1831 static jint Java_InputStream_readI(JNIEnv* env, jobject obj) { |
| 1812 /* Must call RegisterNativesImpl() */ | 1832 /* Must call RegisterNativesImpl() */ |
| 1813 DCHECK(g_InputStream_clazz); | 1833 DCHECK(g_InputStream_clazz); |
| 1814 jmethodID method_id = | 1834 jmethodID method_id = |
| 1815 base::android::MethodID::LazyGet< | 1835 base::android::MethodID::LazyGet< |
| 1816 base::android::MethodID::TYPE_INSTANCE>( | 1836 base::android::MethodID::TYPE_INSTANCE>( |
| 1817 env, g_InputStream_clazz, | 1837 env, g_InputStream_clazz, |
| 1818 "read", | 1838 "read", |
| 1819 | 1839 "()I", |
| 1820 "(" | |
| 1821 ")" | |
| 1822 "I", | |
| 1823 &g_InputStream_readI); | 1840 &g_InputStream_readI); |
| 1824 | 1841 |
| 1825 jint ret = | 1842 jint ret = |
| 1826 env->CallIntMethod(obj, | 1843 env->CallIntMethod(obj, |
| 1827 method_id); | 1844 method_id); |
| 1828 base::android::CheckException(env); | 1845 base::android::CheckException(env); |
| 1829 return ret; | 1846 return ret; |
| 1830 } | 1847 } |
| 1831 | 1848 |
| 1832 static base::subtle::AtomicWord g_InputStream_readI_AB = 0; | 1849 static base::subtle::AtomicWord g_InputStream_readI_AB = 0; |
| 1833 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) | 1850 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) |
| 1834 __attribute__ ((unused)); | 1851 __attribute__ ((unused)); |
| 1835 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) { | 1852 static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) { |
| 1836 /* Must call RegisterNativesImpl() */ | 1853 /* Must call RegisterNativesImpl() */ |
| 1837 DCHECK(g_InputStream_clazz); | 1854 DCHECK(g_InputStream_clazz); |
| 1838 jmethodID method_id = | 1855 jmethodID method_id = |
| 1839 base::android::MethodID::LazyGet< | 1856 base::android::MethodID::LazyGet< |
| 1840 base::android::MethodID::TYPE_INSTANCE>( | 1857 base::android::MethodID::TYPE_INSTANCE>( |
| 1841 env, g_InputStream_clazz, | 1858 env, g_InputStream_clazz, |
| 1842 "read", | 1859 "read", |
| 1843 | 1860 "([B)I", |
| 1844 "(" | |
| 1845 "[B" | |
| 1846 ")" | |
| 1847 "I", | |
| 1848 &g_InputStream_readI_AB); | 1861 &g_InputStream_readI_AB); |
| 1849 | 1862 |
| 1850 jint ret = | 1863 jint ret = |
| 1851 env->CallIntMethod(obj, | 1864 env->CallIntMethod(obj, |
| 1852 method_id, p0); | 1865 method_id, p0); |
| 1853 base::android::CheckException(env); | 1866 base::android::CheckException(env); |
| 1854 return ret; | 1867 return ret; |
| 1855 } | 1868 } |
| 1856 | 1869 |
| 1857 static base::subtle::AtomicWord g_InputStream_readI_AB_I_I = 0; | 1870 static base::subtle::AtomicWord g_InputStream_readI_AB_I_I = 0; |
| 1858 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray | 1871 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray |
| 1859 p0, | 1872 p0, |
| 1860 jint p1, | 1873 jint p1, |
| 1861 jint p2) __attribute__ ((unused)); | 1874 jint p2) __attribute__ ((unused)); |
| 1862 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray | 1875 static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray |
| 1863 p0, | 1876 p0, |
| 1864 jint p1, | 1877 jint p1, |
| 1865 jint p2) { | 1878 jint p2) { |
| 1866 /* Must call RegisterNativesImpl() */ | 1879 /* Must call RegisterNativesImpl() */ |
| 1867 DCHECK(g_InputStream_clazz); | 1880 DCHECK(g_InputStream_clazz); |
| 1868 jmethodID method_id = | 1881 jmethodID method_id = |
| 1869 base::android::MethodID::LazyGet< | 1882 base::android::MethodID::LazyGet< |
| 1870 base::android::MethodID::TYPE_INSTANCE>( | 1883 base::android::MethodID::TYPE_INSTANCE>( |
| 1871 env, g_InputStream_clazz, | 1884 env, g_InputStream_clazz, |
| 1872 "read", | 1885 "read", |
| 1873 | 1886 "([BII)I", |
| 1874 "(" | |
| 1875 "[B" | |
| 1876 "I" | |
| 1877 "I" | |
| 1878 ")" | |
| 1879 "I", | |
| 1880 &g_InputStream_readI_AB_I_I); | 1887 &g_InputStream_readI_AB_I_I); |
| 1881 | 1888 |
| 1882 jint ret = | 1889 jint ret = |
| 1883 env->CallIntMethod(obj, | 1890 env->CallIntMethod(obj, |
| 1884 method_id, p0, p1, p2); | 1891 method_id, p0, p1, p2); |
| 1885 base::android::CheckException(env); | 1892 base::android::CheckException(env); |
| 1886 return ret; | 1893 return ret; |
| 1887 } | 1894 } |
| 1888 | 1895 |
| 1889 static base::subtle::AtomicWord g_InputStream_reset = 0; | 1896 static base::subtle::AtomicWord g_InputStream_reset = 0; |
| 1890 static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__ | 1897 static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__ |
| 1891 ((unused)); | 1898 ((unused)); |
| 1892 static void Java_InputStream_reset(JNIEnv* env, jobject obj) { | 1899 static void Java_InputStream_reset(JNIEnv* env, jobject obj) { |
| 1893 /* Must call RegisterNativesImpl() */ | 1900 /* Must call RegisterNativesImpl() */ |
| 1894 DCHECK(g_InputStream_clazz); | 1901 DCHECK(g_InputStream_clazz); |
| 1895 jmethodID method_id = | 1902 jmethodID method_id = |
| 1896 base::android::MethodID::LazyGet< | 1903 base::android::MethodID::LazyGet< |
| 1897 base::android::MethodID::TYPE_INSTANCE>( | 1904 base::android::MethodID::TYPE_INSTANCE>( |
| 1898 env, g_InputStream_clazz, | 1905 env, g_InputStream_clazz, |
| 1899 "reset", | 1906 "reset", |
| 1900 | 1907 "()V", |
| 1901 "(" | |
| 1902 ")" | |
| 1903 "V", | |
| 1904 &g_InputStream_reset); | 1908 &g_InputStream_reset); |
| 1905 | 1909 |
| 1906 env->CallVoidMethod(obj, | 1910 env->CallVoidMethod(obj, |
| 1907 method_id); | 1911 method_id); |
| 1908 base::android::CheckException(env); | 1912 base::android::CheckException(env); |
| 1909 | 1913 |
| 1910 } | 1914 } |
| 1911 | 1915 |
| 1912 static base::subtle::AtomicWord g_InputStream_skip = 0; | 1916 static base::subtle::AtomicWord g_InputStream_skip = 0; |
| 1913 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) | 1917 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) |
| 1914 __attribute__ ((unused)); | 1918 __attribute__ ((unused)); |
| 1915 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) { | 1919 static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) { |
| 1916 /* Must call RegisterNativesImpl() */ | 1920 /* Must call RegisterNativesImpl() */ |
| 1917 DCHECK(g_InputStream_clazz); | 1921 DCHECK(g_InputStream_clazz); |
| 1918 jmethodID method_id = | 1922 jmethodID method_id = |
| 1919 base::android::MethodID::LazyGet< | 1923 base::android::MethodID::LazyGet< |
| 1920 base::android::MethodID::TYPE_INSTANCE>( | 1924 base::android::MethodID::TYPE_INSTANCE>( |
| 1921 env, g_InputStream_clazz, | 1925 env, g_InputStream_clazz, |
| 1922 "skip", | 1926 "skip", |
| 1923 | 1927 "(J)J", |
| 1924 "(" | |
| 1925 "J" | |
| 1926 ")" | |
| 1927 "J", | |
| 1928 &g_InputStream_skip); | 1928 &g_InputStream_skip); |
| 1929 | 1929 |
| 1930 jlong ret = | 1930 jlong ret = |
| 1931 env->CallLongMethod(obj, | 1931 env->CallLongMethod(obj, |
| 1932 method_id, p0); | 1932 method_id, p0); |
| 1933 base::android::CheckException(env); | 1933 base::android::CheckException(env); |
| 1934 return ret; | 1934 return ret; |
| 1935 } | 1935 } |
| 1936 | 1936 |
| 1937 static base::subtle::AtomicWord g_InputStream_Constructor = 0; | 1937 static base::subtle::AtomicWord g_InputStream_Constructor = 0; |
| 1938 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) | 1938 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) |
| 1939 __attribute__ ((unused)); | 1939 __attribute__ ((unused)); |
| 1940 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) { | 1940 static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) { |
| 1941 /* Must call RegisterNativesImpl() */ | 1941 /* Must call RegisterNativesImpl() */ |
| 1942 DCHECK(g_InputStream_clazz); | 1942 DCHECK(g_InputStream_clazz); |
| 1943 jmethodID method_id = | 1943 jmethodID method_id = |
| 1944 base::android::MethodID::LazyGet< | 1944 base::android::MethodID::LazyGet< |
| 1945 base::android::MethodID::TYPE_INSTANCE>( | 1945 base::android::MethodID::TYPE_INSTANCE>( |
| 1946 env, g_InputStream_clazz, | 1946 env, g_InputStream_clazz, |
| 1947 "<init>", | 1947 "<init>", |
| 1948 | 1948 "()V", |
| 1949 "(" | |
| 1950 ")" | |
| 1951 "V", | |
| 1952 &g_InputStream_Constructor); | 1949 &g_InputStream_Constructor); |
| 1953 | 1950 |
| 1954 jobject ret = | 1951 jobject ret = |
| 1955 env->NewObject(g_InputStream_clazz, | 1952 env->NewObject(g_InputStream_clazz, |
| 1956 method_id); | 1953 method_id); |
| 1957 base::android::CheckException(env); | 1954 base::android::CheckException(env); |
| 1958 return ScopedJavaLocalRef<jobject>(env, ret); | 1955 return ScopedJavaLocalRef<jobject>(env, ret); |
| 1959 } | 1956 } |
| 1960 | 1957 |
| 1961 // Step 3: RegisterNatives. | 1958 // Step 3: RegisterNatives. |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2171 | 2168 |
| 2172 def testJniParamsJavaToJni(self): | 2169 def testJniParamsJavaToJni(self): |
| 2173 self.assertTextEquals('I', JniParams.JavaToJni('int')) | 2170 self.assertTextEquals('I', JniParams.JavaToJni('int')) |
| 2174 self.assertTextEquals('[B', JniParams.JavaToJni('byte[]')) | 2171 self.assertTextEquals('[B', JniParams.JavaToJni('byte[]')) |
| 2175 self.assertTextEquals( | 2172 self.assertTextEquals( |
| 2176 '[Ljava/nio/ByteBuffer;', JniParams.JavaToJni('java/nio/ByteBuffer[]')) | 2173 '[Ljava/nio/ByteBuffer;', JniParams.JavaToJni('java/nio/ByteBuffer[]')) |
| 2177 | 2174 |
| 2178 | 2175 |
| 2179 if __name__ == '__main__': | 2176 if __name__ == '__main__': |
| 2180 unittest.main() | 2177 unittest.main() |
| OLD | NEW |