Skip to content

Commit 57e8589

Browse files
committed
binder: Migrate IntentNameResolverProvider to io.grpc.Uri
1 parent 7ef40a9 commit 57e8589

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

binder/src/main/java/io/grpc/binder/internal/IntentNameResolverProvider.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.content.Intent;
2121
import com.google.common.collect.ImmutableSet;
2222
import io.grpc.NameResolver;
23+
import io.grpc.Uri;
2324
import io.grpc.NameResolver.Args;
2425
import io.grpc.NameResolverProvider;
2526
import io.grpc.binder.AndroidComponentAddress;
@@ -46,7 +47,17 @@ public String getDefaultScheme() {
4647
@Override
4748
public NameResolver newNameResolver(URI targetUri, final Args args) {
4849
if (Objects.equals(targetUri.getScheme(), ANDROID_INTENT_SCHEME)) {
49-
return new IntentNameResolver(parseUriArg(targetUri), args);
50+
return new IntentNameResolver(parseUriArg(targetUri.toString()), args);
51+
} else {
52+
return null;
53+
}
54+
}
55+
56+
@Nullable
57+
@Override
58+
public NameResolver newNameResolver(Uri targetUri, final Args args) {
59+
if (Objects.equals(targetUri.getScheme(), ANDROID_INTENT_SCHEME)) {
60+
return new IntentNameResolver(parseUriArg(targetUri.toString()), args);
5061
} else {
5162
return null;
5263
}
@@ -67,9 +78,9 @@ public ImmutableSet<Class<? extends SocketAddress>> getProducedSocketAddressType
6778
return ImmutableSet.of(AndroidComponentAddress.class);
6879
}
6980

70-
private static Intent parseUriArg(URI targetUri) {
81+
private static Intent parseUriArg(String targetUri) {
7182
try {
72-
return Intent.parseUri(targetUri.toString(), URI_INTENT_SCHEME);
83+
return Intent.parseUri(targetUri, URI_INTENT_SCHEME);
7384
} catch (URISyntaxException e) {
7485
throw new IllegalArgumentException(e);
7586
}

binder/src/test/java/io/grpc/binder/internal/IntentNameResolverProviderTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import io.grpc.NameResolver.ServiceConfigParser;
3131
import io.grpc.NameResolverProvider;
3232
import io.grpc.SynchronizationContext;
33+
import io.grpc.Uri;
3334
import io.grpc.binder.ApiConstants;
3435
import java.net.URI;
3536
import org.junit.Before;
@@ -70,18 +71,32 @@ public void testProviderScheme_returnsIntentScheme() throws Exception {
7071

7172
@Test
7273
public void testNoResolverForUnknownScheme_returnsNull() throws Exception {
73-
assertThat(provider.newNameResolver(new URI("random://uri"), args)).isNull();
74+
assertThat(provider.newNameResolver(Uri.create("random://uri"), args)).isNull();
7475
}
7576

7677
@Test
7778
public void testResolutionWithBadUri_throwsIllegalArg() throws Exception {
7879
assertThrows(
7980
IllegalArgumentException.class,
80-
() -> provider.newNameResolver(new URI("intent:xxx#Intent;e.x=1;end;"), args));
81+
() -> provider.newNameResolver(Uri.create("intent:xxx#Intent;e.x=1;end;"), args));
8182
}
8283

8384
@Test
8485
public void testResolverForIntentScheme_returnsResolver() throws Exception {
86+
Uri uri = Uri.create("intent:#Intent;action=action;end");
87+
NameResolver resolver = provider.newNameResolver(uri, args);
88+
assertThat(resolver).isNotNull();
89+
assertThat(resolver.getServiceAuthority()).isEqualTo("localhost");
90+
syncContext.execute(() -> resolver.start(mockListener));
91+
shadowOf(getMainLooper()).idle();
92+
verify(mockListener).onResult2(resultCaptor.capture());
93+
assertThat(resultCaptor.getValue().getAddressesOrError()).isNotNull();
94+
syncContext.execute(resolver::shutdown);
95+
shadowOf(getMainLooper()).idle();
96+
}
97+
98+
@Test
99+
public void testResolverForIntentScheme_returnsResolver_javaNetUri() throws Exception {
85100
URI uri = new URI("intent://authority/path#Intent;action=action;scheme=scheme;end");
86101
NameResolver resolver = provider.newNameResolver(uri, args);
87102
assertThat(resolver).isNotNull();

0 commit comments

Comments
 (0)