diff options
author | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-22 03:32:07 +0000 |
---|---|---|
committer | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-22 03:32:07 +0000 |
commit | be80eae925e1bb08b0584e55cd47accceba09390 (patch) | |
tree | 2209732664ad91da73883747415c1bddb60ab25c /chrome/browser/extensions/extension_settings_backend.cc | |
parent | 15245b8b5298a41363183deba5f5e156c6d0ac74 (diff) | |
download | chromium_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.cc | 24 |
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; |