Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2754)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java

Issue 2057933002: [Custom Tabs] Navigate to other apps if the first url is a redirect (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698