Chromium Code Reviews| Index: base/android/jni_generator/jni_generator_tests.py |
| diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py |
| index f008f394cec95c87d4c6ab5df9ecd036f09504ab..685e0fec1e12228b5b9443a621695e94ab418903 100755 |
| --- a/base/android/jni_generator/jni_generator_tests.py |
| +++ b/base/android/jni_generator/jni_generator_tests.py |
| @@ -1566,6 +1566,84 @@ import org.chromium.base.BuildInfo; |
| datatype='java/lang/String'),], |
| 'java/io/InputStream')) |
| + def testFromJavaPGenerics(self): |
| + contents = """ |
| +public abstract class java.util.HashSet<T> extends java.util.AbstractSet<E> implements 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
|
| + public void dummy(); |
| +} |
| +""" |
| + jni_from_javap = jni_generator.JNIFromJavaP(contents.split('\n'), None) |
| + self.assertEquals(1, len(jni_from_javap.called_by_natives)) |
| + golden_content = """\ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +// This file is autogenerated by |
| +// base/android/jni_generator/jni_generator_tests.py |
| +// For |
| +// java/util/HashSet |
| + |
| +#ifndef java_util_HashSet_JNI |
| +#define java_util_HashSet_JNI |
| + |
| +#include <jni.h> |
| + |
| +#include "base/android/jni_android.h" |
| +#include "base/android/scoped_java_ref.h" |
| +#include "base/basictypes.h" |
| +#include "base/logging.h" |
| + |
| +using base::android::ScopedJavaLocalRef; |
| + |
| +// Step 1: forward declarations. |
| +namespace { |
| +const char kHashSetClassPath[] = "java/util/HashSet"; |
| +// Leaking this jclass as we cannot use LazyInstance from some threads. |
| +jclass g_HashSet_clazz = NULL; |
| +} // namespace |
| + |
| +namespace JNI_HashSet { |
| + |
| +// Step 2: method stubs. |
| + |
| +static base::subtle::AtomicWord g_HashSet_dummy = 0; |
| +static void Java_HashSet_dummy(JNIEnv* env, jobject obj) __attribute__ |
| + ((unused)); |
| +static void Java_HashSet_dummy(JNIEnv* env, jobject obj) { |
| + /* Must call RegisterNativesImpl() */ |
| + DCHECK(g_HashSet_clazz); |
| + jmethodID method_id = |
| + base::android::MethodID::LazyGet< |
| + base::android::MethodID::TYPE_INSTANCE>( |
| + env, g_HashSet_clazz, |
| + "dummy", |
| + |
| +"(" |
| +")" |
| +"V", |
| + &g_HashSet_dummy); |
| + |
| + env->CallVoidMethod(obj, |
| + method_id); |
| + base::android::CheckException(env); |
| + |
| +} |
| + |
| +// Step 3: RegisterNatives. |
| + |
| +static bool RegisterNativesImpl(JNIEnv* env) { |
| + |
| + g_HashSet_clazz = reinterpret_cast<jclass>(env->NewGlobalRef( |
| + base::android::GetClass(env, kHashSetClassPath).obj())); |
| + return true; |
| +} |
| +} // namespace JNI_HashSet |
| + |
| +#endif // java_util_HashSet_JNI |
| +""" |
| + self.assertTextEquals(golden_content, jni_from_javap.GetContent()) |
| + |
| def testFromJavaP(self): |
| contents = """ |
| public abstract class java.io.InputStream extends java.lang.Object |