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 d0bca3b432841078a8fbf9b2e134d8d3868257ac..a1b6c156ec8efd90ad2b3ce7505701695f29652f 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; |
@@ -44,6 +45,7 @@ import org.chromium.base.ApplicationStatus; |
import org.chromium.base.BaseSwitches; |
import org.chromium.base.Callback; |
import org.chromium.base.CommandLine; |
+import org.chromium.base.ContextUtils; |
import org.chromium.base.SysUtils; |
import org.chromium.base.TraceEvent; |
import org.chromium.base.VisibleForTesting; |
@@ -148,6 +150,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.List; |
@@ -1766,6 +1770,27 @@ public abstract class ChromeActivity extends AsyncInitializationActivity |
new AddToHomescreenManager(this, currentTab); |
addToHomescreenManager.start(); |
RecordUserAction.record("MobileMenuAddToHomescreen"); |
+ } else if (id == R.id.open_webapk_id) { |
+ Context context = ContextUtils.getApplicationContext(); |
+ String packageName = WebApkValidator.queryWebApkPackage(context, currentTab.getUrl()); |
+ Intent launchIntent = |
+ context.getPackageManager().getLaunchIntentForPackage(packageName); |
+ boolean launchFailed = false; |
+ if (launchIntent != null) { |
+ try { |
+ context.startActivity(launchIntent); |
+ RecordUserAction.record("MobileMenuOpenWebAPK.Success"); |
+ } catch (ActivityNotFoundException e) { |
+ RecordUserAction.record("MobileMenuOpenWebAPK.WebAPKActivityNotFound"); |
+ launchFailed = true; |
+ } |
+ } else { |
+ RecordUserAction.record("MobileMenuOpenWebAPK.LaunchIntentIsNull"); |
+ launchFailed = true; |
+ } |
pkotwicz
2017/02/23 20:46:17
There are two different metrics:
1) The user actio
dominickn
2017/02/24 05:21:25
+1, except maybe call it LAUNCH_SUCCESS instead of
gonzalon
2017/02/24 16:02:58
Done.
|
+ if (launchFailed) { |
+ Toast.makeText(context, 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(); |