| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/managed_mode/managed_user_sync_service.h" | 5 #include "chrome/browser/managed_mode/managed_user_sync_service.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" |
| 8 #include "base/values.h" | 9 #include "base/values.h" |
| 9 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 10 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
| 11 #include "chrome/common/pref_names.h" | 12 #include "chrome/common/pref_names.h" |
| 12 #include "components/user_prefs/pref_registry_syncable.h" | 13 #include "components/user_prefs/pref_registry_syncable.h" |
| 13 #include "sync/api/sync_change.h" | 14 #include "sync/api/sync_change.h" |
| 14 #include "sync/api/sync_data.h" | 15 #include "sync/api/sync_data.h" |
| 15 #include "sync/api/sync_error.h" | 16 #include "sync/api/sync_error.h" |
| 16 #include "sync/api/sync_error_factory.h" | 17 #include "sync/api/sync_error_factory.h" |
| 17 #include "sync/api/sync_merge_result.h" | 18 #include "sync/api/sync_merge_result.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 SyncChangeList change_list; | 115 SyncChangeList change_list; |
| 115 change_list.push_back(SyncChange( | 116 change_list.push_back(SyncChange( |
| 116 FROM_HERE, | 117 FROM_HERE, |
| 117 SyncChange::ACTION_DELETE, | 118 SyncChange::ACTION_DELETE, |
| 118 SyncData::CreateLocalDelete(id, MANAGED_USERS))); | 119 SyncData::CreateLocalDelete(id, MANAGED_USERS))); |
| 119 SyncError sync_error = | 120 SyncError sync_error = |
| 120 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); | 121 sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); |
| 121 DCHECK(!sync_error.IsSet()); | 122 DCHECK(!sync_error.IsSet()); |
| 122 } | 123 } |
| 123 | 124 |
| 125 const DictionaryValue* ManagedUserSyncService::GetManagedUsers() { |
| 126 DCHECK(sync_processor_); |
| 127 return prefs_->GetDictionary(prefs::kManagedUsers); |
| 128 } |
| 129 |
| 130 void ManagedUserSyncService::GetManagedUsersAsync( |
| 131 const ManagedUsersCallback& callback) { |
| 132 // If we are already syncing, just run the callback. |
| 133 if (sync_processor_) { |
| 134 callback.Run(GetManagedUsers()); |
| 135 return; |
| 136 } |
| 137 |
| 138 // Otherwise queue it up until we start syncing. |
| 139 callbacks_.push_back(callback); |
| 140 } |
| 141 |
| 124 void ManagedUserSyncService::Shutdown() { | 142 void ManagedUserSyncService::Shutdown() { |
| 125 NotifyManagedUsersSyncingStopped(); | 143 NotifyManagedUsersSyncingStopped(); |
| 126 } | 144 } |
| 127 | 145 |
| 128 SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing( | 146 SyncMergeResult ManagedUserSyncService::MergeDataAndStartSyncing( |
| 129 ModelType type, | 147 ModelType type, |
| 130 const SyncDataList& initial_sync_data, | 148 const SyncDataList& initial_sync_data, |
| 131 scoped_ptr<SyncChangeProcessor> sync_processor, | 149 scoped_ptr<SyncChangeProcessor> sync_processor, |
| 132 scoped_ptr<SyncErrorFactory> error_handler) { | 150 scoped_ptr<SyncErrorFactory> error_handler) { |
| 133 DCHECK_EQ(MANAGED_USERS, type); | 151 DCHECK_EQ(MANAGED_USERS, type); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 change_list.push_back( | 195 change_list.push_back( |
| 178 SyncChange(FROM_HERE, SyncChange::ACTION_ADD, | 196 SyncChange(FROM_HERE, SyncChange::ACTION_ADD, |
| 179 CreateLocalSyncData(it.key(), name, acknowledged, master_key))); | 197 CreateLocalSyncData(it.key(), name, acknowledged, master_key))); |
| 180 } | 198 } |
| 181 result.set_error(sync_processor_->ProcessSyncChanges(FROM_HERE, change_list)); | 199 result.set_error(sync_processor_->ProcessSyncChanges(FROM_HERE, change_list)); |
| 182 | 200 |
| 183 result.set_num_items_modified(num_items_modified); | 201 result.set_num_items_modified(num_items_modified); |
| 184 result.set_num_items_added(num_items_added); | 202 result.set_num_items_added(num_items_added); |
| 185 result.set_num_items_after_association(dict->size()); | 203 result.set_num_items_after_association(dict->size()); |
| 186 | 204 |
| 205 DispatchCallbacks(); |
| 206 |
| 187 return result; | 207 return result; |
| 188 } | 208 } |
| 189 | 209 |
| 190 void ManagedUserSyncService::StopSyncing(ModelType type) { | 210 void ManagedUserSyncService::StopSyncing(ModelType type) { |
| 191 DCHECK_EQ(MANAGED_USERS, type); | 211 DCHECK_EQ(MANAGED_USERS, type); |
| 192 // The observers may want to change the Sync data, so notify them before | 212 // The observers may want to change the Sync data, so notify them before |
| 193 // resetting the |sync_processor_|. | 213 // resetting the |sync_processor_|. |
| 194 NotifyManagedUsersSyncingStopped(); | 214 NotifyManagedUsersSyncingStopped(); |
| 195 sync_processor_.reset(); | 215 sync_processor_.reset(); |
| 196 error_handler_.reset(); | 216 error_handler_.reset(); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 void ManagedUserSyncService::NotifyManagedUserAcknowledged( | 300 void ManagedUserSyncService::NotifyManagedUserAcknowledged( |
| 281 const std::string& managed_user_id) { | 301 const std::string& managed_user_id) { |
| 282 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, | 302 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, |
| 283 OnManagedUserAcknowledged(managed_user_id)); | 303 OnManagedUserAcknowledged(managed_user_id)); |
| 284 } | 304 } |
| 285 | 305 |
| 286 void ManagedUserSyncService::NotifyManagedUsersSyncingStopped() { | 306 void ManagedUserSyncService::NotifyManagedUsersSyncingStopped() { |
| 287 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, | 307 FOR_EACH_OBSERVER(ManagedUserSyncServiceObserver, observers_, |
| 288 OnManagedUsersSyncingStopped()); | 308 OnManagedUsersSyncingStopped()); |
| 289 } | 309 } |
| 310 |
| 311 void ManagedUserSyncService::DispatchCallbacks() { |
| 312 const DictionaryValue* managed_users = |
| 313 prefs_->GetDictionary(prefs::kManagedUsers); |
| 314 for (std::vector<ManagedUsersCallback>::iterator it = callbacks_.begin(); |
| 315 it != callbacks_.end(); ++it) { |
| 316 it->Run(managed_users); |
| 317 } |
| 318 callbacks_.clear(); |
| 319 } |
| OLD | NEW |