diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2018-04-03 07:25:42 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-04-03 07:25:42 +0000 |
commit | 0f2c21259db046fc87149e7ddec4049eacc68249 (patch) | |
tree | cc9e5433ecb65a9beaf1d1f02d435ddb0d784ad0 | |
parent | 25ea68122a1f0d50080603a4edaf6f7b70b4c243 (diff) | |
parent | 8acd7ffa7eae1e72aa4884ed6ef921c6b812f71c (diff) | |
download | webview_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.java | 14 |
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(); |