OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |