summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extensions_ui.cc
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-14 22:32:39 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-14 22:32:39 +0000
commit0c6da50c299be943b4c04a3953e0931734af7eaf (patch)
treeb5fa120b75591c1fa56a07232cf685ac1b2a8eb8 /chrome/browser/extensions/extensions_ui.cc
parenta7918784c2ac95844ae775be2fef06cd3efb092c (diff)
downloadchromium_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.cc25
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();