Index: chrome/browser/extensions/api/storage/syncable_settings_storage.cc |
diff --git a/chrome/browser/extensions/api/storage/syncable_settings_storage.cc b/chrome/browser/extensions/api/storage/syncable_settings_storage.cc |
index 5c4b13e272fed41c823e6bca7a3fa86b704532b5..db877c6882bad8e34362faf01c7b9974e48fd2cc 100644 |
--- a/chrome/browser/extensions/api/storage/syncable_settings_storage.cc |
+++ b/chrome/browser/extensions/api/storage/syncable_settings_storage.cc |
@@ -20,10 +20,14 @@ SyncableSettingsStorage::SyncableSettingsStorage( |
const scoped_refptr<ObserverListThreadSafe<SettingsObserver> >& |
observers, |
const std::string& extension_id, |
- ValueStore* delegate) |
+ ValueStore* delegate, |
+ syncer::ModelType sync_type, |
+ const syncer::SyncableService::StartSyncFlare& flare) |
: observers_(observers), |
extension_id_(extension_id), |
- delegate_(delegate) { |
+ delegate_(delegate), |
+ sync_type_(sync_type), |
+ flare_(flare) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
} |
@@ -120,10 +124,18 @@ ValueStore::WriteResult SyncableSettingsStorage::Clear() { |
void SyncableSettingsStorage::SyncResultIfEnabled( |
const ValueStore::WriteResult& result) { |
- if (sync_processor_.get() && !result->changes().empty()) { |
+ if (result->changes().empty()) |
+ return; |
+ |
+ if (sync_processor_.get()) { |
syncer::SyncError error = sync_processor_->SendChanges(result->changes()); |
if (error.IsSet()) |
StopSyncing(); |
+ } else { |
+ // Tell sync to try and start soon, because syncable changes to sync_type_ |
+ // have started happening. This will cause sync to call us back |
+ // asynchronously via StartSyncing(...) as soon as possible. |
+ flare_.Run(sync_type_); |
not at google - send to devlin
2014/01/15 18:39:46
and it's ok to ignore the changes here because one
|
} |
} |