Chromium Code Reviews| Index: chrome/browser/extensions/settings/settings_backend.cc |
| diff --git a/chrome/browser/extensions/settings/settings_backend.cc b/chrome/browser/extensions/settings/settings_backend.cc |
| index 78e776a60d23d29272d78def7199c119162dd6aa..439e0c746a640e08ac74f38b3b1fce16f72dd395 100644 |
| --- a/chrome/browser/extensions/settings/settings_backend.cc |
| +++ b/chrome/browser/extensions/settings/settings_backend.cc |
| @@ -11,20 +11,18 @@ |
| #include "base/logging.h" |
| #include "base/memory/linked_ptr.h" |
| #include "base/memory/scoped_ptr.h" |
| -#include "chrome/browser/extensions/settings/settings_leveldb_storage.h" |
| +#include "chrome/browser/extensions/settings/failing_settings_storage.h" |
| #include "chrome/browser/extensions/settings/settings_storage_cache.h" |
| +#include "chrome/browser/extensions/settings/settings_storage_factory.h" |
| #include "chrome/browser/extensions/settings/settings_storage_quota_enforcer.h" |
| #include "chrome/browser/extensions/settings/settings_sync_util.h" |
| -#include "chrome/browser/extensions/settings/in_memory_settings_storage.h" |
| #include "chrome/common/extensions/extension.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "third_party/leveldatabase/src/include/leveldb/iterator.h" |
| -#include "third_party/leveldatabase/src/include/leveldb/write_batch.h" |
| - |
| -namespace extensions { |
| using content::BrowserThread; |
| +namespace extensions { |
| + |
| namespace { |
| // Total quota for all settings per extension, in bytes. 100K should be enough |
| @@ -41,9 +39,11 @@ const size_t kMaxSettingKeys = 512; |
| } // namespace |
| SettingsBackend::SettingsBackend( |
| + SettingsStorageFactory* storage_factory, |
| const FilePath& base_path, |
| const scoped_refptr<SettingsObserverList>& observers) |
| - : base_path_(base_path), |
| + : storage_factory_(storage_factory), |
| + base_path_(base_path), |
| observers_(observers), |
| sync_type_(syncable::UNSPECIFIED), |
| sync_processor_(NULL) { |
| @@ -66,35 +66,27 @@ SettingsBackend::GetOrCreateStorageWithSyncData( |
| const std::string& extension_id, const DictionaryValue& sync_data) const { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| - linked_ptr<SyncableSettingsStorage> syncable_storage = |
| - storage_objs_[extension_id]; |
| - if (syncable_storage.get()) { |
| - return syncable_storage.get(); |
| + StorageObjMap::iterator maybe_storage = storage_objs_.find(extension_id); |
| + if (maybe_storage != storage_objs_.end()) { |
| + return maybe_storage->second.get(); |
| } |
| - SettingsStorage* storage = |
| - SettingsLeveldbStorage::Create(base_path_, extension_id); |
| + SettingsStorage* storage = storage_factory_->Create(base_path_, extension_id); |
| if (storage) { |
| storage = new SettingsStorageCache(storage); |
| + // It's fine to create the quota enforcer underneath the sync later, since |
|
Matt Perry
2011/11/11 00:49:38
later = layer?
not at google - send to devlin
2011/11/12 02:10:27
Done.
|
| + // sync will only go ahead if each underlying storage operation succeeds. |
| + storage = new SettingsStorageQuotaEnforcer( |
| + kTotalQuotaBytes, kQuotaPerSettingBytes, kMaxSettingKeys, storage); |
| } else { |
| - // Failed to create a leveldb storage area, create an in-memory one. |
| - // It's ok for these to be synced, it just means that on next starting up |
| - // extensions will see the "old" settings, then overwritten (and notified) |
| - // when the sync changes come through. |
| - storage = new InMemorySettingsStorage(); |
| + storage = new FailingSettingsStorage(); |
| } |
| - // It's fine to create the quota enforcer underneath the sync later, since |
| - // sync will only go ahead if each underlying storage operation is successful. |
| - storage = new SettingsStorageQuotaEnforcer( |
| - kTotalQuotaBytes, kQuotaPerSettingBytes, kMaxSettingKeys, storage); |
| - |
| - syncable_storage = |
| - linked_ptr<SyncableSettingsStorage>( |
| - new SyncableSettingsStorage( |
| - observers_, |
| - extension_id, |
| - storage)); |
| + linked_ptr<SyncableSettingsStorage> syncable_storage( |
| + new SyncableSettingsStorage( |
| + observers_, |
| + extension_id, |
| + storage)); |
| if (sync_processor_) { |
| // TODO(kalman): do something if StartSyncing fails. |
| ignore_result(syncable_storage->StartSyncing( |
| @@ -154,8 +146,7 @@ static void AddAllSyncData( |
| SyncDataList* dst) { |
| for (DictionaryValue::Iterator it(src); it.HasNext(); it.Advance()) { |
| dst->push_back( |
| - settings_sync_util::CreateData( |
| - extension_id, it.key(), it.value())); |
| + settings_sync_util::CreateData(extension_id, it.key(), it.value())); |
| } |
| } |