| Index: chrome/browser/tab_contents/render_view_context_menu.cc
|
| diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
|
| index 7bc2c475935412e196fa18b0d09d344844127e64..bf682e01e966a43387cad50aa1c9959d90425bd4 100644
|
| --- a/chrome/browser/tab_contents/render_view_context_menu.cc
|
| +++ b/chrome/browser/tab_contents/render_view_context_menu.cc
|
| @@ -107,6 +107,8 @@ using content::SSLStatus;
|
| using content::UserMetricsAction;
|
| using content::WebContents;
|
| using extensions::Extension;
|
| +using extensions::MenuItem;
|
| +using extensions::MenuManager;
|
|
|
| namespace {
|
|
|
| @@ -281,37 +283,37 @@ static bool ExtensionPatternMatch(const URLPatternSet& patterns,
|
| // static
|
| bool RenderViewContextMenu::ExtensionContextAndPatternMatch(
|
| const content::ContextMenuParams& params,
|
| - ExtensionMenuItem::ContextList contexts,
|
| + MenuItem::ContextList contexts,
|
| const URLPatternSet& target_url_patterns) {
|
| bool has_link = !params.link_url.is_empty();
|
| bool has_selection = !params.selection_text.empty();
|
| bool in_frame = !params.frame_url.is_empty();
|
|
|
| - if (contexts.Contains(ExtensionMenuItem::ALL) ||
|
| - (has_selection && contexts.Contains(ExtensionMenuItem::SELECTION)) ||
|
| - (params.is_editable && contexts.Contains(ExtensionMenuItem::EDITABLE)) ||
|
| - (in_frame && contexts.Contains(ExtensionMenuItem::FRAME)))
|
| + if (contexts.Contains(MenuItem::ALL) ||
|
| + (has_selection && contexts.Contains(MenuItem::SELECTION)) ||
|
| + (params.is_editable && contexts.Contains(MenuItem::EDITABLE)) ||
|
| + (in_frame && contexts.Contains(MenuItem::FRAME)))
|
| return true;
|
|
|
| - if (has_link && contexts.Contains(ExtensionMenuItem::LINK) &&
|
| + if (has_link && contexts.Contains(MenuItem::LINK) &&
|
| ExtensionPatternMatch(target_url_patterns, params.link_url))
|
| return true;
|
|
|
| switch (params.media_type) {
|
| case WebContextMenuData::MediaTypeImage:
|
| - if (contexts.Contains(ExtensionMenuItem::IMAGE) &&
|
| + if (contexts.Contains(MenuItem::IMAGE) &&
|
| ExtensionPatternMatch(target_url_patterns, params.src_url))
|
| return true;
|
| break;
|
|
|
| case WebContextMenuData::MediaTypeVideo:
|
| - if (contexts.Contains(ExtensionMenuItem::VIDEO) &&
|
| + if (contexts.Contains(MenuItem::VIDEO) &&
|
| ExtensionPatternMatch(target_url_patterns, params.src_url))
|
| return true;
|
| break;
|
|
|
| case WebContextMenuData::MediaTypeAudio:
|
| - if (contexts.Contains(ExtensionMenuItem::AUDIO) &&
|
| + if (contexts.Contains(MenuItem::AUDIO) &&
|
| ExtensionPatternMatch(target_url_patterns, params.src_url))
|
| return true;
|
| break;
|
| @@ -325,7 +327,7 @@ bool RenderViewContextMenu::ExtensionContextAndPatternMatch(
|
| // backwards compatibility).
|
| if (!has_link && !has_selection && !params.is_editable &&
|
| params.media_type == WebContextMenuData::MediaTypeNone &&
|
| - contexts.Contains(ExtensionMenuItem::PAGE))
|
| + contexts.Contains(MenuItem::PAGE))
|
| return true;
|
|
|
| return false;
|
| @@ -338,15 +340,15 @@ static const GURL& GetDocumentURL(const content::ContextMenuParams& params) {
|
| // Given a list of items, returns the ones that match given the contents
|
| // of |params| and the profile.
|
| // static
|
| -ExtensionMenuItem::List RenderViewContextMenu::GetRelevantExtensionItems(
|
| - const ExtensionMenuItem::List& items,
|
| +MenuItem::List RenderViewContextMenu::GetRelevantExtensionItems(
|
| + const MenuItem::List& items,
|
| const content::ContextMenuParams& params,
|
| Profile* profile,
|
| bool can_cross_incognito) {
|
| - ExtensionMenuItem::List result;
|
| - for (ExtensionMenuItem::List::const_iterator i = items.begin();
|
| + MenuItem::List result;
|
| + for (MenuItem::List::const_iterator i = items.begin();
|
| i != items.end(); ++i) {
|
| - const ExtensionMenuItem* item = *i;
|
| + const MenuItem* item = *i;
|
|
|
| if (!ExtensionContextAndPatternMatch(params, item->contexts(),
|
| item->target_url_patterns()))
|
| @@ -366,7 +368,7 @@ ExtensionMenuItem::List RenderViewContextMenu::GetRelevantExtensionItems(
|
| void RenderViewContextMenu::AppendExtensionItems(
|
| const std::string& extension_id, int* index) {
|
| ExtensionService* service = profile_->GetExtensionService();
|
| - ExtensionMenuManager* manager = service->menu_manager();
|
| + MenuManager* manager = service->menu_manager();
|
| const Extension* extension = service->GetExtensionById(extension_id, false);
|
| DCHECK_GE(*index, 0);
|
| int max_index =
|
| @@ -375,11 +377,11 @@ void RenderViewContextMenu::AppendExtensionItems(
|
| return;
|
|
|
| // Find matching items.
|
| - const ExtensionMenuItem::List* all_items = manager->MenuItems(extension_id);
|
| + const MenuItem::List* all_items = manager->MenuItems(extension_id);
|
| if (!all_items || all_items->empty())
|
| return;
|
| bool can_cross_incognito = service->CanCrossIncognito(extension);
|
| - ExtensionMenuItem::List items =
|
| + MenuItem::List items =
|
| GetRelevantExtensionItems(*all_items, params_, profile_,
|
| can_cross_incognito);
|
| if (items.empty())
|
| @@ -396,12 +398,12 @@ void RenderViewContextMenu::AppendExtensionItems(
|
| // checkbox item because we are going to put the extension icon next to it).
|
| // If they have more than that, we automatically push them into a submenu.
|
| string16 title;
|
| - ExtensionMenuItem::List submenu_items;
|
| - if (items.size() > 1 || items[0]->type() != ExtensionMenuItem::NORMAL) {
|
| + MenuItem::List submenu_items;
|
| + if (items.size() > 1 || items[0]->type() != MenuItem::NORMAL) {
|
| title = UTF8ToUTF16(extension->name());
|
| submenu_items = items;
|
| } else {
|
| - ExtensionMenuItem* item = items[0];
|
| + MenuItem* item = items[0];
|
| extension_item_map_[menu_id] = item->id();
|
| title = item->TitleWithReplacement(PrintableSelectionText(),
|
| kMaxExtensionItemTitleLength);
|
| @@ -423,24 +425,24 @@ void RenderViewContextMenu::AppendExtensionItems(
|
| }
|
|
|
| void RenderViewContextMenu::RecursivelyAppendExtensionItems(
|
| - const ExtensionMenuItem::List& items,
|
| + const MenuItem::List& items,
|
| bool can_cross_incognito,
|
| ui::SimpleMenuModel* menu_model,
|
| int* index) {
|
| string16 selection_text = PrintableSelectionText();
|
| - ExtensionMenuItem::Type last_type = ExtensionMenuItem::NORMAL;
|
| + MenuItem::Type last_type = MenuItem::NORMAL;
|
| int radio_group_id = 1;
|
|
|
| - for (ExtensionMenuItem::List::const_iterator i = items.begin();
|
| + for (MenuItem::List::const_iterator i = items.begin();
|
| i != items.end(); ++i) {
|
| - ExtensionMenuItem* item = *i;
|
| + MenuItem* item = *i;
|
|
|
| // If last item was of type radio but the current one isn't, auto-insert
|
| // a separator. The converse case is handled below.
|
| - if (last_type == ExtensionMenuItem::RADIO &&
|
| - item->type() != ExtensionMenuItem::RADIO) {
|
| + if (last_type == MenuItem::RADIO &&
|
| + item->type() != MenuItem::RADIO) {
|
| menu_model->AddSeparator();
|
| - last_type = ExtensionMenuItem::SEPARATOR;
|
| + last_type = MenuItem::SEPARATOR;
|
| }
|
|
|
| int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++;
|
| @@ -449,8 +451,8 @@ void RenderViewContextMenu::RecursivelyAppendExtensionItems(
|
| extension_item_map_[menu_id] = item->id();
|
| string16 title = item->TitleWithReplacement(selection_text,
|
| kMaxExtensionItemTitleLength);
|
| - if (item->type() == ExtensionMenuItem::NORMAL) {
|
| - ExtensionMenuItem::List children =
|
| + if (item->type() == MenuItem::NORMAL) {
|
| + MenuItem::List children =
|
| GetRelevantExtensionItems(item->children(), params_,
|
| profile_, can_cross_incognito);
|
| if (children.empty()) {
|
| @@ -462,21 +464,21 @@ void RenderViewContextMenu::RecursivelyAppendExtensionItems(
|
| RecursivelyAppendExtensionItems(children, can_cross_incognito,
|
| submenu, index);
|
| }
|
| - } else if (item->type() == ExtensionMenuItem::CHECKBOX) {
|
| + } else if (item->type() == MenuItem::CHECKBOX) {
|
| menu_model->AddCheckItem(menu_id, title);
|
| - } else if (item->type() == ExtensionMenuItem::RADIO) {
|
| + } else if (item->type() == MenuItem::RADIO) {
|
| if (i != items.begin() &&
|
| - last_type != ExtensionMenuItem::RADIO) {
|
| + last_type != MenuItem::RADIO) {
|
| radio_group_id++;
|
|
|
| // Auto-append a separator if needed.
|
| - if (last_type != ExtensionMenuItem::SEPARATOR)
|
| + if (last_type != MenuItem::SEPARATOR)
|
| menu_model->AddSeparator();
|
| }
|
|
|
| menu_model->AddRadioItem(menu_id, title, radio_group_id);
|
| - } else if (item->type() == ExtensionMenuItem::SEPARATOR) {
|
| - if (i != items.begin() && last_type != ExtensionMenuItem::SEPARATOR) {
|
| + } else if (item->type() == MenuItem::SEPARATOR) {
|
| + if (i != items.begin() && last_type != MenuItem::SEPARATOR) {
|
| menu_model->AddSeparator();
|
| }
|
| }
|
| @@ -486,7 +488,7 @@ void RenderViewContextMenu::RecursivelyAppendExtensionItems(
|
|
|
| void RenderViewContextMenu::SetExtensionIcon(const std::string& extension_id) {
|
| ExtensionService* service = profile_->GetExtensionService();
|
| - ExtensionMenuManager* menu_manager = service->menu_manager();
|
| + MenuManager* menu_manager = service->menu_manager();
|
|
|
| int index = menu_model_.GetItemCount() - 1;
|
| DCHECK_GE(index, 0);
|
| @@ -503,7 +505,7 @@ void RenderViewContextMenu::AppendAllExtensionItems() {
|
| ExtensionService* service = profile_->GetExtensionService();
|
| if (!service)
|
| return; // In unit-tests, we may not have an ExtensionService.
|
| - ExtensionMenuManager* menu_manager = service->menu_manager();
|
| + MenuManager* menu_manager = service->menu_manager();
|
|
|
| // Get a list of extension id's that have context menu items, and sort it by
|
| // the extension's name.
|
| @@ -1058,13 +1060,12 @@ void RenderViewContextMenu::AppendProtocolHandlerSubMenu() {
|
| &protocol_handler_submenu_model_);
|
| }
|
|
|
| -ExtensionMenuItem* RenderViewContextMenu::GetExtensionMenuItem(int id) const {
|
| - ExtensionMenuManager* manager =
|
| - profile_->GetExtensionService()->menu_manager();
|
| - std::map<int, ExtensionMenuItem::Id>::const_iterator i =
|
| +MenuItem* RenderViewContextMenu::GetExtensionMenuItem(int id) const {
|
| + MenuManager* manager = profile_->GetExtensionService()->menu_manager();
|
| + std::map<int, MenuItem::Id>::const_iterator i =
|
| extension_item_map_.find(id);
|
| if (i != extension_item_map_.end()) {
|
| - ExtensionMenuItem* item = manager->GetItemById(i->second);
|
| + MenuItem* item = manager->GetItemById(i->second);
|
| if (item)
|
| return item;
|
| }
|
| @@ -1110,7 +1111,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
|
| // Extension items.
|
| if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST &&
|
| id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) {
|
| - ExtensionMenuItem* item = GetExtensionMenuItem(id);
|
| + MenuItem* item = GetExtensionMenuItem(id);
|
| // If this is the parent menu item, it is always enabled.
|
| if (!item)
|
| return true;
|
| @@ -1416,7 +1417,7 @@ bool RenderViewContextMenu::IsCommandIdChecked(int id) const {
|
| // Extension items.
|
| if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST &&
|
| id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) {
|
| - ExtensionMenuItem* item = GetExtensionMenuItem(id);
|
| + MenuItem* item = GetExtensionMenuItem(id);
|
| if (item)
|
| return item->checked();
|
| else
|
| @@ -1475,9 +1476,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
|
| // Process extension menu items.
|
| if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST &&
|
| id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) {
|
| - ExtensionMenuManager* manager =
|
| - profile_->GetExtensionService()->menu_manager();
|
| - std::map<int, ExtensionMenuItem::Id>::const_iterator i =
|
| + MenuManager* manager = profile_->GetExtensionService()->menu_manager();
|
| + std::map<int, MenuItem::Id>::const_iterator i =
|
| extension_item_map_.find(id);
|
| if (i != extension_item_map_.end()) {
|
| manager->ExecuteCommand(profile_, source_web_contents_, params_,
|
|
|