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

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

Issue 165223003: Add a Restore() method to ValueStore and make StorageAPI use it (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master 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 0882b68ed3538996b8767075c802c5813026b9c3..a82c0e8c2a652f6e46a6220e3123c980b4021faa 100644
--- a/chrome/browser/extensions/api/storage/settings_backend.h
+++ b/chrome/browser/extensions/api/storage/settings_backend.h
@@ -5,112 +5,66 @@
#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 SyncErrorFactory;
+class SyncableService;
}
-namespace extensions {
+class ValueStore;
-class SettingsSyncProcessor;
-class SyncableSettingsStorage;
+namespace extensions {
+class SettingsStorageFactory;
-// Manages ValueStore objects for extensions, including routing
-// changes from sync to them.
-// Lives entirely on the FILE thread.
-class SettingsBackend : public syncer::SyncableService {
+class SettingsBackend {
public:
- // |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);
-
+ SettingsBackend(const scoped_refptr<SettingsStorageFactory>& storage_factory,
+ const base::FilePath& base_path,
+ const SettingsStorageQuotaEnforcer::Limits& quota);
virtual ~SettingsBackend();
// Gets a weak reference to the storage area for |extension_id|.
// Must be run on the FILE thread.
- ValueStore* GetStorage(const std::string& extension_id) const;
+ virtual ValueStore* GetStorage(const std::string& extension_id) = 0;
// Deletes all setting data for an extension. Call on the FILE thread.
- void DeleteStorage(const std::string& extension_id);
-
- // 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;
-
- 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;
-
- // 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(
+ virtual void DeleteStorage(const std::string& extension_id) = 0;
+
+ // 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();
+
+ SettingsStorageFactory* storage_factory() const {
+ return storage_factory_.get();
+ }
+ const base::FilePath& base_path() const { return base_path_; }
+ const SettingsStorageQuotaEnforcer::Limits& quota() const { return quota_; }
+
+ 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(
const std::string& extension_id) const;
- // The Factory to use for creating leveldb storage areas.
+ private:
+ // The Factory to use for creating new ValueStores.
const scoped_refptr<SettingsStorageFactory> storage_factory_;
- // The base file path to create any leveldb databases at.
+ // The base file path to use when creating new ValueStores.
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