| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 7636dfe7101bd3f8bead57445336aa37760f9fe9..76ac9a2105c1d6f7e689a716ddfb33236fba9e0f 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -1709,6 +1709,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 (const auto& extension : *all_extensions.get()) {
|
| + if (!settings->IsPermissionSetAllowed(
|
| + extension->id(),
|
| + extension->permissions_data()->active_permissions())) {
|
| + extensions::PermissionsUpdater(profile()).RemovePermissions(
|
| + extension.get(),
|
| + settings->GetBlockedPermissions(extension->id()).get());
|
| + }
|
| + }
|
| +
|
| CheckManagementPolicy();
|
| }
|
|
|
|
|