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

Unified Diff: chrome/browser/extensions/extension_settings_api.cc

Issue 8375047: Separate the syncing of extension settings and app settings into separate data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 2 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/extension_settings_api.cc
diff --git a/chrome/browser/extensions/extension_settings_api.cc b/chrome/browser/extensions/extension_settings_api.cc
index 27b6be16d27a6a0a4c7dcded1754ac2460c96d6f..0113c867150d7a7eaf1079ecae309f5039ea38f8 100644
--- a/chrome/browser/extensions/extension_settings_api.cc
+++ b/chrome/browser/extensions/extension_settings_api.cc
@@ -16,16 +16,25 @@ const char* kUnsupportedArgumentType = "Unsupported argument type";
// SettingsFunction
bool SettingsFunction::RunImpl() {
- profile()->GetExtensionService()->extension_settings_frontend()->
- RunWithBackend(
- base::Bind(&SettingsFunction::RunWithBackendOnFileThread, this));
+ ExtensionSettingsFrontend* frontend =
+ profile()->GetExtensionService()->extension_settings_frontend();
+ frontend->RunWithStorage(
+ extension_id(),
+ base::Bind(
+ &SettingsFunction::RunWithStorageOnFileThread,
+ this,
+ frontend->GetObservers()));
return true;
}
-void SettingsFunction::RunWithBackendOnFileThread(
- ExtensionSettingsBackend* backend) {
+void SettingsFunction::RunWithStorageOnFileThread(
+ scoped_refptr<ExtensionSettingsObserverList> observers,
+ ExtensionSettingsStorage* storage) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- bool success = RunWithStorage(backend, backend->GetStorage(extension_id()));
+ bool success = false;
+ if (storage) {
+ success = RunWithStorage(observers.get(), storage);
+ }
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
@@ -33,7 +42,7 @@ void SettingsFunction::RunWithBackendOnFileThread(
}
bool SettingsFunction::UseResult(
- ExtensionSettingsBackend* backend,
+ scoped_refptr<ExtensionSettingsObserverList> observers,
const ExtensionSettingsStorage::Result& storage_result) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
if (storage_result.HasError()) {
@@ -58,8 +67,11 @@ bool SettingsFunction::UseResult(
old_value ? old_value->DeepCopy() : NULL,
new_value ? new_value->DeepCopy() : NULL);
}
- backend->TriggerOnSettingsChanged(
- profile(), extension_id(), changes.Build());
+ observers->Notify(
+ &ExtensionSettingsObserver::OnSettingsChanged,
+ profile(),
+ extension_id(),
+ changes.Build());
}
return true;
@@ -80,7 +92,7 @@ static void AddAllStringValues(
}
bool GetSettingsFunction::RunWithStorage(
- ExtensionSettingsBackend* backend,
+ scoped_refptr<ExtensionSettingsObserverList> observers,
ExtensionSettingsStorage* storage) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
Value *input;
@@ -88,29 +100,29 @@ bool GetSettingsFunction::RunWithStorage(
std::string as_string;
ListValue* as_list;
if (input->IsType(Value::TYPE_NULL)) {
- return UseResult(backend, storage->Get());
+ return UseResult(observers, storage->Get());
} else if (input->GetAsString(&as_string)) {
- return UseResult(backend, storage->Get(as_string));
+ return UseResult(observers, storage->Get(as_string));
} else if (input->GetAsList(&as_list)) {
std::vector<std::string> string_list;
AddAllStringValues(*as_list, &string_list);
- return UseResult(backend, storage->Get(string_list));
+ return UseResult(observers, storage->Get(string_list));
}
return UseResult(
- backend, ExtensionSettingsStorage::Result(kUnsupportedArgumentType));
+ observers, ExtensionSettingsStorage::Result(kUnsupportedArgumentType));
}
bool SetSettingsFunction::RunWithStorage(
- ExtensionSettingsBackend* backend,
+ scoped_refptr<ExtensionSettingsObserverList> observers,
ExtensionSettingsStorage* storage) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
DictionaryValue *input;
EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &input));
- return UseResult(backend, storage->Set(*input));
+ return UseResult(observers, storage->Set(*input));
}
bool RemoveSettingsFunction::RunWithStorage(
- ExtensionSettingsBackend* backend,
+ scoped_refptr<ExtensionSettingsObserverList> observers,
ExtensionSettingsStorage* storage) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
Value *input;
@@ -118,19 +130,19 @@ bool RemoveSettingsFunction::RunWithStorage(
std::string as_string;
ListValue* as_list;
if (input->GetAsString(&as_string)) {
- return UseResult(backend, storage->Remove(as_string));
+ return UseResult(observers, storage->Remove(as_string));
} else if (input->GetAsList(&as_list)) {
std::vector<std::string> string_list;
AddAllStringValues(*as_list, &string_list);
- return UseResult(backend, storage->Remove(string_list));
+ return UseResult(observers, storage->Remove(string_list));
}
return UseResult(
- backend, ExtensionSettingsStorage::Result(kUnsupportedArgumentType));
+ observers, ExtensionSettingsStorage::Result(kUnsupportedArgumentType));
}
bool ClearSettingsFunction::RunWithStorage(
- ExtensionSettingsBackend* backend,
+ scoped_refptr<ExtensionSettingsObserverList> observers,
ExtensionSettingsStorage* storage) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- return UseResult(backend, storage->Clear());
+ return UseResult(observers, storage->Clear());
}

Powered by Google App Engine
This is Rietveld 408576698