| Index: chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| index b56fbe0297478c6ec3c5d455c41291947129aeda..7f949360938782f5d185b463791264c76f729f2b 100644
|
| --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
|
| @@ -241,8 +241,14 @@ base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
|
| !management_policy_->UserMayModifySettings(extension, NULL);
|
| extension_data->SetBoolean("managedInstall", managed_install);
|
|
|
| - // We should not get into a state where both are true.
|
| - DCHECK(!managed_install || !suspicious_install);
|
| + bool recommended_install =
|
| + !managed_install &&
|
| + management_policy_->MustRemainInstalled(extension, NULL);
|
| + extension_data->SetBoolean("recommendedInstall", recommended_install);
|
| +
|
| + // Suspicious install should always be mutually exclusive to managed and/or
|
| + // recommended install.
|
| + DCHECK(!(managed_install || recommended_install) || !suspicious_install);
|
|
|
| GURL icon =
|
| ExtensionIconSource::GetIconURL(extension,
|
| @@ -316,7 +322,9 @@ base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue(
|
| extension_service_->GetBrowserContext()));
|
|
|
| base::string16 location_text;
|
| - if (Manifest::IsPolicyLocation(extension->location())) {
|
| + if (Manifest::IsPolicyLocation(extension->location()) ||
|
| + (extension->location() == Manifest::EXTERNAL_PREF_DOWNLOAD &&
|
| + recommended_install)) {
|
| location_text = l10n_util::GetStringUTF16(
|
| IDS_OPTIONS_INSTALL_LOCATION_ENTERPRISE);
|
| } else if (extension->location() == Manifest::INTERNAL &&
|
| @@ -542,6 +550,8 @@ void ExtensionSettingsHandler::GetLocalizedValues(
|
| l10n_util::GetStringUTF16(IDS_EXTENSIONS_VISIT_WEBSTORE));
|
| source->AddString("extensionSettingsPolicyControlled",
|
| l10n_util::GetStringUTF16(IDS_EXTENSIONS_POLICY_CONTROLLED));
|
| + source->AddString("extensionSettingsPolicyRecommeneded",
|
| + l10n_util::GetStringUTF16(IDS_EXTENSIONS_POLICY_RECOMMENDED));
|
| source->AddString("extensionSettingsDependentExtensions",
|
| l10n_util::GetStringUTF16(IDS_EXTENSIONS_DEPENDENT_EXTENSIONS));
|
| source->AddString("extensionSettingsSupervisedUser",
|
| @@ -1146,7 +1156,8 @@ void ExtensionSettingsHandler::HandleUninstallMessage(
|
| if (!extension)
|
| return;
|
|
|
| - if (!management_policy_->UserMayModifySettings(extension, NULL)) {
|
| + if (!management_policy_->UserMayModifySettings(extension, NULL) ||
|
| + management_policy_->MustRemainInstalled(extension, NULL)) {
|
| LOG(ERROR) << "An attempt was made to uninstall an extension that is "
|
| << "non-usermanagable. Extension id : " << extension->id();
|
| return;
|
|
|