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

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

Issue 2883983005: Only enable copy options before FRE is completed on Android. (Closed)
Patch Set: Update tests to cover all context menu modes (required no prod code changes) Created 3 years, 7 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
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuParams.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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".
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuParams.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698