Chromium Code Reviews| Index: chrome/browser/extensions/extension_sync_service.cc |
| diff --git a/chrome/browser/extensions/extension_sync_service.cc b/chrome/browser/extensions/extension_sync_service.cc |
| index eb9d3ab69fe2491fd0a8a35edf9b1f14d6ecf234..175fa3f41e3c9a1aea43e8e42e27175583815dab 100644 |
| --- a/chrome/browser/extensions/extension_sync_service.cc |
| +++ b/chrome/browser/extensions/extension_sync_service.cc |
| @@ -31,6 +31,11 @@ |
| #include "sync/api/sync_change.h" |
| #include "sync/api/sync_error_factory.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 |
| + |
| using extensions::AppSorting; |
| using extensions::Extension; |
| using extensions::ExtensionPrefs; |
| @@ -140,6 +145,16 @@ void ExtensionSyncService::SyncExtensionChangeIfNeeded( |
| } |
| } |
| +bool ExtensionSyncService::HasPendingReenable( |
| + const std::string& id, |
| + const base::Version& version) const { |
| + auto it = pending_updates_.find(id); |
| + if (it == pending_updates_.end()) |
| + return false; |
| + const PendingUpdate& up = it->second; |
| + return up.version.Equals(version) && up.grant_permissions_and_reenable; |
|
Devlin
2015/10/16 02:40:24
Nit: up? Do you pu? Either way, I prefer short, f
Marc Treib
2015/10/16 09:22:20
Done.
|
| +} |
| + |
| syncer::SyncMergeResult ExtensionSyncService::MergeDataAndStartSyncing( |
| syncer::ModelType type, |
| const syncer::SyncDataList& initial_sync_data, |
| @@ -339,6 +354,14 @@ void ExtensionSyncService::ApplySyncData( |
| extension_service()->EnableExtension(id); |
| else if (extension_sync_data.supports_disable_reasons()) |
| reenable_after_update = true; |
| + |
| +#if defined(ENABLE_SUPERVISED_USERS) |
| + if (is_privilege_increase && version_compare_result < 0 && |
| + extensions::util::IsExtensionSupervised(extension, profile_)) { |
| + SupervisedUserServiceFactory::GetForProfile(profile_) |
| + ->AddExtensionUpdateRequest(id, *extension->version()); |
| + } |
| +#endif |
| } |
| } else { |
| // The extension is not installed yet. Set it to enabled; we'll check for |