| 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 |