diff options
| author | 2015-11-30 23:00:33 +0000 | |
|---|---|---|
| committer | 2015-11-30 23:00:33 +0000 | |
| commit | 2e57aca33bd22cac7c0e66bdc11a90163b1718e9 (patch) | |
| tree | 4f3393583e8c7da6b370aa3ba61d1d7714349e0b /test/068-classloader/src | |
| parent | 1850cb43dbddbc655a6f990a7d475587fa9d6659 (diff) | |
| parent | 2d902b99bba7ae1ad77ebeb038a4ef63c3ed6399 (diff) | |
Merge "Change LoadNativeLibrary to use GetOrCreateAllocator"
Diffstat (limited to 'test/068-classloader/src')
| -rw-r--r-- | test/068-classloader/src/FancyLoader.java | 2 | ||||
| -rw-r--r-- | test/068-classloader/src/Main.java | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/test/068-classloader/src/FancyLoader.java b/test/068-classloader/src/FancyLoader.java index 6a153cc9e2..b8eac7b52f 100644 --- a/test/068-classloader/src/FancyLoader.java +++ b/test/068-classloader/src/FancyLoader.java @@ -38,7 +38,7 @@ public class FancyLoader extends ClassLoader { static final String CLASS_PATH = "classes-ex/"; /* this is the "alternate" DEX/Jar file */ - static final String DEX_FILE = System.getenv("DEX_LOCATION") + "/068-classloader-ex.jar"; + public static final String DEX_FILE = System.getenv("DEX_LOCATION") + "/068-classloader-ex.jar"; /* on Dalvik, this is a DexFile; otherwise, it's null */ private Class mDexClass; diff --git a/test/068-classloader/src/Main.java b/test/068-classloader/src/Main.java index 361e2938e3..e3bf82c8c3 100644 --- a/test/068-classloader/src/Main.java +++ b/test/068-classloader/src/Main.java @@ -14,6 +14,8 @@ * limitations under the License. */ +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; /** * Class loader test. */ @@ -62,6 +64,28 @@ public class Main { testSeparation(); testClassForName(); + + // Attempt to load without a class table, regression test for b/25866849. + testLoadNativeLibrary(args[0]); + } + + static void testLoadNativeLibrary(String libName) throws Exception { + Class pathClassLoader = Class.forName("dalvik.system.PathClassLoader"); + if (pathClassLoader == null) { + throw new AssertionError("Couldn't find path class loader class"); + } + Constructor constructor = + pathClassLoader.getDeclaredConstructor(String.class, ClassLoader.class); + ClassLoader loader = (ClassLoader) constructor.newInstance( + FancyLoader.DEX_FILE, ClassLoader.getSystemClassLoader()); + Runtime runtime = Runtime.getRuntime(); + Method method = runtime.getClass().getDeclaredMethod("loadLibrary", String.class, + ClassLoader.class); + if (method == null) { + throw new RuntimeException("loadLibrary not found"); + } + method.setAccessible(true); + method.invoke(runtime, libName, loader); } static void testSeparation() { |