| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 56838a770a23cb6281f2cb998b9e7c3e149d636e..aba1834b279c71b75b0d248e5d8ec0f606b9dd7b 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();
|
| }
|
|
|
|
|