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 d668e7a00ca381af2517afa27c3be96d7d578a02..c89b85baf51e81a3b7dbc81bcb582f30d526ecda 100644 |
--- a/chrome/browser/tab_contents/render_view_context_menu.cc |
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc |
@@ -392,36 +392,42 @@ void RenderViewContextMenu::AppendExtensionItems( |
if (*index == 0 && menu_model_.GetItemCount()) |
menu_model_.AddSeparator(); |
- int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++; |
- |
- // Extensions are only allowed one top-level slot (and it can't be a radio or |
- // checkbox item because we are going to put the extension icon next to it). |
+ // Extensions (other than platform apps) are only allowed one top-level slot |
+ // (and it can't be a radio or 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; |
- MenuItem::List submenu_items; |
- if (items.size() > 1 || items[0]->type() != MenuItem::NORMAL) { |
- title = UTF8ToUTF16(extension->name()); |
- submenu_items = items; |
+ if (extension->is_platform_app()) { |
+ RecursivelyAppendExtensionItems(items, can_cross_incognito, &menu_model_, |
+ index); |
} else { |
- MenuItem* item = items[0]; |
- extension_item_map_[menu_id] = item->id(); |
- title = item->TitleWithReplacement(PrintableSelectionText(), |
+ int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++; |
+ string16 title; |
+ MenuItem::List submenu_items; |
+ |
+ if (items.size() > 1 || items[0]->type() != MenuItem::NORMAL) { |
+ title = UTF8ToUTF16(extension->name()); |
+ submenu_items = items; |
+ } else { |
+ MenuItem* item = items[0]; |
+ extension_item_map_[menu_id] = item->id(); |
+ title = item->TitleWithReplacement(PrintableSelectionText(), |
kMaxExtensionItemTitleLength); |
- submenu_items = GetRelevantExtensionItems(item->children(), params_, |
+ submenu_items = GetRelevantExtensionItems(item->children(), params_, |
profile_, can_cross_incognito); |
- } |
+ } |
- // Now add our item(s) to the menu_model_. |
- if (submenu_items.empty()) { |
- menu_model_.AddItem(menu_id, title); |
- } else { |
- ui::SimpleMenuModel* submenu = new ui::SimpleMenuModel(this); |
- extension_menu_models_.push_back(submenu); |
- menu_model_.AddSubMenu(menu_id, title, submenu); |
- RecursivelyAppendExtensionItems(submenu_items, can_cross_incognito, submenu, |
- index); |
+ // Now add our item(s) to the menu_model_. |
+ if (submenu_items.empty()) { |
+ menu_model_.AddItem(menu_id, title); |
+ } else { |
+ ui::SimpleMenuModel* submenu = new ui::SimpleMenuModel(this); |
+ extension_menu_models_.push_back(submenu); |
+ menu_model_.AddSubMenu(menu_id, title, submenu); |
+ RecursivelyAppendExtensionItems(submenu_items, can_cross_incognito, |
+ submenu, index); |
+ } |
+ SetExtensionIcon(extension_id); |
} |
- SetExtensionIcon(extension_id); |
} |
void RenderViewContextMenu::RecursivelyAppendExtensionItems( |