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

Unified Diff: chrome/browser/extensions/settings/settings_frontend.cc

Issue 8497065: Extension Settings API: make it so that when leveldb storage areas fail to be (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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/settings/settings_frontend.cc
diff --git a/chrome/browser/extensions/settings/settings_frontend.cc b/chrome/browser/extensions/settings/settings_frontend.cc
index 31d79dd82dbf830790d3a69207f19cd0bfc03995..1117e55604e48354a864697a8b8ac37fd9ed6c08 100644
--- a/chrome/browser/extensions/settings/settings_frontend.cc
+++ b/chrome/browser/extensions/settings/settings_frontend.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/extensions/extension_event_router.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/settings/settings_backend.h"
+#include "chrome/browser/extensions/settings/settings_leveldb_storage.h"
#include "chrome/browser/profiles/profile.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
@@ -22,17 +23,23 @@ namespace {
struct Backends {
Backends(
+ // Ownership taken.
+ SettingsStorageFactory* storage_factory,
const FilePath& profile_path,
const scoped_refptr<SettingsObserverList>& observers)
- : extensions_backend_(
+ : storage_factory_(storage_factory),
+ extensions_backend_(
+ storage_factory,
profile_path.AppendASCII(
ExtensionService::kExtensionSettingsDirectoryName),
observers),
apps_backend_(
+ storage_factory,
profile_path.AppendASCII(
ExtensionService::kAppSettingsDirectoryName),
observers) {}
+ scoped_ptr<SettingsStorageFactory> storage_factory_;
SettingsBackend extensions_backend_;
SettingsBackend apps_backend_;
};
@@ -82,7 +89,7 @@ void DeleteStorageOnFileThread(
} // namespace
-// DefaultObserver.
+// DefaultObserver
SettingsFrontend::DefaultObserver::DefaultObserver(Profile* profile)
: profile_(profile) {}
@@ -101,12 +108,18 @@ void SettingsFrontend::DefaultObserver::OnSettingsChanged(
GURL());
}
+// Core
+
class SettingsFrontend::Core
: public base::RefCountedThreadSafe<Core> {
public:
explicit Core(
+ // Ownership taken.
+ SettingsStorageFactory* storage_factory,
const scoped_refptr<SettingsObserverList>& observers)
- : observers_(observers), backends_(NULL) {
+ : storage_factory_(storage_factory),
+ observers_(observers),
+ backends_(NULL) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
@@ -118,7 +131,9 @@ class SettingsFrontend::Core
void InitOnFileThread(const FilePath& profile_path) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
DCHECK(!backends_);
- backends_ = new Backends(profile_path, observers_);
+ backends_ =
+ new Backends(
+ storage_factory_.release(), profile_path, observers_);
}
// Runs |callback| with both the extensions and apps settings on the FILE
@@ -153,6 +168,9 @@ class SettingsFrontend::Core
friend class base::RefCountedThreadSafe<Core>;
+ // Leveldb storage area factory. Ownership passed to Backends on Init.
+ scoped_ptr<SettingsStorageFactory> storage_factory_;
+
// Observers to settings changes (thread safe).
scoped_refptr<SettingsObserverList> observers_;
@@ -162,11 +180,25 @@ class SettingsFrontend::Core
DISALLOW_COPY_AND_ASSIGN(Core);
};
-SettingsFrontend::SettingsFrontend(Profile* profile)
+// SettingsFrontend
+
+/* static */
+SettingsFrontend* SettingsFrontend::Create(Profile* profile) {
+ return new SettingsFrontend(new SettingsLeveldbStorage::Factory(), profile);
+}
+
+/* static */
+SettingsFrontend* SettingsFrontend::Create(
+ SettingsStorageFactory* storage_factory, Profile* profile) {
+ return new SettingsFrontend(storage_factory, profile);
+}
+
+SettingsFrontend::SettingsFrontend(
+ SettingsStorageFactory* storage_factory, Profile* profile)
: profile_(profile),
observers_(new SettingsObserverList()),
default_observer_(profile),
- core_(new SettingsFrontend::Core(observers_)) {
+ core_(new SettingsFrontend::Core(storage_factory, observers_)) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!profile->IsOffTheRecord());

Powered by Google App Engine
This is Rietveld 408576698