diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-14 22:32:39 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-14 22:32:39 +0000 |
commit | 0c6da50c299be943b4c04a3953e0931734af7eaf (patch) | |
tree | b5fa120b75591c1fa56a07232cf685ac1b2a8eb8 /chrome/browser/extensions/extensions_ui.cc | |
parent | a7918784c2ac95844ae775be2fef06cd3efb092c (diff) | |
download | chromium_src-0c6da50c299be943b4c04a3953e0931734af7eaf.zip chromium_src-0c6da50c299be943b4c04a3953e0931734af7eaf.tar.gz chromium_src-0c6da50c299be943b4c04a3953e0931734af7eaf.tar.bz2 |
Disable an extension when it is upgraded to a version that requires more
permissions then before, and prompt the user to re-enable.
Incidentally, this required adding support for disabling extensions.
BUG=12140
TEST=covered by unit tests
Review URL: http://codereview.chromium.org/165414
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23480 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extensions_ui.cc')
-rw-r--r-- | chrome/browser/extensions/extensions_ui.cc | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/chrome/browser/extensions/extensions_ui.cc b/chrome/browser/extensions/extensions_ui.cc index 849fc8f..126fa05 100644 --- a/chrome/browser/extensions/extensions_ui.cc +++ b/chrome/browser/extensions/extensions_ui.cc @@ -77,6 +77,8 @@ void ExtensionsDOMHandler::RegisterMessages() { NewCallback(this, &ExtensionsDOMHandler::HandleInspectMessage)); dom_ui_->RegisterMessageCallback("reload", NewCallback(this, &ExtensionsDOMHandler::HandleReloadMessage)); + dom_ui_->RegisterMessageCallback("enable", + NewCallback(this, &ExtensionsDOMHandler::HandleEnableMessage)); dom_ui_->RegisterMessageCallback("uninstall", NewCallback(this, &ExtensionsDOMHandler::HandleUninstallMessage)); } @@ -93,7 +95,15 @@ void ExtensionsDOMHandler::HandleRequestExtensionsData(const Value* value) { // themes. if (!(*extension)->IsTheme()) { extensions_list->Append(CreateExtensionDetailValue( - *extension, GetActivePagesForExtension((*extension)->id()))); + *extension, GetActivePagesForExtension((*extension)->id()), true)); + } + } + extensions = extensions_service_->disabled_extensions(); + for (ExtensionList::const_iterator extension = extensions->begin(); + extension != extensions->end(); ++extension) { + if (!(*extension)->IsTheme()) { + extensions_list->Append(CreateExtensionDetailValue( + *extension, GetActivePagesForExtension((*extension)->id()), false)); } } results.Set(L"extensions", extensions_list); @@ -132,6 +142,15 @@ void ExtensionsDOMHandler::HandleReloadMessage(const Value* value) { extensions_service_->ReloadExtension(extension_id); } +void ExtensionsDOMHandler::HandleEnableMessage(const Value* value) { + CHECK(value->IsType(Value::TYPE_LIST)); + const ListValue* list = static_cast<const ListValue*>(value); + CHECK(list->GetSize() == 1); + std::string extension_id; + CHECK(list->GetString(0, &extension_id)); + extensions_service_->EnableExtension(extension_id); +} + void ExtensionsDOMHandler::HandleUninstallMessage(const Value* value) { CHECK(value->IsType(Value::TYPE_LIST)); const ListValue* list = static_cast<const ListValue*>(value); @@ -187,13 +206,15 @@ DictionaryValue* ExtensionsDOMHandler::CreateContentScriptDetailValue( // Static DictionaryValue* ExtensionsDOMHandler::CreateExtensionDetailValue( - const Extension *extension, const std::vector<ExtensionPage>& pages) { + const Extension *extension, const std::vector<ExtensionPage>& pages, + bool enabled) { DictionaryValue* extension_data = new DictionaryValue(); extension_data->SetString(L"id", extension->id()); extension_data->SetString(L"name", extension->name()); extension_data->SetString(L"description", extension->description()); extension_data->SetString(L"version", extension->version()->GetString()); + extension_data->SetBoolean(L"enabled", enabled); // Add list of content_script detail DictionaryValues ListValue *content_script_list = new ListValue(); |