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 50010458599e3d9e6efceb269f43c3ed35d8bcb1..2ca251af34e9451fabdb9eede12177d1ff6a875d 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 |
@@ -249,13 +249,19 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
ContextMenu menu, Context context, ContextMenuParams params) { |
// Add all items in a group |
Set<ContextMenuItem> supportedOptions = new HashSet<>(); |
- supportedOptions.addAll(BASE_WHITELIST); |
- if (mMode == FULLSCREEN_TAB_MODE) { |
- supportedOptions.addAll(FULLSCREEN_TAB_MODE_WHITELIST); |
- } else if (mMode == CUSTOM_TAB_MODE) { |
- supportedOptions.addAll(CUSTOM_TAB_MODE_WHITELIST); |
+ if (FirstRunStatus.getFirstRunFlowComplete()) { |
+ supportedOptions.addAll(BASE_WHITELIST); |
+ if (mMode == FULLSCREEN_TAB_MODE) { |
+ supportedOptions.addAll(FULLSCREEN_TAB_MODE_WHITELIST); |
+ } else if (mMode == CUSTOM_TAB_MODE) { |
+ supportedOptions.addAll(CUSTOM_TAB_MODE_WHITELIST); |
+ } else { |
+ supportedOptions.addAll(NORMAL_MODE_WHITELIST); |
+ } |
} else { |
- supportedOptions.addAll(NORMAL_MODE_WHITELIST); |
+ supportedOptions.add(ContextMenuItem.COPY_LINK_ADDRESS); |
+ supportedOptions.add(ContextMenuItem.COPY_LINK_TEXT); |
+ supportedOptions.add(ContextMenuItem.COPY); |
} |
Set<ContextMenuItem> disabledOptions = getDisabledOptions(params); |
@@ -400,7 +406,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT); |
} |
- if (params.isAnchor() && !UrlUtilities.isAcceptedScheme(params.getLinkUrl())) { |
+ if (params.isAnchor() && !isAcceptedScheme(params.getLinkUrl())) { |
disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); |
disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); |
disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); |
@@ -437,11 +443,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
} |
} |
- if (!UrlUtilities.isDownloadableScheme(params.getLinkUrl())) { |
+ if (!isDownloadableScheme(params.getLinkUrl())) { |
disabledOptions.add(ContextMenuItem.SAVE_LINK_AS); |
} |
- boolean isSrcDownloadableScheme = UrlUtilities.isDownloadableScheme(params.getSrcUrl()); |
+ boolean isSrcDownloadableScheme = isDownloadableScheme(params.getSrcUrl()); |
if (params.isVideo()) { |
boolean saveableAndDownloadable = params.canSaveMedia() && isSrcDownloadableScheme; |
if (!saveableAndDownloadable) { |
@@ -467,7 +473,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
if (mDelegate.getPageUrl().equals(params.getSrcUrl())) { |
disabledOptions.add(ContextMenuItem.OPEN_IMAGE); |
} |
- final TemplateUrlService templateUrlServiceInstance = TemplateUrlService.getInstance(); |
+ final TemplateUrlService templateUrlServiceInstance = getTemplateUrlService(); |
final boolean isSearchByImageAvailable = isSrcDownloadableScheme |
&& templateUrlServiceInstance.isLoaded() |
&& templateUrlServiceInstance.isSearchByImageAvailable() |
@@ -478,16 +484,6 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
} |
} |
- // Hide all items that could spawn additional tabs until FRE has been completed. |
- if (!FirstRunStatus.getFirstRunFlowComplete()) { |
- disabledOptions.add(ContextMenuItem.OPEN_IMAGE_IN_NEW_TAB); |
- disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); |
- disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); |
- disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); |
- disabledOptions.add(ContextMenuItem.SEARCH_BY_IMAGE); |
- disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME); |
- } |
- |
if (mMode == CUSTOM_TAB_MODE) { |
try { |
URI uri = new URI(getUrl(params)); |
@@ -614,6 +610,27 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { |
} |
/** |
+ * @return Whether the scheme of the URL is valid . |
+ */ |
+ protected boolean isAcceptedScheme(String url) { |
+ return UrlUtilities.isAcceptedScheme(url); |
+ } |
+ |
+ /** |
+ * @return Whether the scheme of the URL is valid for downloading. |
+ */ |
+ protected boolean isDownloadableScheme(String url) { |
+ return UrlUtilities.isDownloadableScheme(url); |
+ } |
+ |
+ /** |
+ * @return The service that handles TemplateUrls. |
+ */ |
+ protected TemplateUrlService getTemplateUrlService() { |
+ return TemplateUrlService.getInstance(); |
+ } |
+ |
+ /** |
* Checks whether a url is empty or blank. |
* @param url The url need to be checked. |
* @return True if the url is empty or "about:blank". |