Index: chrome/browser/extensions/extension_context_menu_model.cc |
diff --git a/chrome/browser/extensions/extension_context_menu_model.cc b/chrome/browser/extensions/extension_context_menu_model.cc |
index 492f0289e593af770f8ea7cffb3aa117ad9a4678..281a7fe6d96474e2ea097f567ee04345e6a1712e 100644 |
--- a/chrome/browser/extensions/extension_context_menu_model.cc |
+++ b/chrome/browser/extensions/extension_context_menu_model.cc |
@@ -306,8 +306,22 @@ void ExtensionContextMenuModel::InitMenu(const Extension* extension, |
if (!is_component_ || extensions::OptionsPageInfo::HasOptionsPage(extension)) |
AddItemWithStringId(CONFIGURE, IDS_EXTENSIONS_OPTIONS_MENU_ITEM); |
- if (!is_component_) |
- AddItem(UNINSTALL, l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNINSTALL)); |
+ if (!is_component_) { |
+ extensions::ManagementPolicy* policy = |
+ extensions::ExtensionSystem::Get(profile_)->management_policy(); |
+ bool is_required_by_policy = |
+ !policy->UserMayModifySettings(extension, nullptr) || |
+ policy->MustRemainInstalled(extension, nullptr); |
+ int message_id = is_required_by_policy ? |
+ IDS_EXTENSIONS_INSTALLED_BY_ADMIN : IDS_EXTENSIONS_UNINSTALL; |
+ AddItem(UNINSTALL, l10n_util::GetStringUTF16(message_id)); |
+ if (is_required_by_policy) { |
+ int uninstall_index = GetIndexOfCommandId(UNINSTALL); |
+ SetIcon(uninstall_index, |
+ ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
+ IDR_CONTROLLED_SETTING_MANDATORY)); |
+ } |
+ } |
// Add a toggle visibility (show/hide) if the extension icon is shown on the |
// toolbar. |