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(); |
} |