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

Unified Diff: chrome/browser/extensions/api/storage/settings_backend.h

Issue 175853002: Revert of Add a Restore() method to ValueStore and make StorageAPI use it (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/storage/settings_backend.h
diff --git a/chrome/browser/extensions/api/storage/settings_backend.h b/chrome/browser/extensions/api/storage/settings_backend.h
index a82c0e8c2a652f6e46a6220e3123c980b4021faa..0882b68ed3538996b8767075c802c5813026b9c3 100644
--- a/chrome/browser/extensions/api/storage/settings_backend.h
+++ b/chrome/browser/extensions/api/storage/settings_backend.h
@@ -5,65 +5,111 @@
#ifndef CHROME_BROWSER_EXTENSIONS_API_STORAGE_SETTINGS_BACKEND_H_
#define CHROME_BROWSER_EXTENSIONS_API_STORAGE_SETTINGS_BACKEND_H_
+#include <map>
+#include <set>
#include <string>
+#include "base/compiler_specific.h"
#include "base/files/file_path.h"
+#include "base/memory/linked_ptr.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/extensions/api/storage/settings_observer.h"
+#include "chrome/browser/extensions/api/storage/settings_storage_factory.h"
#include "chrome/browser/extensions/api/storage/settings_storage_quota_enforcer.h"
+#include "sync/api/syncable_service.h"
namespace syncer {
-class SyncableService;
+class SyncErrorFactory;
}
-class ValueStore;
+namespace extensions {
-namespace extensions {
-class SettingsStorageFactory;
+class SettingsSyncProcessor;
+class SyncableSettingsStorage;
-class SettingsBackend {
+// Manages ValueStore objects for extensions, including routing
+// changes from sync to them.
+// Lives entirely on the FILE thread.
+class SettingsBackend : public syncer::SyncableService {
public:
- SettingsBackend(const scoped_refptr<SettingsStorageFactory>& storage_factory,
- const base::FilePath& base_path,
- const SettingsStorageQuotaEnforcer::Limits& quota);
+ // |storage_factory| is use to create leveldb storage areas.
+ // |base_path| is the base of the extension settings directory, so the
+ // databases will be at base_path/extension_id.
+ // |observers| is the list of observers to settings changes.
+ SettingsBackend(
+ const scoped_refptr<SettingsStorageFactory>& storage_factory,
+ const base::FilePath& base_path,
+ syncer::ModelType sync_type,
+ const syncer::SyncableService::StartSyncFlare& flare,
+ const SettingsStorageQuotaEnforcer::Limits& quota,
+ const scoped_refptr<SettingsObserverList>& observers);
+
virtual ~SettingsBackend();
// Gets a weak reference to the storage area for |extension_id|.
// Must be run on the FILE thread.
- virtual ValueStore* GetStorage(const std::string& extension_id) = 0;
+ ValueStore* GetStorage(const std::string& extension_id) const;
// Deletes all setting data for an extension. Call on the FILE thread.
- virtual void DeleteStorage(const std::string& extension_id) = 0;
+ void DeleteStorage(const std::string& extension_id);
- // A slight hack so we can get a SyncableService from a SettingsBackend if
- // it's actually a SyncStorageBackend. If called on a LocalStorageBackend,
- // this asserts and returns null.
- virtual syncer::SyncableService* GetAsSyncableService();
+ // syncer::SyncableService implementation.
+ virtual syncer::SyncDataList GetAllSyncData(
+ syncer::ModelType type) const OVERRIDE;
+ virtual syncer::SyncMergeResult MergeDataAndStartSyncing(
+ syncer::ModelType type,
+ const syncer::SyncDataList& initial_sync_data,
+ scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
+ scoped_ptr<syncer::SyncErrorFactory> sync_error_factory) OVERRIDE;
+ virtual syncer::SyncError ProcessSyncChanges(
+ const tracked_objects::Location& from_here,
+ const syncer::SyncChangeList& change_list) OVERRIDE;
+ virtual void StopSyncing(syncer::ModelType type) OVERRIDE;
- SettingsStorageFactory* storage_factory() const {
- return storage_factory_.get();
- }
- const base::FilePath& base_path() const { return base_path_; }
- const SettingsStorageQuotaEnforcer::Limits& quota() const { return quota_; }
+ private:
+ // Gets a weak reference to the storage area for a given extension,
+ // initializing sync with some initial data if sync enabled.
+ SyncableSettingsStorage* GetOrCreateStorageWithSyncData(
+ const std::string& extension_id,
+ const base::DictionaryValue& sync_data) const;
- protected:
- // Creates a ValueStore decorated with quota-enforcing behavior (the default
- // for both sync and local stores). If the database is corrupt,
- // SettingsStorageQuotaEnforcer will try and restore it as part of the
- // initialization process (by necessity, since we need to read the database to
- // calculate the storage).
- scoped_ptr<SettingsStorageQuotaEnforcer> CreateStorageForExtension(
+ // Gets all extension IDs known to extension settings. This may not be all
+ // installed extensions.
+ std::set<std::string> GetKnownExtensionIDs() const;
+
+ // Creates a new SettingsSyncProcessor for an extension.
+ scoped_ptr<SettingsSyncProcessor> CreateSettingsSyncProcessor(
const std::string& extension_id) const;
- private:
- // The Factory to use for creating new ValueStores.
+ // The Factory to use for creating leveldb storage areas.
const scoped_refptr<SettingsStorageFactory> storage_factory_;
- // The base file path to use when creating new ValueStores.
+ // The base file path to create any leveldb databases at.
const base::FilePath base_path_;
// Quota limits (see SettingsStorageQuotaEnforcer).
const SettingsStorageQuotaEnforcer::Limits quota_;
+
+ // The list of observers to settings changes.
+ const scoped_refptr<SettingsObserverList> observers_;
+
+ // A cache of ValueStore objects that have already been created.
+ // Ensure that there is only ever one created per extension.
+ typedef std::map<std::string, linked_ptr<SyncableSettingsStorage> >
+ StorageObjMap;
+ mutable StorageObjMap storage_objs_;
+
+ // Current sync model type. Either EXTENSION_SETTINGS or APP_SETTINGS.
+ syncer::ModelType sync_type_;
+
+ // Current sync processor, if any.
+ scoped_ptr<syncer::SyncChangeProcessor> sync_processor_;
+
+ // Current sync error handler if any.
+ scoped_ptr<syncer::SyncErrorFactory> sync_error_factory_;
+
+ syncer::SyncableService::StartSyncFlare flare_;
DISALLOW_COPY_AND_ASSIGN(SettingsBackend);
};
« no previous file with comments | « chrome/browser/extensions/api/storage/policy_value_store.cc ('k') | chrome/browser/extensions/api/storage/settings_backend.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698