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 |