OLD | NEW |
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.support.annotation.StringRes; | 10 import android.support.annotation.StringRes; |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 if (params.getLinkText().trim().isEmpty() || params.isImage()) { | 389 if (params.getLinkText().trim().isEmpty() || params.isImage()) { |
390 disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT); | 390 disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT); |
391 } | 391 } |
392 | 392 |
393 if (params.isAnchor() && !UrlUtilities.isAcceptedScheme(params.getLinkUr
l())) { | 393 if (params.isAnchor() && !UrlUtilities.isAcceptedScheme(params.getLinkUr
l())) { |
394 disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); | 394 disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); |
395 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); | 395 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); |
396 disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); | 396 disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); |
397 } | 397 } |
398 | 398 |
399 if (TextUtils.isEmpty(params.getLinkUrl()) | 399 if (isEmptyUrl(params.getLinkUrl())) { |
400 || params.getLinkUrl().equals(ContentUrlConstants.ABOUT_BLANK_DI
SPLAY_URL)) { | |
401 disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); | 400 disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); |
402 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); | 401 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); |
403 disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); | 402 disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); |
404 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOGNITO_TAB); | |
405 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB); | |
406 } | 403 } |
407 | 404 |
408 if (MailTo.isMailTo(params.getLinkUrl())) { | 405 if (MailTo.isMailTo(params.getLinkUrl())) { |
409 disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT); | 406 disabledOptions.add(ContextMenuItem.COPY_LINK_TEXT); |
410 disabledOptions.add(ContextMenuItem.COPY_LINK_ADDRESS); | 407 disabledOptions.add(ContextMenuItem.COPY_LINK_ADDRESS); |
411 if (!mDelegate.supportsSendEmailMessage()) { | 408 if (!mDelegate.supportsSendEmailMessage()) { |
412 disabledOptions.add(ContextMenuItem.SEND_MESSAGE); | 409 disabledOptions.add(ContextMenuItem.SEND_MESSAGE); |
413 } | 410 } |
414 if (TextUtils.isEmpty(MailTo.parse(params.getLinkUrl()).getTo()) | 411 if (TextUtils.isEmpty(MailTo.parse(params.getLinkUrl()).getTo()) |
415 || !mDelegate.supportsAddToContacts()) { | 412 || !mDelegate.supportsAddToContacts()) { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); | 474 disabledOptions.add(ContextMenuItem.OPEN_IN_OTHER_WINDOW); |
478 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); | 475 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_TAB); |
479 disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); | 476 disabledOptions.add(ContextMenuItem.OPEN_IN_INCOGNITO_TAB); |
480 disabledOptions.add(ContextMenuItem.SEARCH_BY_IMAGE); | 477 disabledOptions.add(ContextMenuItem.SEARCH_BY_IMAGE); |
481 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME); | 478 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME); |
482 } | 479 } |
483 | 480 |
484 if (mMode == CUSTOM_TAB_MODE) { | 481 if (mMode == CUSTOM_TAB_MODE) { |
485 try { | 482 try { |
486 URI uri = new URI(getUrl(params)); | 483 URI uri = new URI(getUrl(params)); |
487 if (UrlUtilities.isInternalScheme(uri)) { | 484 if (UrlUtilities.isInternalScheme(uri) || isEmptyUrl(getUrl(para
ms))) { |
488 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB); | 485 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB); |
489 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOGNITO
_TAB); | 486 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOGNITO
_TAB); |
490 disabledOptions.add(ContextMenuItem.OPEN_IN_BROWSER_ID); | 487 disabledOptions.add(ContextMenuItem.OPEN_IN_BROWSER_ID); |
491 } else if (ChromePreferenceManager.getInstance().getCachedChrome
DefaultBrowser()) { | 488 } else if (ChromePreferenceManager.getInstance().getCachedChrome
DefaultBrowser()) { |
492 disabledOptions.add(ContextMenuItem.OPEN_IN_BROWSER_ID); | 489 disabledOptions.add(ContextMenuItem.OPEN_IN_BROWSER_ID); |
493 if (!mDelegate.isIncognitoSupported()) { | 490 if (!mDelegate.isIncognitoSupported()) { |
494 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOG
NITO_TAB); | 491 disabledOptions.add(ContextMenuItem.OPEN_IN_CHROME_INCOG
NITO_TAB); |
495 } | 492 } |
496 } else { | 493 } else { |
497 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB); | 494 disabledOptions.add(ContextMenuItem.OPEN_IN_NEW_CHROME_TAB); |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 ContextMenuUma.record(params, ContextMenuUma.ACTION_OPEN_IN_BROWSER)
; | 597 ContextMenuUma.record(params, ContextMenuUma.ACTION_OPEN_IN_BROWSER)
; |
601 mDelegate.onOpenInDefaultBrowser(getUrl(params)); | 598 mDelegate.onOpenInDefaultBrowser(getUrl(params)); |
602 } else { | 599 } else { |
603 assert false; | 600 assert false; |
604 } | 601 } |
605 | 602 |
606 return true; | 603 return true; |
607 } | 604 } |
608 | 605 |
609 /** | 606 /** |
| 607 * Checks whether a url is empty or blank. |
| 608 * @param url The url need to be checked. |
| 609 * @return True if the url is empty or "about:blank". |
| 610 */ |
| 611 private boolean isEmptyUrl(String url) { |
| 612 if (TextUtils.isEmpty(url) || url.equals(ContentUrlConstants.ABOUT_BLANK
_DISPLAY_URL)) { |
| 613 return true; |
| 614 } |
| 615 return false; |
| 616 } |
| 617 |
| 618 /** |
610 * The valid url of a link is stored in the linkUrl of ContextMenuParams whi
le the | 619 * The valid url of a link is stored in the linkUrl of ContextMenuParams whi
le the |
611 * valid url of a image or video is stored in the srcUrl of ContextMenuParam
s. | 620 * valid url of a image or video is stored in the srcUrl of ContextMenuParam
s. |
612 * @param params The parameters used to decide the type of the content. | 621 * @param params The parameters used to decide the type of the content. |
613 */ | 622 */ |
614 private String getUrl(ContextMenuParams params) { | 623 private String getUrl(ContextMenuParams params) { |
615 if (params.isImage() || params.isVideo()) { | 624 if (params.isImage() || params.isVideo()) { |
616 return params.getSrcUrl(); | 625 return params.getSrcUrl(); |
617 } else { | 626 } else { |
618 return params.getLinkUrl(); | 627 return params.getLinkUrl(); |
619 } | 628 } |
620 } | 629 } |
621 } | 630 } |
OLD | NEW |