Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java |
| index f8e59772ff82c075bae7cd585366edb6e2593c0e..8dee4283df4ccbc366f2aec3975d5683555bae0b 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java |
| @@ -5,7 +5,9 @@ |
| package org.chromium.chrome.browser.contextmenu; |
| import android.content.Context; |
| +import android.content.Intent; |
| import android.net.MailTo; |
| +import android.net.Uri; |
| import android.support.annotation.IntDef; |
| import android.text.TextUtils; |
| import android.view.ContextMenu; |
| @@ -16,6 +18,7 @@ import android.webkit.MimeTypeMap; |
| import org.chromium.base.metrics.RecordHistogram; |
| import org.chromium.chrome.R; |
| import org.chromium.chrome.browser.UrlConstants; |
| +import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; |
| import org.chromium.chrome.browser.firstrun.FirstRunStatus; |
| import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; |
| import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyUma; |
| @@ -77,7 +80,10 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
| // Additional items for custom tabs mode. |
| private static final int[] CUSTOM_TAB_MODE_WHITELIST = { |
| R.id.contextmenu_open_image, |
| - R.id.contextmenu_search_by_image |
| + R.id.contextmenu_search_by_image, |
| + R.id.contextmenu_open_in_new_chrome_tab, |
| + R.id.contextmenu_open_in_chrome_incognito_tab, |
| + R.id.contextmenu_open_in_browser_id, |
| }; |
| // Additional items for fullscreen tabs mode. |
| @@ -319,6 +325,14 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
| removeUnsupportedItems(menu, FULLSCREEN_TAB_MODE_WHITELIST); |
| } else if (mMode == CUSTOM_TAB_MODE) { |
| removeUnsupportedItems(menu, CUSTOM_TAB_MODE_WHITELIST); |
| + MenuItem defaultOpenMenuItem = menu.findItem(R.id.contextmenu_open_in_browser_id); |
| + if (isChromeDefault()) { |
|
Ted C
2017/02/11 00:08:46
Let's use ChromePreferenceManager.getInstance(cont
ltian
2017/02/14 01:43:44
Done.
|
| + defaultOpenMenuItem.setVisible(false); |
| + } else { |
| + menu.findItem(R.id.contextmenu_open_in_new_chrome_tab).setVisible(false); |
| + menu.findItem(R.id.contextmenu_open_in_chrome_incognito_tab).setVisible(false); |
| + defaultOpenMenuItem.setTitle(mDelegate.getTitleForOpenTabInExternalApp()); |
| + } |
| } else { |
| removeUnsupportedItems(menu, NORMAL_MODE_WHITELIST); |
| } |
| @@ -337,6 +351,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
| } |
| } |
| + private boolean isChromeDefault() { |
| + String url = "https://www.google.com"; |
| + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); |
| + return ExternalNavigationDelegateImpl.willChromeHandleIntent(intent, false); |
| + } |
| + |
| @Override |
| public boolean onItemSelected(ContextMenuHelper helper, ContextMenuParams params, int itemId) { |
| if (itemId == R.id.contextmenu_open_in_other_window) { |
| @@ -427,6 +447,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
| helper.shareImage(); |
| } else if (itemId == R.id.menu_id_open_in_chrome) { |
| mDelegate.onOpenInChrome(params.getLinkUrl(), params.getPageUrl()); |
| + } else if (itemId == R.id.contextmenu_open_in_new_chrome_tab) { |
| + mDelegate.onOpenInNewChromeTabFromCCT(params.getLinkUrl(), false); |
| + } else if (itemId == R.id.contextmenu_open_in_chrome_incognito_tab) { |
| + mDelegate.onOpenInNewChromeTabFromCCT(params.getLinkUrl(), true); |
| + } else if (itemId == R.id.contextmenu_open_in_browser_id) { |
| + mDelegate.onOpenInDefaultBrowser(params.getLinkUrl()); |
| } else { |
| assert false; |
| } |