summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_settings_backend.cc
diff options
context:
space:
mode:
authorkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-22 03:32:07 +0000
committerkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-22 03:32:07 +0000
commitbe80eae925e1bb08b0584e55cd47accceba09390 (patch)
tree2209732664ad91da73883747415c1bddb60ab25c /chrome/browser/extensions/extension_settings_backend.cc
parent15245b8b5298a41363183deba5f5e156c6d0ac74 (diff)
downloadchromium_src-be80eae925e1bb08b0584e55cd47accceba09390.zip
chromium_src-be80eae925e1bb08b0584e55cd47accceba09390.tar.gz
chromium_src-be80eae925e1bb08b0584e55cd47accceba09390.tar.bz2
Re-commit 106660 with the crashing test disabled. Reverted in 106671.
Add onChanged events to the extension settings API, both from sync and between split mode background pages. BUG=97545 TEST=ExtensionSettingsStorageUnittest, ExtensionSettingsSyncUnittest, ExtensionSettingsApitest Review URL: http://codereview.chromium.org/8177022 TBR=rsleevi@chromium.org Review URL: http://codereview.chromium.org/8361027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106848 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_settings_backend.cc')
-rw-r--r--chrome/browser/extensions/extension_settings_backend.cc24
1 files changed, 21 insertions, 3 deletions
diff --git a/chrome/browser/extensions/extension_settings_backend.cc b/chrome/browser/extensions/extension_settings_backend.cc
index ef97825..56bd944 100644
--- a/chrome/browser/extensions/extension_settings_backend.cc
+++ b/chrome/browser/extensions/extension_settings_backend.cc
@@ -36,8 +36,12 @@ const size_t kMaxSettingKeys = 512;
} // namespace
-ExtensionSettingsBackend::ExtensionSettingsBackend(const FilePath& base_path)
+ExtensionSettingsBackend::ExtensionSettingsBackend(
+ const FilePath& base_path,
+ const scoped_refptr<ObserverListThreadSafe<ExtensionSettingsObserver> >&
+ observers)
: base_path_(base_path),
+ observers_(observers),
sync_processor_(NULL) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
}
@@ -83,7 +87,10 @@ ExtensionSettingsBackend::GetOrCreateStorageWithSyncData(
syncable_storage =
linked_ptr<SyncableExtensionSettingsStorage>(
- new SyncableExtensionSettingsStorage(extension_id, storage));
+ new SyncableExtensionSettingsStorage(
+ observers_,
+ extension_id,
+ storage));
if (sync_processor_) {
// TODO(kalman): do something if StartSyncing fails.
ignore_result(syncable_storage->StartSyncing(sync_data, sync_processor_));
@@ -108,6 +115,17 @@ void ExtensionSettingsBackend::DeleteExtensionData(
storage_objs_.erase(maybe_storage);
}
+void ExtensionSettingsBackend::TriggerOnSettingsChanged(
+ Profile* profile,
+ const std::string& extension_id,
+ const ExtensionSettingChanges& changes) const {
+ observers_->Notify(
+ &ExtensionSettingsObserver::OnSettingsChanged,
+ profile,
+ extension_id,
+ changes);
+}
+
std::set<std::string> ExtensionSettingsBackend::GetKnownExtensionIDs() const {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
std::set<std::string> result;
@@ -161,7 +179,7 @@ SyncDataList ExtensionSettingsBackend::GetAllSyncData(
continue;
}
- DictionaryValue* settings = maybe_settings.GetSettings();
+ const DictionaryValue* settings = maybe_settings.GetSettings();
for (DictionaryValue::key_iterator key_it = settings->begin_keys();
key_it != settings->end_keys(); ++key_it) {
Value *value = NULL;