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

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

Issue 397993002: [WIP]Incorrect context menu is shown for tel: links Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: minor cleanup Created 6 years, 5 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 496e81def3560abef6d80be3a63d260d90c79725..6ef7765ec6204b72fc3f28b361a0a1d1cc99f48d 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
@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.search_engines.TemplateUrlService;
public class ChromeContextMenuPopulator implements ContextMenuPopulator {
private final ChromeContextMenuItemDelegate mDelegate;
private MenuInflater mMenuInflater;
+ private static final String TEL_SCHEME = "tel:";
/**
* Builds a {@link ChromeContextMenuPopulator}.
@@ -40,8 +41,10 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
public void buildContextMenu(ContextMenu menu, Context context, ContextMenuParams params) {
if (params.isImage() && !TextUtils.isEmpty(params.getSrcUrl()))
menu.setHeaderTitle(params.getSrcUrl());
- else if (!TextUtils.isEmpty(params.getLinkUrl()) )
+ else if (!TextUtils.isEmpty(params.getLinkUrl()))
menu.setHeaderTitle(params.getLinkUrl());
+ else if (isTelScheme(params))
+ menu.setHeaderTitle(params.getLinkText());
if (mMenuInflater == null) mMenuInflater = new MenuInflater(context);
@@ -50,6 +53,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
menu.setGroupVisible(R.id.contextmenu_group_anchor, params.isAnchor());
menu.setGroupVisible(R.id.contextmenu_group_image, params.isImage());
menu.setGroupVisible(R.id.contextmenu_group_video, params.isVideo());
+ menu.setGroupVisible(R.id.contextmenu_group_tel, isTelScheme(params));
if (mDelegate.isIncognito() || !mDelegate.isIncognitoSupported()) {
menu.findItem(R.id.contextmenu_open_in_incognito_tab).setVisible(false);
@@ -59,6 +63,10 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
menu.findItem(R.id.contextmenu_copy_link_text).setVisible(false);
}
+ if (isTelScheme(params) && params.isAnchor()) {
+ menu.setGroupVisible(R.id.contextmenu_group_anchor, false);
+ }
+
menu.findItem(R.id.contextmenu_save_link_as).setEnabled(
UrlUtilities.isDownloadableScheme(params.getLinkUrl()));
@@ -108,7 +116,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
mDelegate.onOpenImageInNewTab(params.getSrcUrl(), params.getReferrer());
} else if (itemId == R.id.contextmenu_copy_link_address_text) {
mDelegate.onSaveToClipboard(params.getUnfilteredLinkUrl(), true);
- } else if (itemId == R.id.contextmenu_copy_link_text) {
+ } else if (itemId == R.id.contextmenu_copy_link_text ||
+ itemId == R.id.contextmenu_copy_phone_number) {
mDelegate.onSaveToClipboard(params.getLinkText(), false);
} else if (itemId == R.id.contextmenu_save_image ||
itemId == R.id.contextmenu_save_video) {
@@ -119,10 +128,24 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
mDelegate.onSearchByImageInNewTab();
} else if (itemId == R.id.contextmenu_copy_image) {
mDelegate.onSaveImageToClipboard(params.getSrcUrl());
+ } else if (itemId == R.id.contextmenu_call) {
+ mDelegate.onCall(params.getLinkText());
+ } else if (itemId == R.id.contextmenu_send_text_message) {
+ mDelegate.onSendTextMessage(params.getLinkText());
+ } else if (itemId == R.id.contextmenu_add_to_contacts) {
+ mDelegate.onAddToContacts(params.getLinkText());
} else {
assert false;
}
return true;
}
+
+ /**
+ * Determines if a ContextMenuParams has tel: scheme
+ * @param params ContextMenuParams
+ */
+ private boolean isTelScheme(ContextMenuParams params) {
+ return params.getLinkUrl().startsWith(TEL_SCHEME);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698