aboutsummaryrefslogtreecommitdiff
path: root/dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2018-05-21 19:15:56 +0000
committerPhilip P. Moltmann <moltmann@google.com>2018-05-21 13:09:05 -0700
commit314cb2efb7b1d8d9b584a6e0bd82727168cfd181 (patch)
tree3b848189d1bc1a2238caf1d1285953232c35806a /dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java
parent8738f6764b9f61eb11ad678cad6d9434b4133731 (diff)
downloaddexmaker-314cb2efb7b1d8d9b584a6e0bd82727168cfd181.tar.gz
This reverts commit 8738f6764b9f61eb11ad678cad6d9434b4133731. Reason for revert: This was only a temporary revert. Now that the real issue is fixed, we can submit this again Bug: 80041014 Test: vts-tradefed run host --class com.android.tradefed.device.metric.VtsCoverageCollectorTest atest CtsActivityManagerDeviceTestCases atest CtsInputMethodTestCases Change-Id: I8d0ac45e3fe73c1870cf08f989b6d39f09923183
Diffstat (limited to 'dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java')
-rw-r--r--dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java b/dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java
index 1363894..053fb16 100644
--- a/dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java
+++ b/dexmaker/src/main/java/com/android/dx/stock/ProxyBuilder.java
@@ -47,6 +47,8 @@ import static java.lang.reflect.Modifier.PRIVATE;
import static java.lang.reflect.Modifier.PUBLIC;
import static java.lang.reflect.Modifier.STATIC;
+import android.os.Build;
+
/**
* Creates dynamic proxies of concrete classes.
* <p>
@@ -301,6 +303,18 @@ public final class ProxyBuilder<T> {
if (sharedClassLoader) {
dexMaker.setSharedClassLoader(baseClass.getClassLoader());
}
+ if (Build.VERSION.SDK_INT >= 28) {
+ // The proxied class might have blacklisted methods. Blacklisting methods (and fields)
+ // is a new feature of Android P:
+ //
+ // https://android-developers.googleblog.com/2018/02/
+ // improving-stability-by-reducing-usage.html
+ //
+ // The newly generated class might not be allowed to call methods of the proxied class
+ // if it is not trusted. As it is not clear which classes have blacklisted methods, mark
+ // all generated classes as trusted.
+ dexMaker.markAsTrusted();
+ }
ClassLoader classLoader = dexMaker.generateAndLoad(parentClassLoader, dexCache);
try {
proxyClass = loadClass(classLoader, generatedName);