| Index: chrome/browser/extensions/context_menu_matcher.cc
|
| diff --git a/chrome/browser/extensions/context_menu_matcher.cc b/chrome/browser/extensions/context_menu_matcher.cc
|
| index 0e7adbddbdfc61208f56cfd0c7d2a7e67421d05e..c4aecab2032973d782fcd8fe12af1e3347440d43 100644
|
| --- a/chrome/browser/extensions/context_menu_matcher.cc
|
| +++ b/chrome/browser/extensions/context_menu_matcher.cc
|
| @@ -31,6 +31,80 @@ void ContextMenuMatcher::AppendExtensionItems(
|
| const MenuItem::ExtensionKey& extension_key,
|
| const base::string16& selection_text,
|
| int* index) {
|
| + ContextMenuMatcher::AppendExtensionItemsImpl(extension_key,
|
| + selection_text,
|
| + index,
|
| + true);
|
| +}
|
| +
|
| +void ContextMenuMatcher::AppendExtensionItemsWithoutIcons(
|
| + const MenuItem::ExtensionKey& extension_key,
|
| + const base::string16& selection_text,
|
| + int* index) {
|
| + ContextMenuMatcher::AppendExtensionItemsImpl(extension_key,
|
| + selection_text,
|
| + index,
|
| + false);
|
| +}
|
| +
|
| +void ContextMenuMatcher::Clear() {
|
| + extension_item_map_.clear();
|
| + extension_menu_models_.clear();
|
| +}
|
| +
|
| +base::string16 ContextMenuMatcher::GetTopLevelContextMenuTitle(
|
| + const MenuItem::ExtensionKey& extension_key,
|
| + const base::string16& selection_text) {
|
| + const Extension* extension = NULL;
|
| + MenuItem::List items;
|
| + bool can_cross_incognito;
|
| + GetRelevantExtensionTopLevelItems(
|
| + extension_key, &extension, &can_cross_incognito, items);
|
| +
|
| + base::string16 title;
|
| +
|
| + if (items.empty() ||
|
| + items.size() > 1 ||
|
| + items[0]->type() != MenuItem::NORMAL) {
|
| + title = base::UTF8ToUTF16(extension->name());
|
| + } else {
|
| + MenuItem* item = items[0];
|
| + title = item->TitleWithReplacement(
|
| + selection_text, kMaxExtensionItemTitleLength);
|
| + }
|
| + return title;
|
| +}
|
| +
|
| +bool ContextMenuMatcher::IsCommandIdChecked(int command_id) const {
|
| + MenuItem* item = GetExtensionMenuItem(command_id);
|
| + if (!item)
|
| + return false;
|
| + return item->checked();
|
| +}
|
| +
|
| +bool ContextMenuMatcher::IsCommandIdEnabled(int command_id) const {
|
| + MenuItem* item = GetExtensionMenuItem(command_id);
|
| + if (!item)
|
| + return true;
|
| + return item->enabled();
|
| +}
|
| +
|
| +void ContextMenuMatcher::ExecuteCommand(int command_id,
|
| + content::WebContents* web_contents,
|
| + const content::ContextMenuParams& params) {
|
| + MenuItem* item = GetExtensionMenuItem(command_id);
|
| + if (!item)
|
| + return;
|
| +
|
| + MenuManager* manager = MenuManager::Get(profile_);
|
| + manager->ExecuteCommand(profile_, web_contents, params, item->id());
|
| +}
|
| +
|
| +void ContextMenuMatcher::AppendExtensionItemsImpl(
|
| + const MenuItem::ExtensionKey& extension_key,
|
| + const base::string16& selection_text,
|
| + int* index,
|
| + bool include_icons) {
|
| DCHECK_GE(*index, 0);
|
| int max_index =
|
| IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST - IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST;
|
| @@ -86,63 +160,11 @@ void ContextMenuMatcher::AppendExtensionItems(
|
| RecursivelyAppendExtensionItems(submenu_items, can_cross_incognito,
|
| selection_text, submenu, index);
|
| }
|
| - SetExtensionIcon(extension_key.extension_id);
|
| + if (include_icons)
|
| + SetExtensionIcon(extension_key.extension_id);
|
| }
|
| }
|
|
|
| -void ContextMenuMatcher::Clear() {
|
| - extension_item_map_.clear();
|
| - extension_menu_models_.clear();
|
| -}
|
| -
|
| -base::string16 ContextMenuMatcher::GetTopLevelContextMenuTitle(
|
| - const MenuItem::ExtensionKey& extension_key,
|
| - const base::string16& selection_text) {
|
| - const Extension* extension = NULL;
|
| - MenuItem::List items;
|
| - bool can_cross_incognito;
|
| - GetRelevantExtensionTopLevelItems(
|
| - extension_key, &extension, &can_cross_incognito, items);
|
| -
|
| - base::string16 title;
|
| -
|
| - if (items.empty() ||
|
| - items.size() > 1 ||
|
| - items[0]->type() != MenuItem::NORMAL) {
|
| - title = base::UTF8ToUTF16(extension->name());
|
| - } else {
|
| - MenuItem* item = items[0];
|
| - title = item->TitleWithReplacement(
|
| - selection_text, kMaxExtensionItemTitleLength);
|
| - }
|
| - return title;
|
| -}
|
| -
|
| -bool ContextMenuMatcher::IsCommandIdChecked(int command_id) const {
|
| - MenuItem* item = GetExtensionMenuItem(command_id);
|
| - if (!item)
|
| - return false;
|
| - return item->checked();
|
| -}
|
| -
|
| -bool ContextMenuMatcher::IsCommandIdEnabled(int command_id) const {
|
| - MenuItem* item = GetExtensionMenuItem(command_id);
|
| - if (!item)
|
| - return true;
|
| - return item->enabled();
|
| -}
|
| -
|
| -void ContextMenuMatcher::ExecuteCommand(int command_id,
|
| - content::WebContents* web_contents,
|
| - const content::ContextMenuParams& params) {
|
| - MenuItem* item = GetExtensionMenuItem(command_id);
|
| - if (!item)
|
| - return;
|
| -
|
| - MenuManager* manager = MenuManager::Get(profile_);
|
| - manager->ExecuteCommand(profile_, web_contents, params, item->id());
|
| -}
|
| -
|
| bool ContextMenuMatcher::GetRelevantExtensionTopLevelItems(
|
| const MenuItem::ExtensionKey& extension_key,
|
| const Extension** extension,
|
|
|