Skip to content

Commit

Permalink
Makes android embedding to send full uri (#41836)
Browse files Browse the repository at this point in the history
  • Loading branch information
chunhtai committed May 18, 2023
1 parent 9039c2d commit be57de6
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -525,16 +525,7 @@ private String maybeGetInitialRouteFromIntent(Intent intent) {
if (host.shouldHandleDeeplinking()) {
Uri data = intent.getData();
if (data != null) {
String fullRoute = data.getPath();
if (fullRoute != null && !fullRoute.isEmpty()) {
if (data.getQuery() != null && !data.getQuery().isEmpty()) {
fullRoute += "?" + data.getQuery();
}
if (data.getFragment() != null && !data.getFragment().isEmpty()) {
fullRoute += "#" + data.getFragment();
}
return fullRoute;
}
return data.toString();
}
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ public void flutterEngineGroupGetsInitialRouteFromIntent() {
ArgumentCaptor<FlutterEngineGroup.Options> optionsCaptor =
ArgumentCaptor.forClass(FlutterEngineGroup.Options.class);
verify(flutterEngineGroup, times(1)).createAndRunEngine(optionsCaptor.capture());
assertEquals("/initial_route", optionsCaptor.getValue().getInitialRoute());
assertEquals("foo://example.com/initial_route", optionsCaptor.getValue().getInitialRoute());
}

@Test
Expand Down Expand Up @@ -688,7 +688,7 @@ public void itForwardsOnRequestPermissionsResultToFlutterEngine() {

// Verify that the navigation channel was given the initial route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.setInitialRoute("/custom/route?query=test");
.setInitialRoute("http://myApp/custom/route?query=test");
}

@Test
Expand Down Expand Up @@ -716,7 +716,7 @@ public void itForwardsOnRequestPermissionsResultToFlutterEngine() {

// Verify that the navigation channel was given the initial route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.setInitialRoute("/custom/route?query=test#fragment");
.setInitialRoute("http://myApp/custom/route?query=test#fragment");
}

@Test
Expand Down Expand Up @@ -744,7 +744,7 @@ public void itForwardsOnRequestPermissionsResultToFlutterEngine() {

// Verify that the navigation channel was given the initial route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.setInitialRoute("/custom/route#fragment");
.setInitialRoute("http://myApp/custom/route#fragment");
}

@Test
Expand All @@ -771,7 +771,8 @@ public void itForwardsOnRequestPermissionsResultToFlutterEngine() {
delegate.onStart();

// Verify that the navigation channel was given the initial route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1)).setInitialRoute("/custom/route");
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.setInitialRoute("http://myApp/custom/route");
}

@Test
Expand Down Expand Up @@ -809,19 +810,19 @@ public void itSendsPushRouteInformationMessageWhenOnNewIntent() {
// --- Execute the behavior under test ---
// The FlutterEngine is set up in onAttach().
delegate.onAttach(ctx);
String expected = "http://myApp/custom/route?query=test";

Intent mockIntent = mock(Intent.class);
when(mockIntent.getData()).thenReturn(Uri.parse("http://myApp/custom/route?query=test"));
when(mockIntent.getData()).thenReturn(Uri.parse(expected));
// Emulate the host and call the method that we expect to be forwarded.
delegate.onNewIntent(mockIntent);

// Verify that the navigation channel was given the push route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.pushRouteInformation("/custom/route?query=test");
verify(mockFlutterEngine.getNavigationChannel(), times(1)).pushRouteInformation(expected);
}

@Test
public void itDoesNotSendPushRouteInformationMessageWhenOnNewIntentIsNonHierarchicalUri() {
public void itDoesSendPushRouteInformationMessageWhenOnNewIntentIsNonHierarchicalUri() {
when(mockHost.shouldHandleDeeplinking()).thenReturn(true);
// Create the real object that we're testing.
FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost);
Expand All @@ -839,7 +840,7 @@ public void itDoesNotSendPushRouteInformationMessageWhenOnNewIntentIsNonHierarch
delegate.onNewIntent(mockIntent);

// Verify that the navigation channel was not given a push route message.
verify(mockFlutterEngine.getNavigationChannel(), times(0))
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.pushRouteInformation("mailto:test@test.com");
}

Expand All @@ -852,16 +853,15 @@ public void itSendsPushRouteInformationMessageWhenOnNewIntentWithQueryParameterA
// --- Execute the behavior under test ---
// The FlutterEngine is set up in onAttach().
delegate.onAttach(ctx);
String expected = "http://myApp/custom/route?query=test#fragment";

Intent mockIntent = mock(Intent.class);
when(mockIntent.getData())
.thenReturn(Uri.parse("http://myApp/custom/route?query=test#fragment"));
when(mockIntent.getData()).thenReturn(Uri.parse(expected));
// Emulate the host and call the method that we expect to be forwarded.
delegate.onNewIntent(mockIntent);

// Verify that the navigation channel was given the push route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.pushRouteInformation("/custom/route?query=test#fragment");
verify(mockFlutterEngine.getNavigationChannel(), times(1)).pushRouteInformation(expected);
}

@Test
Expand All @@ -873,15 +873,15 @@ public void itSendsPushRouteInformationMessageWhenOnNewIntentWithFragmentNoQuery
// --- Execute the behavior under test ---
// The FlutterEngine is set up in onAttach().
delegate.onAttach(ctx);
String expected = "http://myApp/custom/route#fragment";

Intent mockIntent = mock(Intent.class);
when(mockIntent.getData()).thenReturn(Uri.parse("http://myApp/custom/route#fragment"));
when(mockIntent.getData()).thenReturn(Uri.parse(expected));
// Emulate the host and call the method that we expect to be forwarded.
delegate.onNewIntent(mockIntent);

// Verify that the navigation channel was given the push route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.pushRouteInformation("/custom/route#fragment");
verify(mockFlutterEngine.getNavigationChannel(), times(1)).pushRouteInformation(expected);
}

@Test
Expand All @@ -893,15 +893,15 @@ public void itSendsPushRouteInformationMessageWhenOnNewIntentNoQueryParameter()
// --- Execute the behavior under test ---
// The FlutterEngine is set up in onAttach().
delegate.onAttach(ctx);
String expected = "http://myApp/custom/route#fragment";

Intent mockIntent = mock(Intent.class);
when(mockIntent.getData()).thenReturn(Uri.parse("http://myApp/custom/route"));
when(mockIntent.getData()).thenReturn(Uri.parse(expected));
// Emulate the host and call the method that we expect to be forwarded.
delegate.onNewIntent(mockIntent);

// Verify that the navigation channel was given the push route message.
verify(mockFlutterEngine.getNavigationChannel(), times(1))
.pushRouteInformation("/custom/route");
verify(mockFlutterEngine.getNavigationChannel(), times(1)).pushRouteInformation(expected);
}

@Test
Expand Down

0 comments on commit be57de6

Please sign in to comment.