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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java

Issue 2663373003: [Android] Add options in the context menu of CCT to open in a new Chrome tab or incoginto tab (Closed)
Patch Set: Fix failure for test cases 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 side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698