Allow to share classloader for non-inline dexmaker
As in 485c4374832af732e073c9656e5422ceb7d1635d
Test: Ran tests that use dexmaker.share_classloader property
Bug: 69848252
Change-Id: I8c2490c3ec8e8582dc41c486f8f7a406bd635ebb
diff --git a/README.version b/README.version
index 6708f4b..ce2cdcd 100644
--- a/README.version
+++ b/README.version
@@ -9,4 +9,4 @@
It includes a stock code generator for class proxies. If you just want to do AOP or class mocking, you don't need to mess around with bytecodes.
Local Modifications:
- None
+ Allow to share classloader via dexmaker.share_classloader system property (I8c2490c3ec8e8582dc41c486f8f7a406bd635ebb)
diff --git a/dexmaker-mockito/src/main/java/com/android/dx/mockito/DexmakerMockMaker.java b/dexmaker-mockito/src/main/java/com/android/dx/mockito/DexmakerMockMaker.java
index f934fa6..b19f7bd 100644
--- a/dexmaker-mockito/src/main/java/com/android/dx/mockito/DexmakerMockMaker.java
+++ b/dexmaker-mockito/src/main/java/com/android/dx/mockito/DexmakerMockMaker.java
@@ -55,9 +55,15 @@
} else {
// support concrete classes via dexmaker's ProxyBuilder
try {
- Class<? extends T> proxyClass = ProxyBuilder.forClass(typeToMock)
- .implementing(extraInterfaces)
- .buildProxyClass();
+ ProxyBuilder b = ProxyBuilder.forClass(typeToMock)
+ .implementing(extraInterfaces);
+
+ if (Boolean.parseBoolean(
+ System.getProperty("dexmaker.share_classloader", "false"))) {
+ b.withSharedClassLoader();
+ }
+
+ Class<? extends T> proxyClass = b.buildProxyClass();
T mock = unsafeAllocator.newInstance(proxyClass);
ProxyBuilder.setInvocationHandler(mock, invocationHandler);
return mock;