| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| index a186f8746a97f51605c1c50b95f4a9a92d1cab05..45e7a9e233a6825dc282372628fc69f2274b9a98 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
| @@ -9,6 +9,7 @@ import android.annotation.TargetApi;
|
| import android.app.Activity;
|
| import android.app.SearchManager;
|
| import android.app.assist.AssistContent;
|
| +import android.content.ActivityNotFoundException;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| import android.content.res.Configuration;
|
| @@ -87,6 +88,7 @@ import org.chromium.chrome.browser.metrics.LaunchMetrics;
|
| import org.chromium.chrome.browser.metrics.StartupMetrics;
|
| import org.chromium.chrome.browser.metrics.UmaSessionStats;
|
| import org.chromium.chrome.browser.metrics.UmaUtils;
|
| +import org.chromium.chrome.browser.metrics.WebApkUma;
|
| import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
| import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
| import org.chromium.chrome.browser.nfc.BeamController;
|
| @@ -149,6 +151,8 @@ import org.chromium.ui.base.ActivityWindowAndroid;
|
| import org.chromium.ui.base.DeviceFormFactor;
|
| import org.chromium.ui.base.PageTransition;
|
| import org.chromium.ui.base.WindowAndroid;
|
| +import org.chromium.ui.widget.Toast;
|
| +import org.chromium.webapk.lib.client.WebApkValidator;
|
|
|
| import java.util.ArrayList;
|
| import java.util.HashSet;
|
| @@ -1776,6 +1780,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| new AddToHomescreenManager(this, currentTab);
|
| addToHomescreenManager.start();
|
| RecordUserAction.record("MobileMenuAddToHomescreen");
|
| + } else if (id == R.id.open_webapk_id) {
|
| + boolean launchSuccess = openWebApkFromUrl(currentTab.getUrl());
|
| + if (!launchSuccess) {
|
| + Toast.makeText(this, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
|
| + }
|
| } else if (id == R.id.request_desktop_site_id) {
|
| final boolean reloadOnChange = !currentTab.isNativePage();
|
| final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
|
| @@ -1798,6 +1807,30 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
| }
|
|
|
| /**
|
| + * Tries to open the WebAPK related to the |url|. Returns true if successful.
|
| + *
|
| + * @param url The URL that
|
| + * @return true if the WwbAPK was opened successfully.
|
| + */
|
| + private boolean openWebApkFromUrl(String url) {
|
| + String packageName = WebApkValidator.queryWebApkPackage(this, url);
|
| + Intent launchIntent = getPackageManager().getLaunchIntentForPackage(packageName);
|
| + if (launchIntent == null) {
|
| + WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_NO_LAUNCH_INTENT);
|
| + return false;
|
| + }
|
| + try {
|
| + startActivity(launchIntent);
|
| + RecordUserAction.record("MobileMenuOpenWebApk");
|
| + WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_LAUNCH_SUCCESS);
|
| + return true;
|
| + } catch (ActivityNotFoundException e) {
|
| + WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_ACTIVITY_NOT_FOUND);
|
| + return false;
|
| + }
|
| + }
|
| +
|
| + /**
|
| * Shows HelpAndFeedback and records the user action as well.
|
| * @param currentTab The tab that the user is currently on.
|
| * @param recordAction The user action to record.
|
|
|