summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2018-04-03 07:25:42 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2018-04-03 07:25:42 +0000
commit0f2c21259db046fc87149e7ddec4049eacc68249 (patch)
treecc9e5433ecb65a9beaf1d1f02d435ddb0d784ad0
parent25ea68122a1f0d50080603a4edaf6f7b70b4c243 (diff)
parent8acd7ffa7eae1e72aa4884ed6ef921c6b812f71c (diff)
downloadwebview_support_interfaces-0f2c21259db046fc87149e7ddec4049eacc68249.tar.gz
Snap for 4696032 from 8acd7ffa7eae1e72aa4884ed6ef921c6b812f71c to pi-releaseandroid-wear-9.0.0_r9android-wear-9.0.0_r8android-wear-9.0.0_r7android-wear-9.0.0_r6android-wear-9.0.0_r5android-wear-9.0.0_r4android-wear-9.0.0_r34android-wear-9.0.0_r33android-wear-9.0.0_r32android-wear-9.0.0_r31android-wear-9.0.0_r30android-wear-9.0.0_r3android-wear-9.0.0_r29android-wear-9.0.0_r28android-wear-9.0.0_r27android-wear-9.0.0_r26android-wear-9.0.0_r25android-wear-9.0.0_r24android-wear-9.0.0_r23android-wear-9.0.0_r22android-wear-9.0.0_r21android-wear-9.0.0_r20android-wear-9.0.0_r2android-wear-9.0.0_r19android-wear-9.0.0_r18android-wear-9.0.0_r17android-wear-9.0.0_r16android-wear-9.0.0_r15android-wear-9.0.0_r14android-wear-9.0.0_r13android-wear-9.0.0_r12android-wear-9.0.0_r11android-wear-9.0.0_r10android-wear-9.0.0_r1android-vts-9.0_r9android-vts-9.0_r8android-vts-9.0_r7android-vts-9.0_r6android-vts-9.0_r5android-vts-9.0_r4android-vts-9.0_r19android-vts-9.0_r18android-vts-9.0_r17android-vts-9.0_r16android-vts-9.0_r15android-vts-9.0_r14android-vts-9.0_r13android-vts-9.0_r12android-vts-9.0_r11android-vts-9.0_r10android-security-9.0.0_r76android-security-9.0.0_r75android-security-9.0.0_r74android-security-9.0.0_r73android-security-9.0.0_r72android-security-9.0.0_r71android-security-9.0.0_r70android-security-9.0.0_r69android-security-9.0.0_r68android-security-9.0.0_r67android-security-9.0.0_r66android-security-9.0.0_r65android-security-9.0.0_r64android-security-9.0.0_r63android-security-9.0.0_r62android-cts-9.0_r9android-cts-9.0_r8android-cts-9.0_r7android-cts-9.0_r6android-cts-9.0_r5android-cts-9.0_r4android-cts-9.0_r3android-cts-9.0_r20android-cts-9.0_r2android-cts-9.0_r19android-cts-9.0_r18android-cts-9.0_r17android-cts-9.0_r16android-cts-9.0_r15android-cts-9.0_r14android-cts-9.0_r13android-cts-9.0_r12android-cts-9.0_r11android-cts-9.0_r10android-cts-9.0_r1android-9.0.0_r9android-9.0.0_r8android-9.0.0_r7android-9.0.0_r61android-9.0.0_r60android-9.0.0_r6android-9.0.0_r59android-9.0.0_r58android-9.0.0_r57android-9.0.0_r56android-9.0.0_r55android-9.0.0_r54android-9.0.0_r53android-9.0.0_r52android-9.0.0_r51android-9.0.0_r50android-9.0.0_r5android-9.0.0_r49android-9.0.0_r48android-9.0.0_r3android-9.0.0_r2android-9.0.0_r18android-9.0.0_r17android-9.0.0_r10android-9.0.0_r1security-pi-releasepie-vts-releasepie-security-releasepie-s2-releasepie-release-2pie-releasepie-r2-s2-releasepie-r2-s1-releasepie-r2-releasepie-platform-releasepie-gsipie-cuttlefish-testingpie-cts-release
Change-Id: I7f93e6260f9166b135fab2f50ab6d6f98f31c8ee
-rw-r--r--src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java b/src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java
index 5a772c5..51c78ed 100644
--- a/src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java
+++ b/src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java
@@ -16,13 +16,14 @@ import java.lang.reflect.Proxy;
*/
public class BoundaryInterfaceReflectionUtil {
/**
- * Utility method for fetching a method from the current classloader, with the same signature
+ * Utility method for fetching a method from {@param delegateLoader}, with the same signature
* (package + class + method name + parameters) as a given method defined in another
* classloader.
*/
- public static Method dupeMethod(Method method)
+ public static Method dupeMethod(Method method, ClassLoader delegateLoader)
throws ClassNotFoundException, NoSuchMethodException {
- Class<?> declaringClass = Class.forName(method.getDeclaringClass().getName());
+ Class<?> declaringClass =
+ Class.forName(method.getDeclaringClass().getName(), true, delegateLoader);
Class[] otherSideParameterClasses = method.getParameterTypes();
Class[] parameterClasses = new Class[otherSideParameterClasses.length];
for (int n = 0; n < parameterClasses.length; n++) {
@@ -30,7 +31,9 @@ public class BoundaryInterfaceReflectionUtil {
// Primitive classes are shared between the classloaders - so we can use the same
// primitive class declarations on either side. Non-primitive classes must be looked up
// by name.
- parameterClasses[n] = clazz.isPrimitive() ? clazz : Class.forName(clazz.getName());
+ parameterClasses[n] = clazz.isPrimitive()
+ ? clazz
+ : Class.forName(clazz.getName(), true, delegateLoader);
}
return declaringClass.getDeclaredMethod(method.getName(), parameterClasses);
}
@@ -53,11 +56,12 @@ public class BoundaryInterfaceReflectionUtil {
*/
@TargetApi(Build.VERSION_CODES.KITKAT)
public static InvocationHandler createInvocationHandlerFor(final Object delegate) {
+ final ClassLoader delegateLoader = delegate.getClass().getClassLoader();
return new InvocationHandler() {
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
try {
- return dupeMethod(method).invoke(delegate, objects);
+ return dupeMethod(method, delegateLoader).invoke(delegate, objects);
} catch (InvocationTargetException e) {
// If something went wrong, ensure we throw the original exception.
throw e.getTargetException();