| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 8f3e8c071d0bdc771c1bd65257aac66478a61922..002c3a5ea7999328ef205f710549d0cf3c0ef172 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -827,7 +827,7 @@ void ExtensionService::EnableExtension(const std::string& extension_id) {
|
| return;
|
|
|
| extension_prefs_->SetExtensionState(extension_id, Extension::ENABLED);
|
| - extension_prefs_->RemoveDisableReason(extension_id);
|
| + extension_prefs_->ClearDisableReasons(extension_id);
|
|
|
| const Extension* extension =
|
| GetExtensionByIdInternal(extension_id, false, true, false);
|
| @@ -872,7 +872,7 @@ void ExtensionService::DisableExtension(
|
| }
|
|
|
| extension_prefs_->SetExtensionState(extension_id, Extension::DISABLED);
|
| - extension_prefs_->SetDisableReason(extension_id, disable_reason);
|
| + extension_prefs_->AddDisableReason(extension_id, disable_reason);
|
|
|
| extension = GetExtensionByIdInternal(extension_id, true, false, true);
|
| if (!extension)
|
| @@ -1945,7 +1945,7 @@ void ExtensionService::AddExtension(const Extension* extension) {
|
| content::Source<Profile>(profile_),
|
| content::Details<const Extension>(extension));
|
|
|
| - if (extension_prefs_->GetDisableReason(extension->id()) ==
|
| + if (extension_prefs_->GetDisableReasons(extension->id()) &
|
| Extension::DISABLE_PERMISSIONS_INCREASE) {
|
| extensions::AddExtensionDisabledError(this, extension);
|
| }
|
| @@ -2018,8 +2018,7 @@ void ExtensionService::InitializePermissions(const Extension* extension) {
|
| bool is_extension_upgrade = old != NULL;
|
| bool is_privilege_increase = false;
|
| bool previously_disabled = false;
|
| - Extension::DisableReason disable_reason =
|
| - extension_prefs_->GetDisableReason(extension->id());
|
| + int disable_reasons = extension_prefs_->GetDisableReasons(extension->id());
|
|
|
| // We only need to compare the granted permissions to the current permissions
|
| // if the extension is not allowed to silently increase its permissions.
|
| @@ -2056,18 +2055,17 @@ void ExtensionService::InitializePermissions(const Extension* extension) {
|
| // disabled on permissions increase.
|
| previously_disabled = extension_prefs_->IsExtensionDisabled(old->id());
|
| if (previously_disabled) {
|
| - Extension::DisableReason reason = extension_prefs_->GetDisableReason(
|
| - old->id());
|
| - if (reason == Extension::DISABLE_UNKNOWN) {
|
| + int reasons = extension_prefs_->GetDisableReasons(old->id());
|
| + if (reasons == Extension::DISABLE_NONE) {
|
| // Initialize the reason for legacy disabled extensions from whether the
|
| // extension already exceeded granted permissions.
|
| if (extension_prefs_->DidExtensionEscalatePermissions(old->id()))
|
| - disable_reason = Extension::DISABLE_PERMISSIONS_INCREASE;
|
| + disable_reasons = Extension::DISABLE_PERMISSIONS_INCREASE;
|
| else
|
| - disable_reason = Extension::DISABLE_USER_ACTION;
|
| + disable_reasons = Extension::DISABLE_USER_ACTION;
|
| }
|
| } else {
|
| - disable_reason = Extension::DISABLE_PERMISSIONS_INCREASE;
|
| + disable_reasons = Extension::DISABLE_PERMISSIONS_INCREASE;
|
| }
|
|
|
| // To upgrade an extension in place, unload the old one and
|
| @@ -2085,7 +2083,9 @@ void ExtensionService::InitializePermissions(const Extension* extension) {
|
| }
|
| extension_prefs_->SetExtensionState(extension->id(), Extension::DISABLED);
|
| extension_prefs_->SetDidExtensionEscalatePermissions(extension, true);
|
| - extension_prefs_->SetDisableReason(extension->id(), disable_reason);
|
| + extension_prefs_->AddDisableReason(
|
| + extension->id(),
|
| + static_cast<Extension::DisableReason>(disable_reasons));
|
| }
|
| }
|
|
|
|
|