Chromium Code Reviews| 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..cc78306eb9bbdc2a983f6e64285002488213760b 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,31 @@ 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) { |
|
nyquist
2017/02/28 17:57:17
I think I'd flip this around (i.e. == null). That
gonzalon
2017/02/28 18:05:09
Done.
|
| + try { |
| + startActivity(launchIntent); |
| + RecordUserAction.record("MobileMenuOpenWebApk"); |
| + WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_LAUNCH_SUCCESS); |
| + } catch (ActivityNotFoundException e) { |
| + WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_ACTIVITY_NOT_FOUND); |
| + return false; |
| + } |
| + } else { |
| + WebApkUma.recordWebApkOpenAttempt(WebApkUma.WEBAPK_OPEN_NO_LAUNCH_INTENT); |
| + return false; |
| + } |
| + return true; |
|
nyquist
2017/02/28 17:57:17
I think I'd move this up to the end of the try-sta
gonzalon
2017/02/28 18:05:09
Done.
|
| + } |
| + |
| + /** |
| * 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. |