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 899fa2e1e7368b7893ad058acd6501afc49fa610..f62764f63d1ed71d57eb683ffb2d1b85d07c271d 100644 |
| --- a/chrome/browser/extensions/extension_service.cc |
| +++ b/chrome/browser/extensions/extension_service.cc |
| @@ -1706,6 +1706,23 @@ void ExtensionService::OnExtensionInstalled( |
| void ExtensionService::OnExtensionManagementSettingsChanged() { |
| error_controller_->ShowErrorIfNeeded(); |
| + |
| + // Revokes blocked permissions from active_permissions for all extensions. |
| + extensions::ExtensionManagement* settings = |
| + extensions::ExtensionManagementFactory::GetForBrowserContext(profile()); |
| + CHECK(settings); |
| + scoped_ptr<ExtensionSet> all_extensions( |
| + registry_->GenerateInstalledExtensionsSet()); |
| + for (auto extension : *all_extensions.get()) { |
|
Joao da Silva
2014/10/15 14:39:26
const auto&
binjin
2014/10/16 18:13:58
Done.
|
| + if (!settings->IsPermissionSetAllowed( |
| + extension->id(), |
| + extension->permissions_data()->active_permissions())) { |
| + extensions::PermissionsUpdater(profile()).RemovePermissions( |
|
Joao da Silva
2014/10/15 14:39:26
What happens in this case? If an extension is alre
binjin
2014/10/16 18:13:58
CheckManagementPolicy() will be called immediately
|
| + extension.get(), |
| + settings->GetBlockedPermissions(extension->id()).get()); |
| + } |
| + } |
| + |
| CheckManagementPolicy(); |
| } |