aboutsummaryrefslogtreecommitdiff
path: root/dexmaker
diff options
context:
space:
mode:
authorPaul Duffin <paulduffin@google.com>2016-08-03 20:45:08 +0100
committerPaul Duffin <paulduffin@google.com>2016-08-03 20:45:08 +0100
commitfa15287abbfcd141938d562b79377063c75e4b23 (patch)
treed2309a7fe04688e8892d2f54b10489d1042df1e4 /dexmaker
parent6f4b4a193ae6cb02aa0efc8d69d4cef9c84acbbe (diff)
downloaddexmaker-fa15287abbfcd141938d562b79377063c75e4b23.tar.gz
Revert upstream change 924bb5b1c1718ac4c49d94e435739a6fd26dc986
The reverted change broke some android tests because it did not traverse the interface inheritance hierarchy when searching for methods to proxy. That change was introduced during the upgrade to 1.3 and so while it is fixing a problem none of the Android code that uses this version of dexmaker was affected by it so it should be safe to remove. Will work on a proper fix and test for upstream after this has been reverted as this is blocking other teams at the moment. Bug: 30299479 Change-Id: Id4a7dacdf74ac2b08ca28a7677b71b191b0c36bd Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh
Diffstat (limited to 'dexmaker')
-rw-r--r--dexmaker/src/main/java/com/google/dexmaker/stock/ProxyBuilder.java9
-rw-r--r--dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java16
2 files changed, 4 insertions, 21 deletions
diff --git a/dexmaker/src/main/java/com/google/dexmaker/stock/ProxyBuilder.java b/dexmaker/src/main/java/com/google/dexmaker/stock/ProxyBuilder.java
index 9b2545a..49d1224 100644
--- a/dexmaker/src/main/java/com/google/dexmaker/stock/ProxyBuilder.java
+++ b/dexmaker/src/main/java/com/google/dexmaker/stock/ProxyBuilder.java
@@ -622,11 +622,6 @@ public final class ProxyBuilder<T> {
for (Class<?> c = baseClass; c != null; c = c.getSuperclass()) {
getMethodsToProxy(methodsToProxy, seenFinalMethods, c);
}
- for (Class<?> c = baseClass; c != null; c = c.getSuperclass()) {
- for (Class<?> i : c.getInterfaces()) {
- getMethodsToProxy(methodsToProxy, seenFinalMethods, i);
- }
- }
for (Class<?> c : interfaces) {
getMethodsToProxy(methodsToProxy, seenFinalMethods, c);
}
@@ -693,6 +688,10 @@ public final class ProxyBuilder<T> {
}
sink.add(entry);
}
+
+ for (Class<?> i : c.getInterfaces()) {
+ getMethodsToProxy(sink, seenFinalMethods, i);
+ }
}
private static <T> String getMethodNameForProxyOf(Class<T> clazz) {
diff --git a/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java b/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
index 5c499c8..2dfac5e 100644
--- a/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
+++ b/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java
@@ -882,22 +882,6 @@ public class ProxyBuilderTest extends TestCase {
assertEquals("no proxy", proxyFor(ExtenstionOfFinalInterfaceImpl.class).build().foo());
}
- // https://code.google.com/p/dexmaker/issues/detail?id=9
- public interface DeclaresMethodLate {
- void thisIsTheMethod();
- }
-
- public static class MakesMethodFinalEarly {
- public final void thisIsTheMethod() {}
- }
-
- public static class YouDoNotChooseYourFamily
- extends MakesMethodFinalEarly implements DeclaresMethodLate {}
-
- public void testInterfaceMethodMadeFinalBeforeActualInheritance() throws Exception {
- proxyFor(YouDoNotChooseYourFamily.class).build();
- }
-
/** Simple helper to add the most common args for this test to the proxy builder. */
private <T> ProxyBuilder<T> proxyFor(Class<T> clazz) throws Exception {
return ProxyBuilder.forClass(clazz)