Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(694)

Side by Side Diff: chrome/browser/extensions/settings/syncable_settings_storage.cc

Issue 9427001: Extend TwoClientExtensionSettingsSyncTest to test app settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: oops Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/extensions/settings/syncable_settings_storage.h" 5 #include "chrome/browser/extensions/settings/syncable_settings_storage.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/extensions/settings/settings_namespace.h" 8 #include "chrome/browser/extensions/settings/settings_namespace.h"
9 #include "chrome/browser/extensions/settings/settings_sync_util.h" 9 #include "chrome/browser/extensions/settings/settings_sync_util.h"
10 #include "chrome/browser/sync/api/sync_data.h" 10 #include "chrome/browser/sync/api/sync_data.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 return OverwriteLocalSettingsWithSync(sync_state, maybe_settings.settings()); 159 return OverwriteLocalSettingsWithSync(sync_state, maybe_settings.settings());
160 } 160 }
161 161
162 SyncError SyncableSettingsStorage::SendLocalSettingsToSync( 162 SyncError SyncableSettingsStorage::SendLocalSettingsToSync(
163 const DictionaryValue& settings) { 163 const DictionaryValue& settings) {
164 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 164 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
165 DCHECK(sync_processor_); 165 DCHECK(sync_processor_);
166 166
167 SyncChangeList changes; 167 SyncChangeList changes;
168 for (DictionaryValue::Iterator it(settings); it.HasNext(); it.Advance()) { 168 for (DictionaryValue::Iterator it(settings); it.HasNext(); it.Advance()) {
169 changes.push_back( 169 changes.push_back(settings_sync_util::CreateAdd(
170 settings_sync_util::CreateAdd(extension_id_, it.key(), it.value())); 170 extension_id_, it.key(), it.value(), sync_type_));
171 } 171 }
172 172
173 if (changes.empty()) { 173 if (changes.empty()) {
174 return SyncError(); 174 return SyncError();
175 } 175 }
176 176
177 SyncError error = sync_processor_->ProcessSyncChanges(FROM_HERE, changes); 177 SyncError error = sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
178 if (error.IsSet()) { 178 if (error.IsSet()) {
179 StopSyncing(); 179 StopSyncing();
180 return error; 180 return error;
(...skipping 22 matching lines...) Expand all
203 if (sync_value->Equals(&it.value())) { 203 if (sync_value->Equals(&it.value())) {
204 // Sync and local values are the same, no changes to send. 204 // Sync and local values are the same, no changes to send.
205 synced_keys_.insert(it.key()); 205 synced_keys_.insert(it.key());
206 } else { 206 } else {
207 // Sync value is different, update local setting with new value. 207 // Sync value is different, update local setting with new value.
208 changes.push_back( 208 changes.push_back(
209 SettingSyncData( 209 SettingSyncData(
210 SyncChange::ACTION_UPDATE, 210 SyncChange::ACTION_UPDATE,
211 extension_id_, 211 extension_id_,
212 it.key(), 212 it.key(),
213 sync_value.release())); 213 sync_value.Pass()));
214 } 214 }
215 } else { 215 } else {
216 // Not synced, delete local setting. 216 // Not synced, delete local setting.
217 changes.push_back( 217 changes.push_back(
218 SettingSyncData( 218 SettingSyncData(
219 SyncChange::ACTION_DELETE, 219 SyncChange::ACTION_DELETE,
220 extension_id_, 220 extension_id_,
221 it.key(), 221 it.key(),
222 new DictionaryValue())); 222 scoped_ptr<Value>(new DictionaryValue())));
223 } 223 }
224 } 224 }
225 225
226 // Add all new settings to local settings. 226 // Add all new settings to local settings.
227 while (!new_sync_state->empty()) { 227 while (!new_sync_state->empty()) {
228 std::string key = *new_sync_state->begin_keys(); 228 std::string key = *new_sync_state->begin_keys();
229 Value* value = NULL; 229 Value* value = NULL;
230 CHECK(new_sync_state->RemoveWithoutPathExpansion(key, &value)); 230 CHECK(new_sync_state->RemoveWithoutPathExpansion(key, &value));
231 changes.push_back( 231 changes.push_back(
232 SettingSyncData( 232 SettingSyncData(
233 SyncChange::ACTION_ADD, extension_id_, key, value)); 233 SyncChange::ACTION_ADD,
234 extension_id_,
235 key,
236 scoped_ptr<Value>(value)));
234 } 237 }
235 238
236 if (changes.empty()) { 239 if (changes.empty()) {
237 return SyncError(); 240 return SyncError();
238 } 241 }
239 return ProcessSyncChanges(changes); 242 return ProcessSyncChanges(changes);
240 } 243 }
241 244
242 void SyncableSettingsStorage::StopSyncing() { 245 void SyncableSettingsStorage::StopSyncing() {
243 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 246 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 std::set<std::string> added_keys; 358 std::set<std::string> added_keys;
356 std::set<std::string> deleted_keys; 359 std::set<std::string> deleted_keys;
357 360
358 for (SettingChangeList::const_iterator it = changes.begin(); 361 for (SettingChangeList::const_iterator it = changes.begin();
359 it != changes.end(); ++it) { 362 it != changes.end(); ++it) {
360 const std::string& key = it->key(); 363 const std::string& key = it->key();
361 const Value* value = it->new_value(); 364 const Value* value = it->new_value();
362 if (value) { 365 if (value) {
363 if (synced_keys_.count(key)) { 366 if (synced_keys_.count(key)) {
364 // New value, key is synced; send ACTION_UPDATE. 367 // New value, key is synced; send ACTION_UPDATE.
365 sync_changes.push_back( 368 sync_changes.push_back(settings_sync_util::CreateUpdate(
366 settings_sync_util::CreateUpdate( 369 extension_id_, key, *value, sync_type_));
367 extension_id_, key, *value));
368 } else { 370 } else {
369 // New value, key is not synced; send ACTION_ADD. 371 // New value, key is not synced; send ACTION_ADD.
370 sync_changes.push_back( 372 sync_changes.push_back(settings_sync_util::CreateAdd(
371 settings_sync_util::CreateAdd( 373 extension_id_, key, *value, sync_type_));
372 extension_id_, key, *value));
373 added_keys.insert(key); 374 added_keys.insert(key);
374 } 375 }
375 } else { 376 } else {
376 if (synced_keys_.count(key)) { 377 if (synced_keys_.count(key)) {
377 // Clearing value, key is synced; send ACTION_DELETE. 378 // Clearing value, key is synced; send ACTION_DELETE.
378 sync_changes.push_back( 379 sync_changes.push_back(settings_sync_util::CreateDelete(
379 settings_sync_util::CreateDelete(extension_id_, key)); 380 extension_id_, key, sync_type_));
380 deleted_keys.insert(key); 381 deleted_keys.insert(key);
381 } else { 382 } else {
382 LOG(WARNING) << "Deleted " << key << " but not in synced_keys_"; 383 LOG(WARNING) << "Deleted " << key << " but not in synced_keys_";
383 } 384 }
384 } 385 }
385 } 386 }
386 387
387 if (sync_changes.empty()) { 388 if (sync_changes.empty()) {
388 return; 389 return;
389 } 390 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 FROM_HERE, 452 FROM_HERE,
452 std::string("Error pushing sync remove to local settings: ") + 453 std::string("Error pushing sync remove to local settings: ") +
453 result.error(), 454 result.error(),
454 sync_type_); 455 sync_type_);
455 } 456 }
456 changes->push_back(SettingChange(key, old_value, NULL)); 457 changes->push_back(SettingChange(key, old_value, NULL));
457 return SyncError(); 458 return SyncError();
458 } 459 }
459 460
460 } // namespace extensions 461 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698