Index: chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java |
index d72051fda974fcb1a8dde4b2718dfd4b07361938..061745e450927a521c97a68f0f64275753b2585b 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java |
@@ -4,6 +4,8 @@ |
package org.chromium.chrome.browser.appmenu; |
+import android.content.Context; |
+import android.content.pm.ResolveInfo; |
import android.graphics.PorterDuff; |
import android.graphics.drawable.Drawable; |
import android.view.Menu; |
@@ -11,6 +13,8 @@ import android.view.MenuItem; |
import org.chromium.base.ApiCompatibilityUtils; |
import org.chromium.base.CommandLine; |
+import org.chromium.base.ContextUtils; |
+import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeActivity; |
import org.chromium.chrome.browser.ChromeFeatureList; |
@@ -28,6 +32,9 @@ import org.chromium.chrome.browser.share.ShareHelper; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; |
import org.chromium.ui.base.DeviceFormFactor; |
+import org.chromium.webapk.lib.client.WebApkValidator; |
+ |
+import java.util.concurrent.TimeUnit; |
/** |
* App Menu helper that handles hiding and showing menu items based on activity state. |
@@ -162,13 +169,26 @@ public class AppMenuPropertiesDelegate { |
// access to the resource via FLAG_GRANT_READ_URI_PERMISSION, and that |
// is not persisted when adding to the homescreen. |
// * If creating shortcuts it not supported by the current home screen. |
+ long addToHomeScreenStart = System.currentTimeMillis(); |
dominickn
2017/02/21 23:04:42
This timing is currently mixing in the work needed
gonzalon
2017/02/22 15:50:49
Done.
|
MenuItem homescreenItem = menu.findItem(R.id.add_to_homescreen_id); |
- boolean homescreenItemVisible = ShortcutHelper.isAddToHomeIntentSupported(mActivity) |
+ MenuItem openWebApkItem = menu.findItem(R.id.open_webapk_id); |
pkotwicz
2017/02/21 22:52:32
Based on reading the discussion on the bug (and co
dominickn
2017/02/21 23:04:42
I thought that we were going to display "Open appn
pkotwicz
2017/02/22 15:04:51
Yes Dominick you are right. I somehow missed Comme
|
+ boolean canBeAddedToHomeScreen = ShortcutHelper.isAddToHomeIntentSupported(mActivity) |
&& !isChromeScheme && !isFileScheme && !isContentScheme && !isIncognito; |
- if (homescreenItemVisible) { |
+ Context context = ContextUtils.getApplicationContext(); |
+ ResolveInfo resolveInfo = WebApkValidator.queryWebApk(context, currentTab.getUrl()); |
+ boolean openWebApkItemVisible = canBeAddedToHomeScreen && resolveInfo != null |
+ && resolveInfo.activityInfo.packageName != null; |
+ if (canBeAddedToHomeScreen && !openWebApkItemVisible) { |
dominickn
2017/02/21 23:04:42
I think the logic here is more clearly expressed l
gonzalon
2017/02/22 15:50:49
Done.
|
homescreenItem.setTitle(AppBannerManager.getHomescreenLanguageOption()); |
} |
- homescreenItem.setVisible(homescreenItemVisible); |
+ if (openWebApkItemVisible) { |
+ String appName = resolveInfo.loadLabel(context.getPackageManager()).toString(); |
+ openWebApkItem.setTitle(context.getString(R.string.menu_open_webapk, appName)); |
+ } |
+ homescreenItem.setVisible(canBeAddedToHomeScreen && !openWebApkItemVisible); |
+ openWebApkItem.setVisible(openWebApkItemVisible); |
+ RecordHistogram.recordTimesHistogram("AndroidPrepareMenu.OpenWebAPK", |
pkotwicz
2017/02/21 22:52:32
How about "Android.PrepareMenu.DisableAddToHomescr
dominickn
2017/02/21 23:04:42
+1 to all Peter's comments
gonzalon
2017/02/22 15:50:49
Done.
|
+ System.currentTimeMillis() - addToHomeScreenStart, TimeUnit.MILLISECONDS); |
pkotwicz
2017/02/21 22:52:32
From looking at the codebase, it looks like we pre
gonzalon
2017/02/22 15:50:49
Done.
|
// Hide request desktop site on all chrome:// pages except for the NTP. Check request |
// desktop site if it's activated on this page. |