| Index: chrome/browser/renderer_context_menu/context_menu_content_type.cc
|
| ===================================================================
|
| --- chrome/browser/renderer_context_menu/context_menu_content_type.cc (revision 256983)
|
| +++ chrome/browser/renderer_context_menu/context_menu_content_type.cc (working copy)
|
| @@ -28,9 +28,8 @@
|
| }
|
|
|
| bool IsInternalResourcesURL(const GURL& url) {
|
| - if (!url.SchemeIs(content::kChromeUIScheme))
|
| - return false;
|
| - return url.host() == chrome::kChromeUISyncResourcesHost;
|
| + return url.SchemeIs(content::kChromeUIScheme) &&
|
| + (url.host() == chrome::kChromeUISyncResourcesHost);
|
| }
|
|
|
| } // namespace
|
| @@ -43,21 +42,12 @@
|
| source_web_contents_(WebContents::FromRenderFrameHost(render_frame_host)),
|
| profile_(Profile::FromBrowserContext(
|
| source_web_contents_->GetBrowserContext())),
|
| - supports_custom_items_(supports_custom_items),
|
| - has_custom_items_(false) {
|
| - Initialize();
|
| + supports_custom_items_(supports_custom_items) {
|
| }
|
|
|
| ContextMenuContentType::~ContextMenuContentType() {
|
| }
|
|
|
| -void ContextMenuContentType::Initialize() {
|
| - // Save it in |has_custom_items_| so we don't have to repeatedly call
|
| - // HasCustomItems().
|
| - has_custom_items_ = supports_custom_items_ &&
|
| - HasCustomItems(params_.custom_items);
|
| -}
|
| -
|
| const Extension* ContextMenuContentType::GetExtension() const {
|
| extensions::ExtensionSystem* system =
|
| extensions::ExtensionSystem::Get(profile_);
|
| @@ -69,22 +59,10 @@
|
| source_web_contents_->GetRenderViewHost());
|
| }
|
|
|
| -bool ContextMenuContentType::HasCustomItems(
|
| - const std::vector<content::MenuItem>& items) const {
|
| - for (size_t i = 0; i < items.size(); ++i) {
|
| - if (IDC_CONTENT_CONTEXT_CUSTOM_FIRST + items[i].action >=
|
| - IDC_CONTENT_CONTEXT_CUSTOM_LAST) {
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| - return false;
|
| -}
|
| -
|
| bool ContextMenuContentType::SupportsGroup(int group) {
|
| const bool has_selection = !params_.selection_text.empty();
|
|
|
| - if (has_custom_items_) {
|
| + if (supports_custom_items_ && !params_.custom_items.empty()) {
|
| if (group == ITEM_GROUP_CUSTOM)
|
| return true;
|
|
|
| @@ -111,7 +89,8 @@
|
|
|
| switch (group) {
|
| case ITEM_GROUP_CUSTOM:
|
| - return has_custom_items_;
|
| + return supports_custom_items_ && !params_.custom_items.empty();
|
| +
|
| case ITEM_GROUP_PAGE: {
|
| bool is_candidate =
|
| params_.media_type == WebContextMenuData::MediaTypeNone &&
|
| @@ -124,49 +103,68 @@
|
| !IsDevToolsURL(params_.page_url) &&
|
| !IsInternalResourcesURL(params_.page_url);
|
| }
|
| +
|
| case ITEM_GROUP_FRAME: {
|
| +
|
| bool page_group_supported = SupportsGroupInternal(ITEM_GROUP_PAGE);
|
| return page_group_supported && !params_.frame_url.is_empty() &&
|
| !IsDevToolsURL(params_.frame_url) &&
|
| !IsInternalResourcesURL(params_.page_url);
|
| }
|
| +
|
| case ITEM_GROUP_LINK:
|
| return has_link;
|
| +
|
| case ITEM_GROUP_MEDIA_IMAGE:
|
| return params_.media_type == WebContextMenuData::MediaTypeImage;
|
| +
|
| case ITEM_GROUP_SEARCHWEBFORIMAGE:
|
| // Image menu items imply search web for image item.
|
| return SupportsGroupInternal(ITEM_GROUP_MEDIA_IMAGE);
|
| +
|
| case ITEM_GROUP_MEDIA_VIDEO:
|
| return params_.media_type == WebContextMenuData::MediaTypeVideo;
|
| +
|
| case ITEM_GROUP_MEDIA_AUDIO:
|
| return params_.media_type == WebContextMenuData::MediaTypeAudio;
|
| +
|
| case ITEM_GROUP_MEDIA_PLUGIN:
|
| return params_.media_type == WebContextMenuData::MediaTypePlugin;
|
| +
|
| case ITEM_GROUP_MEDIA_FILE:
|
| -#ifdef WEBCONTEXT_MEDIATYPEFILE_DEFINED
|
| +#if defined(WEBCONTEXT_MEDIATYPEFILE_DEFINED)
|
| return params_.media_type == WebContextMenuData::MediaTypeFile;
|
| +#else
|
| + return false;
|
| #endif
|
| - return false;
|
| +
|
| case ITEM_GROUP_EDITABLE:
|
| return params_.is_editable;
|
| +
|
| case ITEM_GROUP_COPY:
|
| return !params_.is_editable && has_selection;
|
| +
|
| case ITEM_GROUP_SEARCH_PROVIDER:
|
| return has_selection;
|
| +
|
| case ITEM_GROUP_PRINT: {
|
| bool enable = has_selection && !IsDevToolsURL(params_.page_url);
|
| // Image menu items also imply print items.
|
| return enable || SupportsGroupInternal(ITEM_GROUP_MEDIA_IMAGE);
|
| }
|
| +
|
| case ITEM_GROUP_ALL_EXTENSION:
|
| return !IsDevToolsURL(params_.page_url);
|
| +
|
| case ITEM_GROUP_CURRENT_EXTENSION:
|
| return false;
|
| +
|
| case ITEM_GROUP_DEVELOPER:
|
| return true;
|
| +
|
| case ITEM_GROUP_DEVTOOLS_UNPACKED_EXT:
|
| return false;
|
| +
|
| case ITEM_GROUP_PRINT_PREVIEW:
|
| #if defined(ENABLE_FULL_PRINTING)
|
| return true;
|
| @@ -173,8 +171,9 @@
|
| #else
|
| return false;
|
| #endif
|
| +
|
| + default:
|
| + NOTREACHED();
|
| + return false;
|
| }
|
| -
|
| - NOTREACHED();
|
| - return false;
|
| }
|
|
|