Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(232)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java

Issue 2707993003: [Android]: Hide add-to-homescreen app menu item when WebAPK is installed (Closed)
Patch Set: Add new state for 'Add to Homescreen' Menu item Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.customtabs; 5 package org.chromium.chrome.browser.customtabs;
6 6
7 import android.content.Intent; 7 import android.content.Intent;
8 import android.content.pm.PackageManager; 8 import android.content.pm.PackageManager;
9 import android.content.pm.ResolveInfo; 9 import android.content.pm.ResolveInfo;
10 import android.net.Uri; 10 import android.net.Uri;
11 import android.os.AsyncTask; 11 import android.os.AsyncTask;
12 import android.view.Menu; 12 import android.view.Menu;
13 import android.view.MenuItem; 13 import android.view.MenuItem;
14 14
15 import org.chromium.base.BuildInfo; 15 import org.chromium.base.BuildInfo;
16 import org.chromium.base.VisibleForTesting; 16 import org.chromium.base.VisibleForTesting;
17 import org.chromium.chrome.R; 17 import org.chromium.chrome.R;
18 import org.chromium.chrome.browser.ChromeActivity; 18 import org.chromium.chrome.browser.ChromeActivity;
19 import org.chromium.chrome.browser.UrlConstants; 19 import org.chromium.chrome.browser.UrlConstants;
20 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; 20 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate;
21 import org.chromium.chrome.browser.banners.AppBannerManager;
22 import org.chromium.chrome.browser.download.DownloadUtils; 21 import org.chromium.chrome.browser.download.DownloadUtils;
23 import org.chromium.chrome.browser.firstrun.FirstRunStatus; 22 import org.chromium.chrome.browser.firstrun.FirstRunStatus;
24 import org.chromium.chrome.browser.share.ShareHelper; 23 import org.chromium.chrome.browser.share.ShareHelper;
25 import org.chromium.chrome.browser.tab.Tab; 24 import org.chromium.chrome.browser.tab.Tab;
26 25
27 import java.util.HashMap; 26 import java.util.HashMap;
28 import java.util.List; 27 import java.util.List;
29 import java.util.Map; 28 import java.util.Map;
30 import java.util.concurrent.ExecutionException; 29 import java.util.concurrent.ExecutionException;
31 30
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 shareItem.setEnabled(mShowShare); 98 shareItem.setEnabled(mShowShare);
100 if (mShowShare) { 99 if (mShowShare) {
101 ShareHelper.configureDirectShareMenuItem( 100 ShareHelper.configureDirectShareMenuItem(
102 mActivity, menu.findItem(R.id.direct_share_menu_id)); 101 mActivity, menu.findItem(R.id.direct_share_menu_id));
103 } 102 }
104 103
105 MenuItem iconRow = menu.findItem(R.id.icon_row_menu_id); 104 MenuItem iconRow = menu.findItem(R.id.icon_row_menu_id);
106 MenuItem openInChromeItem = menu.findItem(R.id.open_in_browser_id); 105 MenuItem openInChromeItem = menu.findItem(R.id.open_in_browser_id);
107 MenuItem bookmarkItem = menu.findItem(R.id.bookmark_this_page_id); 106 MenuItem bookmarkItem = menu.findItem(R.id.bookmark_this_page_id);
108 MenuItem downloadItem = menu.findItem(R.id.offline_page_id); 107 MenuItem downloadItem = menu.findItem(R.id.offline_page_id);
109 MenuItem addToHomeScreenItem = menu.findItem(R.id.add_to_homescreen_ id); 108
110 addToHomeScreenItem.setTitle(AppBannerManager.getHomescreenLanguageO ption()); 109 boolean addToHomeScreenVisible = true;
111 110
112 // Hide request desktop site on all chrome:// pages except for the N TP. Check request 111 // Hide request desktop site on all chrome:// pages except for the N TP. Check request
113 // desktop site if it's activated on this page. 112 // desktop site if it's activated on this page.
114 MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id); 113 MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id);
115 updateRequestDesktopSiteMenuItem(requestItem, currentTab); 114 updateRequestDesktopSiteMenuItem(requestItem, currentTab);
116 115
117 if (mIsMediaViewer) { 116 if (mIsMediaViewer) {
118 // Most of the menu items don't make sense when viewing media. 117 // Most of the menu items don't make sense when viewing media.
119 iconRow.setVisible(false); 118 iconRow.setVisible(false);
120 openInChromeItem.setVisible(false); 119 openInChromeItem.setVisible(false);
121 menu.findItem(R.id.find_in_page_id).setVisible(false); 120 menu.findItem(R.id.find_in_page_id).setVisible(false);
122 menu.findItem(R.id.request_desktop_site_id).setVisible(false); 121 menu.findItem(R.id.request_desktop_site_id).setVisible(false);
123 addToHomeScreenItem.setVisible(false); 122 addToHomeScreenVisible = false;
124 } else { 123 } else {
125 try { 124 try {
126 openInChromeItem.setTitle(mDefaultBrowserFetcher.get()); 125 openInChromeItem.setTitle(mDefaultBrowserFetcher.get());
127 } catch (InterruptedException | ExecutionException e) { 126 } catch (InterruptedException | ExecutionException e) {
128 openInChromeItem.setTitle( 127 openInChromeItem.setTitle(
129 mActivity.getString(R.string.menu_open_in_product_de fault)); 128 mActivity.getString(R.string.menu_open_in_product_de fault));
130 } 129 }
131 updateBookmarkMenuItem(bookmarkItem, currentTab); 130 updateBookmarkMenuItem(bookmarkItem, currentTab);
132 } 131 }
133 bookmarkItem.setVisible(mShowStar); 132 bookmarkItem.setVisible(mShowStar);
134 downloadItem.setVisible(mShowDownload); 133 downloadItem.setVisible(mShowDownload);
135 if (!FirstRunStatus.getFirstRunFlowComplete()) { 134 if (!FirstRunStatus.getFirstRunFlowComplete()) {
136 openInChromeItem.setVisible(false); 135 openInChromeItem.setVisible(false);
137 bookmarkItem.setVisible(false); 136 bookmarkItem.setVisible(false);
138 downloadItem.setVisible(false); 137 downloadItem.setVisible(false);
139 addToHomeScreenItem.setVisible(false); 138 addToHomeScreenVisible = false;
140 } 139 }
141 140
142 downloadItem.setEnabled(DownloadUtils.isAllowedToDownloadPage(curren tTab)); 141 downloadItem.setEnabled(DownloadUtils.isAllowedToDownloadPage(curren tTab));
143 142
144 String url = currentTab.getUrl(); 143 String url = currentTab.getUrl();
145 boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREF IX) 144 boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREF IX)
146 || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX); 145 || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
147 if (isChromeScheme) { 146 if (isChromeScheme) {
148 addToHomeScreenItem.setVisible(false); 147 addToHomeScreenVisible = false;
149 } 148 }
150 149
151 // Add custom menu items. Make sure they are only added once. 150 // Add custom menu items. Make sure they are only added once.
152 if (!mIsCustomEntryAdded) { 151 if (!mIsCustomEntryAdded) {
153 mIsCustomEntryAdded = true; 152 mIsCustomEntryAdded = true;
154 for (int i = 0; i < mMenuEntries.size(); i++) { 153 for (int i = 0; i < mMenuEntries.size(); i++) {
155 MenuItem item = menu.add(0, 0, 1, mMenuEntries.get(i)); 154 MenuItem item = menu.add(0, 0, 1, mMenuEntries.get(i));
156 mItemToIndexMap.put(item, i); 155 mItemToIndexMap.put(item, i);
157 } 156 }
158 } 157 }
158
159 prepareAddToHomescreenMenuItem(menu, currentTab.getUrl(), addToHomeS creenVisible);
159 } 160 }
160 } 161 }
161 162
162 /** 163 /**
163 * @return The index that the given menu item should appear in the result of 164 * @return The index that the given menu item should appear in the result of
164 * {@link CustomTabIntentDataProvider#getMenuTitles()}. Returns -1 i f item not found. 165 * {@link CustomTabIntentDataProvider#getMenuTitles()}. Returns -1 i f item not found.
165 */ 166 */
166 public int getIndexOfMenuItem(MenuItem menuItem) { 167 public int getIndexOfMenuItem(MenuItem menuItem) {
167 if (!mItemToIndexMap.containsKey(menuItem)) { 168 if (!mItemToIndexMap.containsKey(menuItem)) {
168 return -1; 169 return -1;
(...skipping 11 matching lines...) Expand all
180 * the same title, a random one will be returned. This method is for testing purpose _only_. 181 * the same title, a random one will be returned. This method is for testing purpose _only_.
181 */ 182 */
182 @VisibleForTesting 183 @VisibleForTesting
183 MenuItem getMenuItemForTitle(String title) { 184 MenuItem getMenuItemForTitle(String title) {
184 for (MenuItem item : mItemToIndexMap.keySet()) { 185 for (MenuItem item : mItemToIndexMap.keySet()) {
185 if (item.getTitle().equals(title)) return item; 186 if (item.getTitle().equals(title)) return item;
186 } 187 }
187 return null; 188 return null;
188 } 189 }
189 } 190 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698