| 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 7adab80b46b2bf8fe97c78ee93b28b2c20b2b8e8..ffab52ae8f389afbc8c99b4178f718c449cdebd1 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
|
| @@ -5,6 +5,7 @@
|
| package org.chromium.chrome.browser.externalnav;
|
|
|
| import android.annotation.SuppressLint;
|
| +import android.content.ComponentName;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| import android.content.pm.ActivityInfo;
|
| @@ -39,9 +40,10 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| // Expectations
|
| private static final int IGNORE = 0x0;
|
| private static final int START_INCOGNITO = 0x1;
|
| - private static final int START_ACTIVITY = 0x2;
|
| + private static final int START_CHROME = 0x2;
|
| private static final int START_FILE = 0x4;
|
| - private static final int INTENT_SANITIZATION_EXCEPTION = 0x8;
|
| + private static final int START_OTHER_ACTIVITY = 0x8;
|
| + private static final int INTENT_SANITIZATION_EXCEPTION = 0x10;
|
|
|
| private static final String SEARCH_RESULT_URL_FOR_TOM_HANKS =
|
| "https://www.google.com/search?q=tom+hanks";
|
| @@ -72,6 +74,9 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| private static final String TEXT_APP_1_PACKAGE_NAME = "text_app_1";
|
| private static final String TEXT_APP_2_PACKAGE_NAME = "text_app_2";
|
|
|
| + private static final String WEB_APK_SCOPE = "https://www.template.com";
|
| + private static final String WEB_APK_PACKAGE_NAME = "org.chromium.webapk.template";
|
| +
|
| private final TestExternalNavigationDelegate mDelegate;
|
| private ExternalNavigationHandler mUrlHandler;
|
|
|
| @@ -104,7 +109,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .expecting(OverrideUrlLoadingResult.NO_OVERRIDE, IGNORE);
|
| checkUrl("tel:012345678")
|
| .withReferrer("chrome://about")
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -123,11 +129,13 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| checkUrl("market://1234")
|
| .withPageTransition(PageTransition.FORM_SUBMIT)
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| checkUrl("http://youtube.com://")
|
| .withPageTransition(PageTransition.FORM_SUBMIT)
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| // If the page matches the referrer, then continue loading in Chrome.
|
| checkUrl("http://youtube.com://")
|
| @@ -141,7 +149,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .withReferrer("http://google.com")
|
| .withPageTransition(PageTransition.FORM_SUBMIT)
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| // It doesn't make sense to allow intent picker without redirect, since form data
|
| // is not encoded in the intent (although, in theory, it could be passed in as
|
| @@ -182,10 +191,12 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| public void testPageTransitionType() {
|
| // Non-link page transition type are ignored.
|
| checkUrl("http://youtube.com/")
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| checkUrl("http://youtube.com/")
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| // http://crbug.com/143118 - Don't show the picker for directly typed URLs, unless
|
| // the URL results in a redirect.
|
| @@ -205,7 +216,7 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| checkUrl("wtai://wp/mc;0123456789")
|
| .withIsIncognito(true)
|
| .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| - START_ACTIVITY | INTENT_SANITIZATION_EXCEPTION);
|
| + START_OTHER_ACTIVITY | INTENT_SANITIZATION_EXCEPTION);
|
|
|
| // These two cases are currently unimplemented.
|
| checkUrl("wtai://wp/sd;0123456789")
|
| @@ -224,7 +235,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| @SmallTest
|
| public void testExternalUri() {
|
| checkUrl("tel:012345678")
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -233,7 +245,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| checkUrl("market://1234")
|
| .withPageTransition(PageTransition.TYPED)
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| // http://crbug.com/143118
|
| checkUrl("market://1234")
|
| @@ -254,7 +267,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| checkUrl("http://youtube.com/")
|
| .withPageTransition(transitionTypeIncomingIntent)
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -264,12 +278,13 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| String urlWithSel = "intent:wtai://wp/#Intent;SEL;action=android.settings.SETTINGS;"
|
| + "component=package/class;end";
|
|
|
| - checkUrl(url)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + checkUrl(url).expecting(
|
| + OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_OTHER_ACTIVITY);
|
|
|
| // http://crbug.com/370399
|
| checkUrl(urlWithSel)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -316,7 +331,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .withPageTransition(transTypeLinkFromIntent)
|
| .withIsRedirect(true)
|
| .withRedirectHandler(redirectHandler)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| // Do not ignore if a new intent cannot be handled by Chrome.
|
| redirectHandler.updateIntent(fooIntent);
|
| @@ -326,7 +342,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .withPageTransition(transTypeLinkFromIntent)
|
| .withIsRedirect(true)
|
| .withRedirectHandler(redirectHandler)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -356,7 +373,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .withPageTransition(transTypeLinkFromIntent)
|
| .withIsRedirect(true)
|
| .withRedirectHandler(redirectHandler)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -366,7 +384,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
|
|
| checkUrl(INTENT_URL_WITH_FALLBACK_URL)
|
| .withReferrer(SEARCH_RESULT_URL_FOR_TOM_HANKS)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| Intent invokedIntent = mDelegate.startActivityIntent;
|
| assertEquals(IMDB_APP_INTENT_FOR_TOM_HANKS, invokedIntent.getData().toString());
|
| @@ -431,7 +450,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| checkUrl(INTENT_URL_WITH_JAVASCRIPT_FALLBACK_URL)
|
| .withReferrer(SEARCH_RESULT_URL_FOR_TOM_HANKS)
|
| .withIsIncognito(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| Intent invokedIntent = mDelegate.startActivityIntent;
|
| assertTrue(invokedIntent.getData().toString().startsWith("market://"));
|
| @@ -550,7 +570,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| mDelegate.setIsChromeAppInForeground(false);
|
| checkUrl("http://youtube.com/")
|
| .withChromeAppInForegroundRequired(false)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -590,7 +611,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| public void testSameDomainDifferentApps() {
|
| checkUrl(CALENDAR_URL)
|
| .withReferrer(KEEP_URL)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| }
|
|
|
| @SmallTest
|
| @@ -615,7 +637,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .withReferrer(referrer)
|
| .withPageTransition(PageTransition.FORM_SUBMIT)
|
| .withIsRedirect(true)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
| assertEquals(Uri.parse(referrer),
|
| mDelegate.startActivityIntent.getParcelableExtra(Intent.EXTRA_REFERRER));
|
| assertEquals(1, mDelegate.startActivityIntent.getIntExtra(
|
| @@ -694,7 +717,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
|
|
| checkUrl("sms:+012345678?body=hello%20there")
|
| .withReferrer(referer)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| assertNotNull(mDelegate.startActivityIntent);
|
| assertEquals(TEXT_APP_2_PACKAGE_NAME, mDelegate.startActivityIntent.getPackage());
|
| @@ -708,7 +732,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
|
|
| checkUrl("sms:+012345678?body=hello%20there")
|
| .withReferrer(referer)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| assertNotNull(mDelegate.startActivityIntent);
|
| assertNull(mDelegate.startActivityIntent.getPackage());
|
| @@ -721,12 +746,23 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
|
|
| checkUrl("intent://012345678?body=hello%20there/#Intent;scheme=sms;end")
|
| .withReferrer(referer)
|
| - .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_ACTIVITY);
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT,
|
| + START_OTHER_ACTIVITY);
|
|
|
| assertNotNull(mDelegate.startActivityIntent);
|
| assertEquals(TEXT_APP_2_PACKAGE_NAME, mDelegate.startActivityIntent.getPackage());
|
| }
|
|
|
| + /**
|
| + * Test that tapping on a link which is outside of the referrer Web APK's scope brings the
|
| + * user back to Chrome.
|
| + */
|
| + @SmallTest
|
| + public void testLeaveWebApk_LinkOutOfScope() {
|
| + checkUrl(SEARCH_RESULT_URL_FOR_TOM_HANKS)
|
| + .withReferrerWebApkPackage(WEB_APK_PACKAGE_NAME)
|
| + .expecting(OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT, START_CHROME);
|
| + }
|
|
|
| private static ResolveInfo newResolveInfo(String packageName, String name) {
|
| ActivityInfo ai = new ActivityInfo();
|
| @@ -756,22 +792,25 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| return list;
|
| }
|
| }
|
| - if (intent.getDataString().startsWith("http://")
|
| - || intent.getDataString().startsWith("https://")) {
|
| + String dataString = intent.getDataString();
|
| + if (dataString.startsWith("http://")
|
| + || dataString.startsWith("https://")) {
|
| list.add(newResolveInfo("chrome", "chrome"));
|
| }
|
| - if (intent.getDataString().startsWith("http://m.youtube.com")
|
| - || intent.getDataString().startsWith("http://youtube.com")) {
|
| + if (dataString.startsWith("http://m.youtube.com")
|
| + || dataString.startsWith("http://youtube.com")) {
|
| list.add(newResolveInfo("youtube", "youtube"));
|
| - } else if (intent.getDataString().startsWith(PLUS_STREAM_URL)) {
|
| + } else if (dataString.startsWith(PLUS_STREAM_URL)) {
|
| list.add(newResolveInfo("plus", "plus"));
|
| - } else if (intent.getDataString().startsWith(CALENDAR_URL)) {
|
| + } else if (dataString.startsWith(CALENDAR_URL)) {
|
| list.add(newResolveInfo("calendar", "calendar"));
|
| - } else if (intent.getDataString().startsWith("sms")) {
|
| + } else if (dataString.startsWith("sms")) {
|
| list.add(newResolveInfo(
|
| TEXT_APP_1_PACKAGE_NAME, TEXT_APP_1_PACKAGE_NAME + ".cls"));
|
| list.add(newResolveInfo(
|
| TEXT_APP_2_PACKAGE_NAME, TEXT_APP_2_PACKAGE_NAME + ".cls"));
|
| + } else if (dataString.startsWith(WEB_APK_SCOPE)) {
|
| + list.add(newResolveInfo(WEB_APK_PACKAGE_NAME, WEB_APK_PACKAGE_NAME));
|
| } else {
|
| list.add(newResolveInfo("foo", "foo"));
|
| }
|
| @@ -787,7 +826,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| public boolean isSpecializedHandlerAvailable(List<ResolveInfo> resolveInfos) {
|
| for (ResolveInfo resolveInfo : resolveInfos) {
|
| String packageName = resolveInfo.activityInfo.packageName;
|
| - if (packageName.equals("youtube") || packageName.equals("calendar")) {
|
| + if (packageName.equals("youtube") || packageName.equals("calendar")
|
| + || packageName.equals(WEB_APK_PACKAGE_NAME)) {
|
| return true;
|
| }
|
| }
|
| @@ -795,7 +835,12 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| }
|
|
|
| @Override
|
| - public String getPackageName() {
|
| + public String getWebApkPackageName() {
|
| + return mReferrerWebApkPackage;
|
| + }
|
| +
|
| + @Override
|
| + public String getBrowserPackageName() {
|
| return "test";
|
| }
|
|
|
| @@ -852,6 +897,13 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| }
|
|
|
| @Override
|
| + public void startChromeActivity(String url) {
|
| + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
| + intent.setClassName(getBrowserPackageName(), "");
|
| + startActivity(intent);
|
| + }
|
| +
|
| + @Override
|
| public String getDefaultSmsPackageName() {
|
| return defaultSmsPackageName;
|
| }
|
| @@ -878,6 +930,10 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| mIsChromeAppInForeground = value;
|
| }
|
|
|
| + public void setReferrerWebApkPackage(String referrerWebApkPackage) {
|
| + mReferrerWebApkPackage = referrerWebApkPackage;
|
| + }
|
| +
|
| public Intent startActivityIntent = null;
|
| public boolean startIncognitoIntentCalled = false;
|
|
|
| @@ -888,6 +944,8 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| private String mReferrerUrlForClobbering;
|
| public boolean mIsChromeAppInForeground = true;
|
|
|
| + private String mReferrerWebApkPackage = null;
|
| +
|
| public boolean shouldRequestFileAccess;
|
| public boolean startFileIntentCalled;
|
| public String defaultSmsPackageName;
|
| @@ -914,12 +972,19 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| private boolean mChromeAppInForegroundRequired = true;
|
| private boolean mIsBackgroundTabNavigation;
|
| private boolean mHasUserGesture;
|
| + private String mReferrerWebApkPackage = null;
|
| private TabRedirectHandler mRedirectHandler;
|
|
|
| private ExternalNavigationTestParams(String url) {
|
| mUrl = url;
|
| }
|
|
|
| + public ExternalNavigationTestParams withReferrerWebApkPackage(
|
| + String referrerWebApkPackage) {
|
| + mReferrerWebApkPackage = referrerWebApkPackage;
|
| + return this;
|
| + }
|
| +
|
| public ExternalNavigationTestParams withReferrer(String referrerUrl) {
|
| mReferrerUrl = referrerUrl;
|
| return this;
|
| @@ -965,11 +1030,16 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| public void expecting(OverrideUrlLoadingResult expectedOverrideResult,
|
| int otherExpectation) {
|
| boolean expectStartIncognito = (otherExpectation & START_INCOGNITO) != 0;
|
| - boolean expectStartActivity = (otherExpectation & START_ACTIVITY) != 0;
|
| + boolean expectStartActivity =
|
| + (otherExpectation & (START_CHROME | START_OTHER_ACTIVITY)) != 0;
|
| + boolean expectStartChrome = (otherExpectation & START_CHROME) != 0;
|
| + boolean expectStartOtherActivity = (otherExpectation & START_OTHER_ACTIVITY) != 0;
|
| boolean expectStartFile = (otherExpectation & START_FILE) != 0;
|
| - boolean expectSaneIntent = (otherExpectation & INTENT_SANITIZATION_EXCEPTION) == 0;
|
| + boolean expectSaneIntent = expectStartOtherActivity
|
| + && (otherExpectation & INTENT_SANITIZATION_EXCEPTION) == 0;
|
|
|
| mDelegate.reset();
|
| + mDelegate.setReferrerWebApkPackage(mReferrerWebApkPackage);
|
|
|
| ExternalNavigationParams params = new ExternalNavigationParams.Builder(
|
| mUrl, mIsIncognito, mReferrerUrl,
|
| @@ -981,11 +1051,23 @@ public class ExternalNavigationHandlerTest extends InstrumentationTestCase {
|
| .setHasUserGesture(mHasUserGesture)
|
| .build();
|
| OverrideUrlLoadingResult result = mUrlHandler.shouldOverrideUrlLoading(params);
|
| - boolean startActivityCalled = mDelegate.startActivityIntent != null;
|
| + boolean startActivityCalled = false;
|
| + boolean startChromeCalled = false;
|
| + if (mDelegate.startActivityIntent != null) {
|
| + startActivityCalled = true;
|
| + ComponentName component = mDelegate.startActivityIntent.getComponent();
|
| + if (component != null) {
|
| + String packageName = component.getPackageName();
|
| + if (packageName != null) {
|
| + startChromeCalled = packageName.equals(mDelegate.getBrowserPackageName());
|
| + }
|
| + }
|
| + }
|
|
|
| assertEquals(expectedOverrideResult, result);
|
| assertEquals(expectStartIncognito, mDelegate.startIncognitoIntentCalled);
|
| assertEquals(expectStartActivity, startActivityCalled);
|
| + assertEquals(expectStartChrome, startChromeCalled);
|
| assertEquals(expectStartFile, mDelegate.startFileIntentCalled);
|
|
|
| if (startActivityCalled && expectSaneIntent) {
|
|
|