| OLD | NEW |
| 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/settings_backend.h" | 5 #include "chrome/browser/extensions/settings/settings_backend.h" |
| 6 | 6 |
| 7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 result.insert(maybe_as_ascii); | 126 result.insert(maybe_as_ascii); |
| 127 } | 127 } |
| 128 } | 128 } |
| 129 | 129 |
| 130 return result; | 130 return result; |
| 131 } | 131 } |
| 132 | 132 |
| 133 static void AddAllSyncData( | 133 static void AddAllSyncData( |
| 134 const std::string& extension_id, | 134 const std::string& extension_id, |
| 135 const DictionaryValue& src, | 135 const DictionaryValue& src, |
| 136 syncable::ModelType type, |
| 136 SyncDataList* dst) { | 137 SyncDataList* dst) { |
| 137 for (DictionaryValue::Iterator it(src); it.HasNext(); it.Advance()) { | 138 for (DictionaryValue::Iterator it(src); it.HasNext(); it.Advance()) { |
| 138 dst->push_back( | 139 dst->push_back(settings_sync_util::CreateData( |
| 139 settings_sync_util::CreateData(extension_id, it.key(), it.value())); | 140 extension_id, it.key(), it.value(), type)); |
| 140 } | 141 } |
| 141 } | 142 } |
| 142 | 143 |
| 143 SyncDataList SettingsBackend::GetAllSyncData( | 144 SyncDataList SettingsBackend::GetAllSyncData( |
| 144 syncable::ModelType type) const { | 145 syncable::ModelType type) const { |
| 145 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 146 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 146 // Ignore the type, it's just for sanity checking; assume that whatever base | 147 // Ignore the type, it's just for sanity checking; assume that whatever base |
| 147 // path we're constructed with is correct for the sync type. | 148 // path we're constructed with is correct for the sync type. |
| 148 DCHECK(type == syncable::EXTENSION_SETTINGS || | 149 DCHECK(type == syncable::EXTENSION_SETTINGS || |
| 149 type == syncable::APP_SETTINGS); | 150 type == syncable::APP_SETTINGS); |
| 150 | 151 |
| 151 // For all extensions, get all their settings. This has the effect | 152 // For all extensions, get all their settings. This has the effect |
| 152 // of bringing in the entire state of extension settings in memory; sad. | 153 // of bringing in the entire state of extension settings in memory; sad. |
| 153 SyncDataList all_sync_data; | 154 SyncDataList all_sync_data; |
| 154 std::set<std::string> known_extension_ids(GetKnownExtensionIDs()); | 155 std::set<std::string> known_extension_ids(GetKnownExtensionIDs()); |
| 155 | 156 |
| 156 for (std::set<std::string>::const_iterator it = known_extension_ids.begin(); | 157 for (std::set<std::string>::const_iterator it = known_extension_ids.begin(); |
| 157 it != known_extension_ids.end(); ++it) { | 158 it != known_extension_ids.end(); ++it) { |
| 158 SettingsStorage::ReadResult maybe_settings = GetStorage(*it)->Get(); | 159 SettingsStorage::ReadResult maybe_settings = GetStorage(*it)->Get(); |
| 159 if (maybe_settings.HasError()) { | 160 if (maybe_settings.HasError()) { |
| 160 LOG(WARNING) << "Failed to get settings for " << *it << ": " << | 161 LOG(WARNING) << "Failed to get settings for " << *it << ": " << |
| 161 maybe_settings.error(); | 162 maybe_settings.error(); |
| 162 continue; | 163 continue; |
| 163 } | 164 } |
| 164 AddAllSyncData(*it, maybe_settings.settings(), &all_sync_data); | 165 AddAllSyncData(*it, maybe_settings.settings(), type, &all_sync_data); |
| 165 } | 166 } |
| 166 | 167 |
| 167 return all_sync_data; | 168 return all_sync_data; |
| 168 } | 169 } |
| 169 | 170 |
| 170 SyncError SettingsBackend::MergeDataAndStartSyncing( | 171 SyncError SettingsBackend::MergeDataAndStartSyncing( |
| 171 syncable::ModelType type, | 172 syncable::ModelType type, |
| 172 const SyncDataList& initial_sync_data, | 173 const SyncDataList& initial_sync_data, |
| 173 SyncChangeProcessor* sync_processor) { | 174 SyncChangeProcessor* sync_processor) { |
| 174 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 175 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 | 268 |
| 268 for (StorageObjMap::iterator it = storage_objs_.begin(); | 269 for (StorageObjMap::iterator it = storage_objs_.begin(); |
| 269 it != storage_objs_.end(); ++it) { | 270 it != storage_objs_.end(); ++it) { |
| 270 // Some storage areas may have already stopped syncing if they had areas | 271 // Some storage areas may have already stopped syncing if they had areas |
| 271 // and syncing was disabled, but StopSyncing is safe to call multiple times. | 272 // and syncing was disabled, but StopSyncing is safe to call multiple times. |
| 272 it->second->StopSyncing(); | 273 it->second->StopSyncing(); |
| 273 } | 274 } |
| 274 } | 275 } |
| 275 | 276 |
| 276 } // namespace extensions | 277 } // namespace extensions |
| OLD | NEW |