Index: chrome/browser/extensions/standard_management_policy_provider.cc |
diff --git a/chrome/browser/extensions/standard_management_policy_provider.cc b/chrome/browser/extensions/standard_management_policy_provider.cc |
index 0212257468d1e8f6870e3d71511f0ddeb430d3c5..02ac0854827706237ce6abf66959c86fdfd87da9 100644 |
--- a/chrome/browser/extensions/standard_management_policy_provider.cc |
+++ b/chrome/browser/extensions/standard_management_policy_provider.cc |
@@ -132,4 +132,24 @@ bool StandardManagementPolicyProvider::MustRemainEnabled( |
ExternalComponentLoader::IsModifiable(extension)); |
} |
+bool StandardManagementPolicyProvider::MustRemainInstalled( |
+ const Extension* extension, |
+ base::string16* error) const { |
+ ExtensionManagement::InstallationMode mode = |
+ settings_->GetInstallationMode(extension->id()); |
+ // Disallow removing of recommended extension, to avoid re-install it |
+ // again while policy is reload. But disabling of recommended extension is |
+ // allowed. |
+ if (mode == ExtensionManagement::INSTALLATION_FORCED || |
+ mode == ExtensionManagement::INSTALLATION_RECOMMENDED) { |
+ if (error) { |
+ *error = l10n_util::GetStringFUTF16( |
+ IDS_EXTENSION_CANT_UNINSTALL_POLICY_REQUIRED, |
+ base::UTF8ToUTF16(extension->name())); |
+ } |
+ return true; |
+ } |
+ return false; |
+} |
+ |
} // namespace extensions |