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

Side by Side 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: Rebase to master branch. 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.contextmenu; 5 package org.chromium.chrome.browser.contextmenu;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.net.MailTo; 8 import android.net.MailTo;
9 import android.support.annotation.IntDef; 9 import android.support.annotation.IntDef;
10 import android.text.TextUtils; 10 import android.text.TextUtils;
11 import android.view.ContextMenu; 11 import android.view.ContextMenu;
12 import android.view.MenuInflater; 12 import android.view.MenuInflater;
13 import android.view.MenuItem; 13 import android.view.MenuItem;
14 import android.webkit.MimeTypeMap; 14 import android.webkit.MimeTypeMap;
15 15
16 import org.chromium.base.metrics.RecordHistogram; 16 import org.chromium.base.metrics.RecordHistogram;
17 import org.chromium.chrome.R; 17 import org.chromium.chrome.R;
18 import org.chromium.chrome.browser.UrlConstants; 18 import org.chromium.chrome.browser.UrlConstants;
19 import org.chromium.chrome.browser.firstrun.FirstRunStatus; 19 import org.chromium.chrome.browser.firstrun.FirstRunStatus;
20 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; 20 import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
21 import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
21 import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyU ma; 22 import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyU ma;
22 import org.chromium.chrome.browser.search_engines.TemplateUrlService; 23 import org.chromium.chrome.browser.search_engines.TemplateUrlService;
23 import org.chromium.chrome.browser.util.UrlUtilities; 24 import org.chromium.chrome.browser.util.UrlUtilities;
24 25
25 import java.lang.annotation.Retention; 26 import java.lang.annotation.Retention;
26 import java.lang.annotation.RetentionPolicy; 27 import java.lang.annotation.RetentionPolicy;
27 import java.util.Arrays; 28 import java.util.Arrays;
28 29
29 /** 30 /**
30 * A {@link ContextMenuPopulator} used for showing the default Chrome context me nu. 31 * A {@link ContextMenuPopulator} used for showing the default Chrome context me nu.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 R.id.contextmenu_open_in_new_tab, 70 R.id.contextmenu_open_in_new_tab,
70 R.id.contextmenu_open_in_other_window, 71 R.id.contextmenu_open_in_other_window,
71 R.id.contextmenu_open_in_incognito_tab, 72 R.id.contextmenu_open_in_incognito_tab,
72 R.id.contextmenu_save_link_as, 73 R.id.contextmenu_save_link_as,
73 R.id.contextmenu_open_image_in_new_tab, 74 R.id.contextmenu_open_image_in_new_tab,
74 R.id.contextmenu_search_by_image, 75 R.id.contextmenu_search_by_image,
75 }; 76 };
76 77
77 // Additional items for custom tabs mode. 78 // Additional items for custom tabs mode.
78 private static final int[] CUSTOM_TAB_MODE_WHITELIST = { 79 private static final int[] CUSTOM_TAB_MODE_WHITELIST = {
79 R.id.contextmenu_open_image, 80 R.id.contextmenu_open_image, R.id.contextmenu_search_by_image,
80 R.id.contextmenu_search_by_image 81 R.id.contextmenu_open_in_new_chrome_tab, R.id.contextmenu_open_in_ch rome_incognito_tab,
82 R.id.contextmenu_open_in_browser_id,
81 }; 83 };
82 84
83 // Additional items for fullscreen tabs mode. 85 // Additional items for fullscreen tabs mode.
84 private static final int[] FULLSCREEN_TAB_MODE_WHITELIST = { 86 private static final int[] FULLSCREEN_TAB_MODE_WHITELIST = {
85 R.id.menu_id_open_in_chrome 87 R.id.menu_id_open_in_chrome
86 }; 88 };
87 89
88 private final ContextMenuItemDelegate mDelegate; 90 private final ContextMenuItemDelegate mDelegate;
89 private MenuInflater mMenuInflater; 91 private MenuInflater mMenuInflater;
90 private final int mMode; 92 private final int mMode;
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 menu.findItem(R.id.contextmenu_open_in_new_tab).setVisible(false); 314 menu.findItem(R.id.contextmenu_open_in_new_tab).setVisible(false);
313 menu.findItem(R.id.contextmenu_open_in_incognito_tab).setVisible(fal se); 315 menu.findItem(R.id.contextmenu_open_in_incognito_tab).setVisible(fal se);
314 menu.findItem(R.id.contextmenu_search_by_image).setVisible(false); 316 menu.findItem(R.id.contextmenu_search_by_image).setVisible(false);
315 menu.findItem(R.id.menu_id_open_in_chrome).setVisible(false); 317 menu.findItem(R.id.menu_id_open_in_chrome).setVisible(false);
316 } 318 }
317 319
318 if (mMode == FULLSCREEN_TAB_MODE) { 320 if (mMode == FULLSCREEN_TAB_MODE) {
319 removeUnsupportedItems(menu, FULLSCREEN_TAB_MODE_WHITELIST); 321 removeUnsupportedItems(menu, FULLSCREEN_TAB_MODE_WHITELIST);
320 } else if (mMode == CUSTOM_TAB_MODE) { 322 } else if (mMode == CUSTOM_TAB_MODE) {
321 removeUnsupportedItems(menu, CUSTOM_TAB_MODE_WHITELIST); 323 removeUnsupportedItems(menu, CUSTOM_TAB_MODE_WHITELIST);
324 MenuItem defaultOpenMenuItem = menu.findItem(R.id.contextmenu_open_i n_browser_id);
325 if (ChromePreferenceManager.getInstance().getCachedChromeDefaultBrow ser()) {
326 defaultOpenMenuItem.setVisible(false);
327 } else {
328 menu.findItem(R.id.contextmenu_open_in_new_chrome_tab).setVisibl e(false);
329 menu.findItem(R.id.contextmenu_open_in_chrome_incognito_tab).set Visible(false);
330 defaultOpenMenuItem.setTitle(mDelegate.getTitleForOpenTabInExter nalApp());
331 }
322 } else { 332 } else {
323 removeUnsupportedItems(menu, NORMAL_MODE_WHITELIST); 333 removeUnsupportedItems(menu, NORMAL_MODE_WHITELIST);
324 } 334 }
325 } 335 }
326 336
327 private void removeUnsupportedItems(ContextMenu menu, int[] whitelist) { 337 private void removeUnsupportedItems(ContextMenu menu, int[] whitelist) {
328 Arrays.sort(BASE_WHITELIST); 338 Arrays.sort(BASE_WHITELIST);
329 Arrays.sort(whitelist); 339 Arrays.sort(whitelist);
330 for (int i = 0; i < menu.size(); i++) { 340 for (int i = 0; i < menu.size(); i++) {
331 MenuItem item = menu.getItem(i); 341 MenuItem item = menu.getItem(i);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 helper.startContextMenuDownload(true, false); 430 helper.startContextMenuDownload(true, false);
421 } 431 }
422 } else if (itemId == R.id.contextmenu_search_by_image) { 432 } else if (itemId == R.id.contextmenu_search_by_image) {
423 ContextMenuUma.record(params, ContextMenuUma.ACTION_SEARCH_BY_IMAGE) ; 433 ContextMenuUma.record(params, ContextMenuUma.ACTION_SEARCH_BY_IMAGE) ;
424 helper.searchForImage(); 434 helper.searchForImage();
425 } else if (itemId == R.id.contextmenu_share_image) { 435 } else if (itemId == R.id.contextmenu_share_image) {
426 ContextMenuUma.record(params, ContextMenuUma.ACTION_SHARE_IMAGE); 436 ContextMenuUma.record(params, ContextMenuUma.ACTION_SHARE_IMAGE);
427 helper.shareImage(); 437 helper.shareImage();
428 } else if (itemId == R.id.menu_id_open_in_chrome) { 438 } else if (itemId == R.id.menu_id_open_in_chrome) {
429 mDelegate.onOpenInChrome(params.getLinkUrl(), params.getPageUrl()); 439 mDelegate.onOpenInChrome(params.getLinkUrl(), params.getPageUrl());
440 } else if (itemId == R.id.contextmenu_open_in_new_chrome_tab) {
441 mDelegate.onOpenInNewChromeTabFromCCT(params.getLinkUrl(), false);
442 } else if (itemId == R.id.contextmenu_open_in_chrome_incognito_tab) {
443 mDelegate.onOpenInNewChromeTabFromCCT(params.getLinkUrl(), true);
444 } else if (itemId == R.id.contextmenu_open_in_browser_id) {
445 mDelegate.onOpenInDefaultBrowser(params.getLinkUrl());
430 } else { 446 } else {
431 assert false; 447 assert false;
432 } 448 }
433 449
434 return true; 450 return true;
435 } 451 }
436 452
437 private void setHeaderText(Context context, ContextMenu menu, String text) { 453 private void setHeaderText(Context context, ContextMenu menu, String text) {
438 ContextMenuTitleView title = new ContextMenuTitleView(context, text); 454 ContextMenuTitleView title = new ContextMenuTitleView(context, text);
439 menu.setHeaderView(title); 455 menu.setHeaderView(title);
440 } 456 }
441 } 457 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698