Index: chrome/browser/managed_mode/managed_user_sync_service.cc |
diff --git a/chrome/browser/managed_mode/managed_user_sync_service.cc b/chrome/browser/managed_mode/managed_user_sync_service.cc |
index 3728e854e3c9a9359ad7360139822316753a2a32..77f478c6f3f9be985079a3fd96603518124d067c 100644 |
--- a/chrome/browser/managed_mode/managed_user_sync_service.cc |
+++ b/chrome/browser/managed_mode/managed_user_sync_service.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/managed_mode/managed_user_sync_service.h" |
#include "base/bind.h" |
+#include "base/callback.h" |
#include "base/values.h" |
#include "chrome/browser/prefs/scoped_user_pref_update.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -121,6 +122,23 @@ void ManagedUserSyncService::DeleteManagedUser(const std::string& id) { |
DCHECK(!sync_error.IsSet()); |
} |
+const DictionaryValue* ManagedUserSyncService::GetManagedUsers() { |
+ DCHECK(sync_processor_); |
+ return prefs_->GetDictionary(prefs::kManagedUsers); |
+} |
+ |
+void ManagedUserSyncService::GetManagedUsersAsync( |
+ const ManagedUsersCallback& callback) { |
+ // If we are already syncing, just run the callback. |
+ if (sync_processor_) { |
+ callback.Run(GetManagedUsers()); |
+ return; |
+ } |
+ |
+ // Otherwise queue it up until we start syncing. |
+ callbacks_.push_back(callback); |
+} |
+ |
void ManagedUserSyncService::Shutdown() { |
NotifyManagedUsersSyncingStopped(); |
} |
@@ -184,6 +202,8 @@ SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing( |
result.set_num_items_added(num_items_added); |
result.set_num_items_after_association(dict->size()); |
+ DispatchCallbacks(); |
+ |
return result; |
} |
@@ -287,3 +307,13 @@ void ManagedUserSyncService::NotifyManagedUsersSyncingStopped() { |
FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, |
OnManagedUsersSyncingStopped()); |
} |
+ |
+void ManagedUserSyncService::DispatchCallbacks() { |
+ const DictionaryValue* managed_users = |
+ prefs_->GetDictionary(prefs::kManagedUsers); |
+ for (std::vector<ManagedUsersCallback>::iterator it = callbacks_.begin(); |
+ it != callbacks_.end(); ++it) { |
+ it->Run(managed_users); |
+ } |
+ callbacks_.clear(); |
+} |