| 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 3f6682985f9a5514a828668d966fab22f2ae0faf..4b92ddc6b93faf741134053dc1181254b5ca998b 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
|
| @@ -13,6 +13,7 @@ import android.content.pm.ResolveInfo;
|
| import android.net.Uri;
|
| import android.os.SystemClock;
|
| import android.provider.Browser;
|
| +import android.support.customtabs.CustomTabsIntent;
|
| import android.test.InstrumentationTestCase;
|
| import android.test.mock.MockContext;
|
| import android.test.mock.MockPackageManager;
|
| @@ -427,6 +428,50 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| }
|
|
|
| @SmallTest
|
| + public void testIntentForCustomTab() throws URISyntaxException {
|
| + TestContext context = new TestContext();
|
| + TabRedirectHandler redirectHandler = new TabRedirectHandler(context);
|
| + int transTypeLinkFromIntent = PageTransition.LINK | PageTransition.FROM_API;
|
| +
|
| + // In Custom Tabs, if the first url is not a redirect, stay in chrome.
|
| + Intent barIntent = Intent.parseUri("http://youtube.com/", Intent.URI_INTENT_SCHEME);
|
| + barIntent.putExtra(CustomTabsIntent.EXTRA_SESSION, "");
|
| + barIntent.setPackage(context.getPackageName());
|
| + redirectHandler.updateIntent(barIntent);
|
| + redirectHandler.updateNewUrlLoading(transTypeLinkFromIntent, false, false, 0, 0);
|
| + checkUrl("http://youtube.com/")
|
| + .withPageTransition(transTypeLinkFromIntent)
|
| + .withRedirectHandler(redirectHandler)
|
| + .expecting(OverrideUrlLoadingResult.NO_OVERRIDE, IGNORE);
|
| +
|
| + // In Custom Tabs, if the first url is a redirect, allow it to intent out.
|
| + Intent fooIntent = Intent.parseUri("http://foo.com/", Intent.URI_INTENT_SCHEME);
|
| + fooIntent.putExtra(CustomTabsIntent.EXTRA_SESSION, "");
|
| + fooIntent.setPackage(context.getPackageName());
|
| + redirectHandler.updateIntent(fooIntent);
|
| + redirectHandler.updateNewUrlLoading(transTypeLinkFromIntent, false, false, 0, 0);
|
| + redirectHandler.updateNewUrlLoading(transTypeLinkFromIntent, true, false, 0, 0);
|
| + checkUrl("http://youtube.com/")
|
| + .withPageTransition(transTypeLinkFromIntent)
|
| + .withIsRedirect(true)
|
| + .withRedirectHandler(redirectHandler)
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| +
|
| + // External intent for a user-initiated navigation should always be allowed.
|
| + redirectHandler.updateIntent(fooIntent);
|
| + redirectHandler.updateNewUrlLoading(transTypeLinkFromIntent, false, false, 0, 0);
|
| + // Simulate a real user navigation.
|
| + redirectHandler.updateNewUrlLoading(PageTransition.LINK, false, true,
|
| + SystemClock.elapsedRealtime() + 1, 0);
|
| + checkUrl("http://youtube.com/")
|
| + .withPageTransition(PageTransition.LINK)
|
| + .withRedirectHandler(redirectHandler)
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| + }
|
| +
|
| + @SmallTest
|
| public void testFallbackUrl_IntentResolutionSucceeds() {
|
| // IMDB app is installed.
|
| mDelegate.setCanResolveActivity(true);
|
|
|