Index: chrome/browser/extensions/settings/settings_frontend.h |
diff --git a/chrome/browser/extensions/settings/settings_frontend.h b/chrome/browser/extensions/settings/settings_frontend.h |
index 66cb48884debb985107b2137d9efe306390918dc..04c94bc08739661300323db7863abbebb9c891d4 100644 |
--- a/chrome/browser/extensions/settings/settings_frontend.h |
+++ b/chrome/browser/extensions/settings/settings_frontend.h |
@@ -14,6 +14,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/observer_list_threadsafe.h" |
#include "chrome/browser/extensions/settings/settings_leveldb_storage.h" |
+#include "chrome/browser/extensions/settings/settings_namespace.h" |
#include "chrome/browser/extensions/settings/settings_observer.h" |
#include "chrome/browser/sync/api/syncable_service.h" |
#include "content/public/browser/notification_observer.h" |
@@ -34,8 +35,7 @@ class SettingsFrontend { |
static SettingsFrontend* Create(Profile* profile); |
static SettingsFrontend* Create( |
- // Ownership taken. |
- SettingsStorageFactory* storage_factory, |
+ const scoped_refptr<SettingsStorageFactory>& storage_factory, |
// Owership NOT taken. |
Profile* profile); |
@@ -53,7 +53,9 @@ class SettingsFrontend { |
// |extension_id|. If there is no extension with that ID, the storage area |
// will be NULL. |
void RunWithStorage( |
- const std::string& extension_id, const StorageCallback& callback); |
+ const std::string& extension_id, |
+ settings_namespace::Namespace settings_namespace, |
+ const StorageCallback& callback); |
// Deletes the settings for an extension (on the FILE thread). |
void DeleteStorageSoon(const std::string& extension_id); |
@@ -62,25 +64,8 @@ class SettingsFrontend { |
scoped_refptr<SettingsObserverList> GetObservers(); |
private: |
- // Settings change Observer which forwards changes on to the extension |
- // processes for |profile| and its incognito partner if it exists. |
- class DefaultObserver : public SettingsObserver { |
- public: |
- explicit DefaultObserver(Profile* profile); |
- virtual ~DefaultObserver(); |
- |
- // SettingsObserver implementation. |
- virtual void OnSettingsChanged( |
- const std::string& extension_id, |
- const std::string& change_json) OVERRIDE; |
- |
- private: |
- Profile* const profile_; |
- }; |
- |
SettingsFrontend( |
- // Ownership taken. |
- SettingsStorageFactory* storage_factory, |
+ const scoped_refptr<SettingsStorageFactory>& storage_factory, |
// Ownership NOT taken. |
Profile* profile); |
@@ -91,11 +76,20 @@ class SettingsFrontend { |
scoped_refptr<SettingsObserverList> observers_; |
// Observer for |profile_|. |
- DefaultObserver default_observer_; |
- |
- // Ref-counted container for the SettingsBackend object. |
- class Core; |
- scoped_refptr<Core> core_; |
+ scoped_ptr<SettingsObserver> profile_observer_; |
+ |
+ // Ref-counted container for each SettingsBackend object. There are 4: an |
+ // apps and an extensions Backend for the LOCAL namespace, and likewise for |
+ // the SYNC namespace. They only differ in what directory the database for |
+ // each exists in (and the Backends in the SYNC namespace happen to be |
+ // returned from RunWithSyncableService). |
+ // |
+ // |backends_| is a map from namespace to app/extension Backend pair (as a map |
+ // from "is an app" to Backend). |
+ class BackendWrapper; |
not at google - send to devlin
2011/11/23 02:24:43
I tried a bunch of things and this was just... the
Matt Perry
2011/11/23 03:35:05
How about just being explicit?
struct Backends {
not at google - send to devlin
2011/11/23 11:04:52
Ok, I like the map<settings_namespace::Namespace>
|
+ std::map< |
+ settings_namespace::Namespace, |
+ std::map<bool, scoped_refptr<BackendWrapper> > > backends_; |
DISALLOW_COPY_AND_ASSIGN(SettingsFrontend); |
}; |