| Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| index 620fa92ad56e6b6bc637b9e8aa648c0764509cd1..7d922c81b2481c812c55db10856dd2051a3e4f72 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
| @@ -57,9 +57,17 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
|
|
| protected final Context mApplicationContext;
|
| private final Tab mTab;
|
| + private final String mWebApkPackageName;
|
|
|
| - public ExternalNavigationDelegateImpl(Tab tab) {
|
| + /**
|
| + * Creates instance of a {@link ExternalNavigationDelegateImpl}.
|
| + * @param tab The associated tab.
|
| + * @param webApkPackage The package of the WebAPK hosting {@link tab}. Null if
|
| + * {@link tab} is not hosted by a WebAPK.
|
| + */
|
| + public ExternalNavigationDelegateImpl(Tab tab, String webApkPackageName) {
|
| mTab = tab;
|
| + mWebApkPackageName = webApkPackageName;
|
| mApplicationContext = tab.getWindowAndroid().getApplicationContext();
|
| }
|
|
|
| @@ -273,11 +281,16 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
| }
|
|
|
| @Override
|
| - public String getPackageName() {
|
| + public String getBrowserPackageName() {
|
| return mApplicationContext.getPackageName();
|
| }
|
|
|
| @Override
|
| + public String getWebApkPackageName() {
|
| + return mWebApkPackageName;
|
| + }
|
| +
|
| + @Override
|
| public void startActivity(Intent intent) {
|
| try {
|
| forcePdfViewerAsIntentHandlerIfNeeded(mApplicationContext, intent);
|
| @@ -396,10 +409,10 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
|
|
| if (needsToStartIntent) {
|
| intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
| - intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName());
|
| + intent.putExtra(Browser.EXTRA_APPLICATION_ID, getBrowserPackageName());
|
| if (launchIncogntio) intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, true);
|
| intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
| - intent.setClassName(getPackageName(), ChromeLauncherActivity.class.getName());
|
| + intent.setClassName(getBrowserPackageName(), ChromeLauncherActivity.class.getName());
|
| intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| IntentHandler.addTrustedIntentExtras(intent, mApplicationContext);
|
| startActivity(intent);
|
| @@ -432,9 +445,9 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
| assert false : "clobberCurrentTab was called with an empty tab.";
|
| Uri uri = Uri.parse(url);
|
| Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
| - intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName());
|
| + intent.putExtra(Browser.EXTRA_APPLICATION_ID, getBrowserPackageName());
|
| intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
| - intent.setPackage(getPackageName());
|
| + intent.setPackage(getBrowserPackageName());
|
| startActivity(intent);
|
| return OverrideUrlLoadingResult.OVERRIDE_WITH_EXTERNAL_INTENT;
|
| }
|
| @@ -459,6 +472,16 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
| }
|
|
|
| @Override
|
| + public void startChromeActivity(String url) {
|
| + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
| + intent.putExtra(Browser.EXTRA_APPLICATION_ID, getBrowserPackageName());
|
| + intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
| + intent.setClassName(getBrowserPackageName(), ChromeLauncherActivity.class.getName());
|
| + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| + startActivity(intent);
|
| + }
|
| +
|
| + @Override
|
| public String getDefaultSmsPackageName() {
|
| if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return null;
|
| return Telephony.Sms.getDefaultSmsPackage(mApplicationContext);
|
|
|