Index: chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java |
index 92420e8b21024b1f2be76c384faa3867ca850275..9c37eb92e8290f4d73238bfdc4eced9d5b6e0e41 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java |
@@ -516,6 +516,30 @@ public class ExternalNavigationHandlerTest extends NativeLibraryTestBase { |
} |
@SmallTest |
+ public void testInstantAppsIntent_customTabRedirect() throws Exception { |
+ TestContext context = new TestContext(); |
+ TabRedirectHandler redirectHandler = new TabRedirectHandler(context); |
+ int transTypeLinkFromIntent = PageTransition.LINK | PageTransition.FROM_API; |
+ |
+ // In Custom Tabs, if the first url is a redirect, don't allow it to intent out, unless |
+ // the redirect is going to Instant Apps. |
+ Intent fooIntent = Intent.parseUri("http://foo.com/", Intent.URI_INTENT_SCHEME); |
+ fooIntent.putExtra(CustomTabsIntent.EXTRA_SESSION, ""); |
+ fooIntent.putExtra(CustomTabsIntent.EXTRA_ENABLE_INSTANT_APPS, true); |
+ fooIntent.setPackage(context.getPackageName()); |
+ redirectHandler.updateIntent(fooIntent); |
+ redirectHandler.updateNewUrlLoading(transTypeLinkFromIntent, false, false, 0, 0); |
+ redirectHandler.updateNewUrlLoading(transTypeLinkFromIntent, true, false, 0, 0); |
+ |
+ mDelegate.setCanHandleWithInstantApp(true); |
+ checkUrl("http://instantappenabled.com") |
+ .withPageTransition(transTypeLinkFromIntent) |
+ .withIsRedirect(true) |
+ .withRedirectHandler(redirectHandler) |
+ .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, IGNORE); |
+ } |
+ |
+ @SmallTest |
public void testFallbackUrl_IntentResolutionSucceeds() { |
// IMDB app is installed. |
mDelegate.setCanResolveActivity(true); |
@@ -1167,7 +1191,7 @@ public class ExternalNavigationHandlerTest extends NativeLibraryTestBase { |
@Override |
public boolean maybeLaunchInstantApp(Tab tab, String url, String referrerUrl, |
boolean isIncomingRedirect) { |
- return false; |
+ return mCanHandleWithInstantApp; |
} |
@Override |
@@ -1201,6 +1225,10 @@ public class ExternalNavigationHandlerTest extends NativeLibraryTestBase { |
mIsWithinCurrentWebappScope = value; |
} |
+ public void setCanHandleWithInstantApp(boolean value) { |
+ mCanHandleWithInstantApp = value; |
+ } |
+ |
public Intent startActivityIntent = null; |
public boolean startIncognitoIntentCalled = false; |
@@ -1209,6 +1237,7 @@ public class ExternalNavigationHandlerTest extends NativeLibraryTestBase { |
private String mNewUrlAfterClobbering; |
private String mReferrerUrlForClobbering; |
+ private boolean mCanHandleWithInstantApp; |
public boolean mIsChromeAppInForeground = true; |
public boolean mIsWithinCurrentWebappScope; |