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 |