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 21c798dd96b3351624beacf9d912de211114cea3..c03377e8d8e3765f5e52e08ee4c92465af24acfe 100644 |
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
@@ -345,6 +345,10 @@ void ExtensionSettingsHandler::GetLocalizedValues( |
l10n_util::GetStringUTF16(IDS_EXTENSIONS_SHOW_DETAILS)); |
source->AddString("extensionSettingsHideDetails", |
l10n_util::GetStringUTF16(IDS_EXTENSIONS_HIDE_DETAILS)); |
+ source->AddString("unlockButton", |
+ l10n_util::GetStringUTF16(IDS_EXTENSIONS_UNLOCK_BUTTON)); |
+ source->AddString("lockButton", |
+ l10n_util::GetStringUTF16(IDS_EXTENSIONS_LOCK_BUTTON)); |
// TODO(estade): comb through the above strings to find ones no longer used in |
// uber extensions. |
@@ -370,6 +374,12 @@ void ExtensionSettingsHandler::RegisterMessages() { |
extension_service_->profile())->management_policy(); |
} |
+ web_ui()->RegisterMessageCallback("authenticate", |
+ base::Bind(&ExtensionSettingsHandler::DoAuthenticate, |
+ base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback("endAuthentication", |
+ base::Bind(&ExtensionSettingsHandler::EndAuthentication, |
+ base::Unretained(this))); |
web_ui()->RegisterMessageCallback("extensionSettingsRequestExtensionsData", |
base::Bind(&ExtensionSettingsHandler::HandleRequestExtensionsData, |
base::Unretained(this))); |
@@ -537,6 +547,21 @@ void ExtensionSettingsHandler::ReloadUnpackedExtensions() { |
} |
} |
+void ExtensionSettingsHandler::DoAuthenticate(const ListValue* args) { |
+ ManagedUserService* service = ManagedUserServiceFactory::GetForProfile( |
+ Profile::FromWebUI(web_ui())); |
+ // TODO(akuegel): Show the managed user passphrase dialog for authentication. |
+ service->SetElevated(true); |
+ HandleRequestExtensionsData(NULL); |
+} |
+ |
+void ExtensionSettingsHandler::EndAuthentication(const ListValue* args) { |
+ ManagedUserService* service = ManagedUserServiceFactory::GetForProfile( |
+ Profile::FromWebUI(web_ui())); |
+ service->SetElevated(false); |
+ HandleRequestExtensionsData(NULL); |
+} |
+ |
void ExtensionSettingsHandler::HandleRequestExtensionsData( |
const ListValue* args) { |
DictionaryValue results; |
@@ -582,12 +607,16 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData( |
} |
results.Set("extensions", extensions_list); |
- bool is_managed = |
- ManagedUserServiceFactory::GetForProfile(profile)->ProfileIsManaged(); |
+ ManagedUserService* service = |
+ ManagedUserServiceFactory::GetForProfile(profile); |
+ |
+ bool is_managed = service->ProfileIsManaged(); |
+ bool is_elevated = service->IsElevated(); |
bool developer_mode = |
- !is_managed && |
+ (!is_managed || is_elevated) && |
profile->GetPrefs()->GetBoolean(prefs::kExtensionsUIDeveloperMode); |
results.SetBoolean("profileIsManaged", is_managed); |
+ results.SetBoolean("profileIsElevated", service->IsElevated()); |
results.SetBoolean("developerMode", developer_mode); |
// Check to see if we have any wiped out extensions. |