| 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.view.Menu; | 7 import android.view.Menu; |
| 8 import android.view.MenuItem; | 8 import android.view.MenuItem; |
| 9 | 9 |
| 10 import org.chromium.base.VisibleForTesting; | 10 import org.chromium.base.VisibleForTesting; |
| 11 import org.chromium.chrome.R; | 11 import org.chromium.chrome.R; |
| 12 import org.chromium.chrome.browser.ChromeActivity; | 12 import org.chromium.chrome.browser.ChromeActivity; |
| 13 import org.chromium.chrome.browser.DefaultBrowserInfo; | 13 import org.chromium.chrome.browser.DefaultBrowserInfo; |
| 14 import org.chromium.chrome.browser.UrlConstants; | 14 import org.chromium.chrome.browser.UrlConstants; |
| 15 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; | 15 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate; |
| 16 import org.chromium.chrome.browser.banners.AppBannerManager; | |
| 17 import org.chromium.chrome.browser.download.DownloadUtils; | 16 import org.chromium.chrome.browser.download.DownloadUtils; |
| 18 import org.chromium.chrome.browser.firstrun.FirstRunStatus; | 17 import org.chromium.chrome.browser.firstrun.FirstRunStatus; |
| 19 import org.chromium.chrome.browser.share.ShareHelper; | 18 import org.chromium.chrome.browser.share.ShareHelper; |
| 20 import org.chromium.chrome.browser.tab.Tab; | 19 import org.chromium.chrome.browser.tab.Tab; |
| 21 | 20 |
| 22 import java.util.HashMap; | 21 import java.util.HashMap; |
| 23 import java.util.List; | 22 import java.util.List; |
| 24 import java.util.Map; | 23 import java.util.Map; |
| 25 | 24 |
| 26 /** | 25 /** |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 shareItem.setEnabled(mShowShare); | 70 shareItem.setEnabled(mShowShare); |
| 72 if (mShowShare) { | 71 if (mShowShare) { |
| 73 ShareHelper.configureDirectShareMenuItem( | 72 ShareHelper.configureDirectShareMenuItem( |
| 74 mActivity, menu.findItem(R.id.direct_share_menu_id)); | 73 mActivity, menu.findItem(R.id.direct_share_menu_id)); |
| 75 } | 74 } |
| 76 | 75 |
| 77 MenuItem iconRow = menu.findItem(R.id.icon_row_menu_id); | 76 MenuItem iconRow = menu.findItem(R.id.icon_row_menu_id); |
| 78 MenuItem openInChromeItem = menu.findItem(R.id.open_in_browser_id); | 77 MenuItem openInChromeItem = menu.findItem(R.id.open_in_browser_id); |
| 79 MenuItem bookmarkItem = menu.findItem(R.id.bookmark_this_page_id); | 78 MenuItem bookmarkItem = menu.findItem(R.id.bookmark_this_page_id); |
| 80 MenuItem downloadItem = menu.findItem(R.id.offline_page_id); | 79 MenuItem downloadItem = menu.findItem(R.id.offline_page_id); |
| 81 MenuItem addToHomeScreenItem = menu.findItem(R.id.add_to_homescreen_
id); | 80 |
| 82 addToHomeScreenItem.setTitle(AppBannerManager.getHomescreenLanguageO
ption()); | 81 boolean addToHomeScreenVisible = true; |
| 83 | 82 |
| 84 // Hide request desktop site on all chrome:// pages except for the N
TP. Check request | 83 // Hide request desktop site on all chrome:// pages except for the N
TP. Check request |
| 85 // desktop site if it's activated on this page. | 84 // desktop site if it's activated on this page. |
| 86 MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id); | 85 MenuItem requestItem = menu.findItem(R.id.request_desktop_site_id); |
| 87 updateRequestDesktopSiteMenuItem(requestItem, currentTab); | 86 updateRequestDesktopSiteMenuItem(requestItem, currentTab); |
| 88 | 87 |
| 89 if (mIsMediaViewer) { | 88 if (mIsMediaViewer) { |
| 90 // Most of the menu items don't make sense when viewing media. | 89 // Most of the menu items don't make sense when viewing media. |
| 91 iconRow.setVisible(false); | 90 iconRow.setVisible(false); |
| 92 openInChromeItem.setVisible(false); | 91 openInChromeItem.setVisible(false); |
| 93 menu.findItem(R.id.find_in_page_id).setVisible(false); | 92 menu.findItem(R.id.find_in_page_id).setVisible(false); |
| 94 menu.findItem(R.id.request_desktop_site_id).setVisible(false); | 93 menu.findItem(R.id.request_desktop_site_id).setVisible(false); |
| 95 addToHomeScreenItem.setVisible(false); | 94 addToHomeScreenVisible = false; |
| 96 } else { | 95 } else { |
| 97 openInChromeItem.setTitle( | 96 openInChromeItem.setTitle( |
| 98 DefaultBrowserInfo.getTitleOpenInDefaultBrowser(mIsOpene
dByChrome)); | 97 DefaultBrowserInfo.getTitleOpenInDefaultBrowser(mIsOpene
dByChrome)); |
| 99 } | 98 } |
| 100 bookmarkItem.setVisible(mShowStar); | 99 bookmarkItem.setVisible(mShowStar); |
| 101 downloadItem.setVisible(mShowDownload); | 100 downloadItem.setVisible(mShowDownload); |
| 102 if (!FirstRunStatus.getFirstRunFlowComplete()) { | 101 if (!FirstRunStatus.getFirstRunFlowComplete()) { |
| 103 openInChromeItem.setVisible(false); | 102 openInChromeItem.setVisible(false); |
| 104 bookmarkItem.setVisible(false); | 103 bookmarkItem.setVisible(false); |
| 105 downloadItem.setVisible(false); | 104 downloadItem.setVisible(false); |
| 106 addToHomeScreenItem.setVisible(false); | 105 addToHomeScreenVisible = false; |
| 107 } | 106 } |
| 108 | 107 |
| 109 downloadItem.setEnabled(DownloadUtils.isAllowedToDownloadPage(curren
tTab)); | 108 downloadItem.setEnabled(DownloadUtils.isAllowedToDownloadPage(curren
tTab)); |
| 110 | 109 |
| 111 String url = currentTab.getUrl(); | 110 String url = currentTab.getUrl(); |
| 112 boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREF
IX) | 111 boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREF
IX) |
| 113 || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX); | 112 || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX); |
| 114 if (isChromeScheme) { | 113 if (isChromeScheme) { |
| 115 addToHomeScreenItem.setVisible(false); | 114 addToHomeScreenVisible = false; |
| 116 } | 115 } |
| 117 | 116 |
| 118 // Add custom menu items. Make sure they are only added once. | 117 // Add custom menu items. Make sure they are only added once. |
| 119 if (!mIsCustomEntryAdded) { | 118 if (!mIsCustomEntryAdded) { |
| 120 mIsCustomEntryAdded = true; | 119 mIsCustomEntryAdded = true; |
| 121 for (int i = 0; i < mMenuEntries.size(); i++) { | 120 for (int i = 0; i < mMenuEntries.size(); i++) { |
| 122 MenuItem item = menu.add(0, 0, 1, mMenuEntries.get(i)); | 121 MenuItem item = menu.add(0, 0, 1, mMenuEntries.get(i)); |
| 123 mItemToIndexMap.put(item, i); | 122 mItemToIndexMap.put(item, i); |
| 124 } | 123 } |
| 125 } | 124 } |
| 125 |
| 126 prepareAddToHomescreenMenuItem(menu, currentTab.getUrl(), addToHomeS
creenVisible); |
| 126 } | 127 } |
| 127 } | 128 } |
| 128 | 129 |
| 129 /** | 130 /** |
| 130 * @return The index that the given menu item should appear in the result of | 131 * @return The index that the given menu item should appear in the result of |
| 131 * {@link CustomTabIntentDataProvider#getMenuTitles()}. Returns -1 i
f item not found. | 132 * {@link CustomTabIntentDataProvider#getMenuTitles()}. Returns -1 i
f item not found. |
| 132 */ | 133 */ |
| 133 public int getIndexOfMenuItem(MenuItem menuItem) { | 134 public int getIndexOfMenuItem(MenuItem menuItem) { |
| 134 if (!mItemToIndexMap.containsKey(menuItem)) { | 135 if (!mItemToIndexMap.containsKey(menuItem)) { |
| 135 return -1; | 136 return -1; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 147 * the same title, a random one will be returned. This method is for testing
purpose _only_. | 148 * the same title, a random one will be returned. This method is for testing
purpose _only_. |
| 148 */ | 149 */ |
| 149 @VisibleForTesting | 150 @VisibleForTesting |
| 150 MenuItem getMenuItemForTitle(String title) { | 151 MenuItem getMenuItemForTitle(String title) { |
| 151 for (MenuItem item : mItemToIndexMap.keySet()) { | 152 for (MenuItem item : mItemToIndexMap.keySet()) { |
| 152 if (item.getTitle().equals(title)) return item; | 153 if (item.getTitle().equals(title)) return item; |
| 153 } | 154 } |
| 154 return null; | 155 return null; |
| 155 } | 156 } |
| 156 } | 157 } |
| OLD | NEW |