diff options
author | Paul Duffin <paulduffin@google.com> | 2016-08-03 20:45:08 +0100 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2016-08-03 20:45:08 +0100 |
commit | fa15287abbfcd141938d562b79377063c75e4b23 (patch) | |
tree | d2309a7fe04688e8892d2f54b10489d1042df1e4 | |
parent | 6f4b4a193ae6cb02aa0efc8d69d4cef9c84acbbe (diff) | |
download | dexmaker-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
-rw-r--r-- | dexmaker/src/main/java/com/google/dexmaker/stock/ProxyBuilder.java | 9 | ||||
-rw-r--r-- | dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java | 16 |
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) |