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 3708493cb3b45db6b09a9ac4b75290f1f201157b..adf572587109a3fa4f5336bf81a460c15ae47c5e 100644 |
| --- a/chrome/browser/extensions/extension_service.cc |
| +++ b/chrome/browser/extensions/extension_service.cc |
| @@ -84,6 +84,11 @@ |
| #include "extensions/common/permissions/permission_message_provider.h" |
| #include "extensions/common/permissions/permissions_data.h" |
| +#if defined(ENABLE_SUPERVISED_USERS) |
| +#include "chrome/browser/supervised_user/supervised_user_service.h" |
| +#include "chrome/browser/supervised_user/supervised_user_service_factory.h" |
| +#endif |
| + |
| #if defined(OS_CHROMEOS) |
| #include "chrome/browser/chromeos/extensions/install_limiter.h" |
| #include "storage/browser/fileapi/file_system_backend.h" |
| @@ -110,13 +115,18 @@ using extensions::SharedModuleInfo; |
| using extensions::SharedModuleService; |
| using extensions::UnloadedExtensionInfo; |
| -namespace errors = extensions::manifest_errors; |
| - |
| namespace { |
| // Wait this many seconds after an extensions becomes idle before updating it. |
| const int kUpdateIdleDelay = 5; |
| +#if defined(ENABLE_SUPERVISED_USERS) |
| +// Callback for SupervisedUserService::AddExtensionUpdateRequest. |
| +void ExtensionUpdateRequestSent(const std::string& id, bool success) { |
| + LOG_IF(WARNING, !success) << "Failed sending update request for " << id; |
| +} |
| +#endif |
| + |
| } // namespace |
| // ExtensionService. |
| @@ -1660,6 +1670,19 @@ void ExtensionService::CheckPermissionsIncrease(const Extension* extension, |
| } |
| extension_prefs_->SetExtensionState(extension->id(), Extension::DISABLED); |
| extension_prefs_->SetDidExtensionEscalatePermissions(extension, true); |
| + |
| +#if defined(ENABLE_SUPERVISED_USERS) |
|
not at google - send to devlin
2015/03/03 17:51:15
What is stopping the existing logic - wherever tha
Marc Treib
2015/03/04 11:15:38
I assume you meant the re-enable dialog? All the U
not at google - send to devlin
2015/03/04 17:43:36
Yeah sorry, I meant the re-enable.
It would be so
|
| + // If a custodian-installed extension is disabled for a supervised user due |
| + // to a permissions increase, send a request to the custodian, since the |
| + // supervised user itself can't re-enable the extension. |
| + if (extensions::util::IsExtensionSupervised(extension, profile_)) { |
| + SupervisedUserService* supervised_user_service = |
| + SupervisedUserServiceFactory::GetForProfile(profile_); |
| + supervised_user_service->AddExtensionUpdateRequest( |
| + extension->id(), |
| + base::Bind(ExtensionUpdateRequestSent, extension->id())); |
| + } |
| +#endif |
| } |
| if (disable_reasons != Extension::DISABLE_NONE) { |
| extension_prefs_->AddDisableReason( |