Chromium Code Reviews| Index: chrome/browser/extensions/extension_service.cc |
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
| index f8245a56f3b091a404eb01a27badbf9469934199..30fb8d390fc448bb067a91913e275f4d8332b476 100644 |
| --- a/chrome/browser/extensions/extension_service.cc |
| +++ b/chrome/browser/extensions/extension_service.cc |
| @@ -888,8 +888,17 @@ void ExtensionService::EnableExtension(const std::string& extension_id) { |
| const Extension* extension = disabled_extensions_.GetByID(extension_id); |
| ManagementPolicy* policy = system_->management_policy(); |
| - if (extension && policy->MustRemainDisabled(extension, NULL, NULL)) { |
| + Extension::DisableReason reason; |
| + if (extension && policy->MustRemainDisabled(extension, &reason, NULL)) { |
| UMA_HISTOGRAM_COUNTS_100("Extensions.EnableDeniedByPolicy", 1); |
| + if (reason == Extension::DISABLE_NOT_VERIFIED) { |
| + // Try adding this id to the verified list, and if it succeeds we may |
| + // be able to enable it. |
| + extensions::ExtensionSystem::Get(profile_)->install_verifier()->Add( |
| + extension->id(), base::Bind(&ExtensionService::EnableOnVerifySuccess, |
| + base::Unretained(this), |
| + extension_id)); |
|
Finnur
2013/12/11 17:28:20
I'm worried this will slam the webstore with lots
asargent_no_longer_on_chrome
2013/12/11 21:26:05
I think this should only happen as a result of the
Finnur
2013/12/11 21:46:31
Does the only codepath through this function invol
|
| + } |
| return; |
| } |
| @@ -2788,6 +2797,17 @@ void ExtensionService::ManageBlacklist(const std::set<std::string>& updated) { |
| IdentifyAlertableExtensions(); |
| } |
| +void ExtensionService::EnableOnVerifySuccess(std::string extension_id, |
| + bool verify_success) { |
| + ManagementPolicy* policy = system_->management_policy(); |
| + const Extension* extension = GetExtensionById(extension_id, true); |
| + if (verify_success && !IsExtensionEnabled(extension_id) && |
| + !policy->MustRemainDisabled(extension, NULL, NULL)) { |
|
Finnur
2013/12/11 17:28:20
We're guaranteed to have this check in other locat
asargent_no_longer_on_chrome
2013/12/11 21:26:05
Yeah, I agree this is a little awkward. The proble
Finnur
2013/12/11 21:46:31
As discussed in person I had a concern that we hav
|
| + EnableExtension(extension_id); |
| + } |
|
Finnur
2013/12/11 17:28:20
nit: Single line if body, no braces.
asargent_no_longer_on_chrome
2013/12/11 21:26:05
Done.
|
| +} |
| + |
| + |
| void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { |
| update_observers_.AddObserver(observer); |
| } |