Chromium Code Reviews| 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; |
|
Peter Kasting
2014/03/18 02:43:58
(This whole confusing function was lazyboy's attem
|
| - } |
| - 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; |
| } |