diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-27 19:18:22 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-27 19:18:22 +0000 |
commit | fc84e0e61e88c87e8f1ff09377598db023cf19c8 (patch) | |
tree | 8447ae0006924b1ff6b2b7524bf0a820c0ca3f0b | |
parent | 993d6b32443cada86407e252087d72823abdda54 (diff) | |
download | chromium_src-fc84e0e61e88c87e8f1ff09377598db023cf19c8.zip chromium_src-fc84e0e61e88c87e8f1ff09377598db023cf19c8.tar.gz chromium_src-fc84e0e61e88c87e8f1ff09377598db023cf19c8.tar.bz2 |
Rename ExtensionSettingsUIWrapper to ExtensionSettingsFrontend and
ExtensionSettings to ExtensionSettingsBackend.
Original patch by kalman@chromium.org
BUG=
TEST=all still pass
TBR=kalman@chromium.org
Review URL: http://codereview.chromium.org/8054019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102990 0039d316-1c4b-4281-b951-d872f2087c98
25 files changed, 197 insertions, 189 deletions
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 3391dca..385053d 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -587,7 +587,7 @@ ExtensionService::ExtensionService(Profile* profile, method_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), profile_(profile), extension_prefs_(extension_prefs), - extension_settings_( + extension_settings_frontend_( profile->GetPath().AppendASCII(kSettingsDirectoryName)), pending_extension_manager_(*ALLOW_THIS_IN_INITIALIZER_LIST(this)), install_directory_(install_directory), @@ -1673,8 +1673,8 @@ ExtensionPrefs* ExtensionService::extension_prefs() { return extension_prefs_; } -ExtensionSettingsUIWrapper* ExtensionService::extension_settings() { - return &extension_settings_; +ExtensionSettingsFrontend* ExtensionService::extension_settings_frontend() { + return &extension_settings_frontend_; } ExtensionContentSettingsStore* diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h index 6930acd..3e73263 100644 --- a/chrome/browser/extensions/extension_service.h +++ b/chrome/browser/extensions/extension_service.h @@ -28,7 +28,7 @@ #include "chrome/browser/extensions/extension_prefs.h" #include "chrome/browser/extensions/extension_permissions_api.h" #include "chrome/browser/extensions/extension_process_manager.h" -#include "chrome/browser/extensions/extension_settings_ui_wrapper.h" +#include "chrome/browser/extensions/extension_settings_frontend.h" #include "chrome/browser/extensions/extension_sync_data.h" #include "chrome/browser/extensions/extension_toolbar_model.h" #include "chrome/browser/extensions/extensions_quota_service.h" @@ -439,7 +439,7 @@ class ExtensionService // ExtensionPrefs* mutable_extension_prefs(). ExtensionPrefs* extension_prefs(); - ExtensionSettingsUIWrapper* extension_settings(); + ExtensionSettingsFrontend* extension_settings_frontend(); ExtensionContentSettingsStore* GetExtensionContentSettingsStore(); @@ -669,7 +669,7 @@ class ExtensionService ExtensionPrefs* extension_prefs_; // Settings for the owning profile. - ExtensionSettingsUIWrapper extension_settings_; + ExtensionSettingsFrontend extension_settings_frontend_; // The current list of installed extensions. // TODO(aa): This should use chrome/common/extensions/extension_set.h. diff --git a/chrome/browser/extensions/extension_settings_api.cc b/chrome/browser/extensions/extension_settings_api.cc index ad90690..5da832f 100644 --- a/chrome/browser/extensions/extension_settings_api.cc +++ b/chrome/browser/extensions/extension_settings_api.cc @@ -16,15 +16,16 @@ const char* kUnsupportedArgumentType = "Unsupported argument type"; // SettingsFunction bool SettingsFunction::RunImpl() { - profile()->GetExtensionService()->extension_settings()->RunWithSettings( - base::Bind(&SettingsFunction::RunWithSettingsOnFileThread, this)); + profile()->GetExtensionService()->extension_settings_frontend()-> + RunWithBackend( + base::Bind(&SettingsFunction::RunWithBackendOnFileThread, this)); return true; } -void SettingsFunction::RunWithSettingsOnFileThread( - ExtensionSettings* settings) { +void SettingsFunction::RunWithBackendOnFileThread( + ExtensionSettingsBackend* backend) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); - bool success = RunWithStorage(settings->GetStorage(extension_id())); + bool success = RunWithStorage(backend->GetStorage(extension_id())); BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, diff --git a/chrome/browser/extensions/extension_settings_api.h b/chrome/browser/extensions/extension_settings_api.h index 2cc87a0..886319b 100644 --- a/chrome/browser/extensions/extension_settings_api.h +++ b/chrome/browser/extensions/extension_settings_api.h @@ -8,7 +8,7 @@ #include "base/compiler_specific.h" #include "chrome/browser/extensions/extension_function.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "chrome/browser/extensions/extension_settings_storage.h" // Superclass of all settings functions. @@ -30,7 +30,7 @@ class SettingsFunction : public AsyncExtensionFunction { private: // Called via PostTask from RunImpl. Calls RunWithStorage and then // SendReponse with its success value. - void RunWithSettingsOnFileThread(ExtensionSettings* settings); + void RunWithBackendOnFileThread(ExtensionSettingsBackend* backend); }; class GetSettingsFunction : public SettingsFunction { diff --git a/chrome/browser/extensions/extension_settings.cc b/chrome/browser/extensions/extension_settings_backend.cc index 9349ad06..843e328 100644 --- a/chrome/browser/extensions/extension_settings.cc +++ b/chrome/browser/extensions/extension_settings_backend.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "base/compiler_specific.h" #include "base/file_util.h" @@ -20,17 +20,17 @@ #include "third_party/leveldatabase/src/include/leveldb/iterator.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" -ExtensionSettings::ExtensionSettings(const FilePath& base_path) +ExtensionSettingsBackend::ExtensionSettingsBackend(const FilePath& base_path) : base_path_(base_path), sync_processor_(NULL) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); } -ExtensionSettings::~ExtensionSettings() { +ExtensionSettingsBackend::~ExtensionSettingsBackend() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); } -ExtensionSettingsStorage* ExtensionSettings::GetStorage( +ExtensionSettingsStorage* ExtensionSettingsBackend::GetStorage( const std::string& extension_id) const { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); DictionaryValue empty; @@ -38,7 +38,7 @@ ExtensionSettingsStorage* ExtensionSettings::GetStorage( } SyncableExtensionSettingsStorage* -ExtensionSettings::GetOrCreateStorageWithSyncData( +ExtensionSettingsBackend::GetOrCreateStorageWithSyncData( const std::string& extension_id, const DictionaryValue& sync_data) const { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); SyncableExtensionSettingsStorage* storage = GetOrCreateAndInitStorage( @@ -61,7 +61,7 @@ ExtensionSettings::GetOrCreateStorageWithSyncData( return storage; } -ExtensionSettingsStorage* ExtensionSettings::GetStorageForTesting( +ExtensionSettingsStorage* ExtensionSettingsBackend::GetStorageForTesting( ExtensionSettingsStorage::Type type, bool cached, const std::string& extension_id) const { @@ -73,7 +73,8 @@ ExtensionSettingsStorage* ExtensionSettings::GetStorageForTesting( return storage; } -SyncableExtensionSettingsStorage* ExtensionSettings::GetOrCreateAndInitStorage( +SyncableExtensionSettingsStorage* +ExtensionSettingsBackend::GetOrCreateAndInitStorage( ExtensionSettingsStorage::Type type, bool cached, const std::string& extension_id, @@ -86,7 +87,8 @@ SyncableExtensionSettingsStorage* ExtensionSettings::GetOrCreateAndInitStorage( return CreateAndInitStorage(type, cached, extension_id, initial_sync_data); } -SyncableExtensionSettingsStorage* ExtensionSettings::CreateAndInitStorage( +SyncableExtensionSettingsStorage* +ExtensionSettingsBackend::CreateAndInitStorage( ExtensionSettingsStorage::Type type, bool cached, const std::string& extension_id, @@ -124,7 +126,7 @@ SyncableExtensionSettingsStorage* ExtensionSettings::CreateAndInitStorage( return synced_storage; } -std::set<std::string> ExtensionSettings::GetKnownExtensionIDs() const { +std::set<std::string> ExtensionSettingsBackend::GetKnownExtensionIDs() const { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); std::set<std::string> result; @@ -157,7 +159,7 @@ std::set<std::string> ExtensionSettings::GetKnownExtensionIDs() const { return result; } -SyncDataList ExtensionSettings::GetAllSyncData( +SyncDataList ExtensionSettingsBackend::GetAllSyncData( syncable::ModelType type) const { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); DCHECK_EQ(type, syncable::EXTENSION_SETTINGS); @@ -190,7 +192,7 @@ SyncDataList ExtensionSettings::GetAllSyncData( return all_sync_data; } -SyncError ExtensionSettings::MergeDataAndStartSyncing( +SyncError ExtensionSettingsBackend::MergeDataAndStartSyncing( syncable::ModelType type, const SyncDataList& initial_sync_data, SyncChangeProcessor* sync_processor) { @@ -244,7 +246,7 @@ SyncError ExtensionSettings::MergeDataAndStartSyncing( return SyncError(); } -SyncError ExtensionSettings::ProcessSyncChanges( +SyncError ExtensionSettingsBackend::ProcessSyncChanges( const tracked_objects::Location& from_here, const SyncChangeList& sync_changes) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); @@ -270,7 +272,7 @@ SyncError ExtensionSettings::ProcessSyncChanges( return SyncError(); } -void ExtensionSettings::StopSyncing(syncable::ModelType type) { +void ExtensionSettingsBackend::StopSyncing(syncable::ModelType type) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); DCHECK(sync_processor_); sync_processor_ = NULL; diff --git a/chrome/browser/extensions/extension_settings.h b/chrome/browser/extensions/extension_settings_backend.h index b6f87d8..4b11fadf 100644 --- a/chrome/browser/extensions/extension_settings.h +++ b/chrome/browser/extensions/extension_settings_backend.h @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_H_ -#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_H_ +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_BACKEND_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_BACKEND_H_ #pragma once #include "base/compiler_specific.h" @@ -17,13 +17,13 @@ // Manages ExtensionSettingsStorage objects for extensions, including routing // changes from sync to them. // Lives entirely on the FILE thread. -class ExtensionSettings : public SyncableService { +class ExtensionSettingsBackend : public SyncableService { public: // File path is the base of the extension settings directory. // The databases will be at base_path/extension_id. - explicit ExtensionSettings(const FilePath& base_path); + explicit ExtensionSettingsBackend(const FilePath& base_path); - virtual ~ExtensionSettings(); + virtual ~ExtensionSettingsBackend(); // Gets a weak reference to the storage area for a given extension. // Must be run on the FILE thread. @@ -96,7 +96,7 @@ class ExtensionSettings : public SyncableService { // Current sync processor, if any. SyncChangeProcessor* sync_processor_; - DISALLOW_COPY_AND_ASSIGN(ExtensionSettings); + DISALLOW_COPY_AND_ASSIGN(ExtensionSettingsBackend); }; -#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_H_ +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_BACKEND_H_ diff --git a/chrome/browser/extensions/extension_settings_cached_leveldb_storage_unittest.cc b/chrome/browser/extensions/extension_settings_cached_leveldb_storage_unittest.cc index 6ae82fc..436d806 100644 --- a/chrome/browser/extensions/extension_settings_cached_leveldb_storage_unittest.cc +++ b/chrome/browser/extensions/extension_settings_cached_leveldb_storage_unittest.cc @@ -7,8 +7,8 @@ namespace { ExtensionSettingsStorage* Param( - const ExtensionSettings& settings, const std::string& extension_id) { - return settings.GetStorageForTesting( + const ExtensionSettingsBackend& backend, const std::string& extension_id) { + return backend.GetStorageForTesting( ExtensionSettingsStorage::LEVELDB, true, extension_id); } diff --git a/chrome/browser/extensions/extension_settings_cached_noop_storage_unittest.cc b/chrome/browser/extensions/extension_settings_cached_noop_storage_unittest.cc index 8178e82..71d9671 100644 --- a/chrome/browser/extensions/extension_settings_cached_noop_storage_unittest.cc +++ b/chrome/browser/extensions/extension_settings_cached_noop_storage_unittest.cc @@ -7,8 +7,8 @@ namespace { ExtensionSettingsStorage* Param( - const ExtensionSettings& settings, const std::string& extension_id) { - return settings.GetStorageForTesting( + const ExtensionSettingsBackend& backend, const std::string& extension_id) { + return backend.GetStorageForTesting( ExtensionSettingsStorage::NOOP, true, extension_id); } diff --git a/chrome/browser/extensions/extension_settings_ui_wrapper.cc b/chrome/browser/extensions/extension_settings_frontend.cc index c9fe62d..4963e92 100644 --- a/chrome/browser/extensions/extension_settings_ui_wrapper.cc +++ b/chrome/browser/extensions/extension_settings_frontend.cc @@ -2,67 +2,65 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_settings_ui_wrapper.h" +#include "chrome/browser/extensions/extension_settings_frontend.h" #include "base/bind.h" #include "base/file_path.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "content/browser/browser_thread.h" -ExtensionSettingsUIWrapper::ExtensionSettingsUIWrapper( +ExtensionSettingsFrontend::ExtensionSettingsFrontend( const FilePath& base_path) - : core_(new ExtensionSettingsUIWrapper::Core()) { + : core_(new ExtensionSettingsFrontend::Core()) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); BrowserThread::PostTask( BrowserThread::FILE, FROM_HERE, base::Bind( - &ExtensionSettingsUIWrapper::Core::InitOnFileThread, + &ExtensionSettingsFrontend::Core::InitOnFileThread, core_.get(), base_path)); } -void ExtensionSettingsUIWrapper::RunWithSettings( - const SettingsCallback& callback) { +void ExtensionSettingsFrontend::RunWithBackend( + const BackendCallback& callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); BrowserThread::PostTask( BrowserThread::FILE, FROM_HERE, base::Bind( - &ExtensionSettingsUIWrapper::Core::RunWithSettingsOnFileThread, + &ExtensionSettingsFrontend::Core::RunWithBackendOnFileThread, core_.get(), callback)); } -ExtensionSettingsUIWrapper::~ExtensionSettingsUIWrapper() { +ExtensionSettingsFrontend::~ExtensionSettingsFrontend() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); } -ExtensionSettingsUIWrapper::Core::Core() - : extension_settings_(NULL) { +ExtensionSettingsFrontend::Core::Core() : backend_(NULL) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); } -void ExtensionSettingsUIWrapper::Core::InitOnFileThread( +void ExtensionSettingsFrontend::Core::InitOnFileThread( const FilePath& base_path) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); - DCHECK(!extension_settings_); - extension_settings_ = new ExtensionSettings(base_path); + DCHECK(!backend_); + backend_ = new ExtensionSettingsBackend(base_path); } -void ExtensionSettingsUIWrapper::Core::RunWithSettingsOnFileThread( - const SettingsCallback& callback) { +void ExtensionSettingsFrontend::Core::RunWithBackendOnFileThread( + const BackendCallback& callback) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); - DCHECK(extension_settings_); - callback.Run(extension_settings_); + DCHECK(backend_); + callback.Run(backend_); } -ExtensionSettingsUIWrapper::Core::~Core() { +ExtensionSettingsFrontend::Core::~Core() { if (BrowserThread::CurrentlyOn(BrowserThread::FILE)) { - delete extension_settings_; + delete backend_; } else if (BrowserThread::CurrentlyOn(BrowserThread::UI)) { - BrowserThread::DeleteSoon( - BrowserThread::FILE, FROM_HERE, extension_settings_); + BrowserThread::DeleteSoon(BrowserThread::FILE, FROM_HERE, backend_); } else { NOTREACHED(); } diff --git a/chrome/browser/extensions/extension_settings_frontend.h b/chrome/browser/extensions/extension_settings_frontend.h new file mode 100644 index 0000000..7fe3dc0 --- /dev/null +++ b/chrome/browser/extensions/extension_settings_frontend.h @@ -0,0 +1,62 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_FRONTEND_H_ +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_FRONTEND_H_ +#pragma once + +#include "base/compiler_specific.h" +#include "base/memory/ref_counted.h" +#include "base/callback.h" +#include "chrome/browser/sync/api/syncable_service.h" + +class FilePath; +class ExtensionSettingsBackend; +class ExtensionSettingsStorage; + +// The component of extension settings which runs on the UI thread, as opposed +// to ExtensionSettingsBackend which lives on the FILE thread. +class ExtensionSettingsFrontend { + public: + explicit ExtensionSettingsFrontend(const FilePath& base_path); + + typedef base::Callback<void(ExtensionSettingsBackend*)> BackendCallback; + + // Runs |callback| on the FILE thread with the extension settings. + void RunWithBackend(const BackendCallback& callback); + + ~ExtensionSettingsFrontend(); + + private: + // Ref-counted container for the ExtensionSettingsBackend object. + class Core : public base::RefCountedThreadSafe<Core> { + public: + // Constructed on UI thread. + Core(); + + // Does any FILE thread specific initialization, such as construction of + // |backend_|. Must be called before any call to + // RunWithBackendOnFileThread(). + void InitOnFileThread(const FilePath& base_path); + + // Runs |callback| with the extension backend. + void RunWithBackendOnFileThread(const BackendCallback& callback); + + private: + // Can be destroyed on either the UI or FILE thread. + virtual ~Core(); + friend class base::RefCountedThreadSafe<Core>; + + // Lives on the FILE thread. + ExtensionSettingsBackend* backend_; + + DISALLOW_COPY_AND_ASSIGN(Core); + }; + + scoped_refptr<Core> core_; + + DISALLOW_COPY_AND_ASSIGN(ExtensionSettingsFrontend); +}; + +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_FRONTEND_H_ diff --git a/chrome/browser/extensions/extension_settings_leveldb_storage_unittest.cc b/chrome/browser/extensions/extension_settings_leveldb_storage_unittest.cc index f6fae37..ff49d13 100644 --- a/chrome/browser/extensions/extension_settings_leveldb_storage_unittest.cc +++ b/chrome/browser/extensions/extension_settings_leveldb_storage_unittest.cc @@ -7,8 +7,8 @@ namespace { ExtensionSettingsStorage* Param( - const ExtensionSettings& settings, const std::string& extension_id) { - return settings.GetStorageForTesting( + const ExtensionSettingsBackend& backend, const std::string& extension_id) { + return backend.GetStorageForTesting( ExtensionSettingsStorage::LEVELDB, false, extension_id); } diff --git a/chrome/browser/extensions/extension_settings_quota_unittest.cc b/chrome/browser/extensions/extension_settings_quota_unittest.cc index 7329b6c..49ec32f 100644 --- a/chrome/browser/extensions/extension_settings_quota_unittest.cc +++ b/chrome/browser/extensions/extension_settings_quota_unittest.cc @@ -8,7 +8,7 @@ #include "base/values.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "chrome/browser/extensions/extension_settings_storage_cache.h" #include "chrome/browser/extensions/extension_settings_storage_quota_enforcer.h" #include "chrome/browser/extensions/extension_settings_noop_storage.h" diff --git a/chrome/browser/extensions/extension_settings_storage_unittest.cc b/chrome/browser/extensions/extension_settings_storage_unittest.cc index 80d6461..bd8cf5b 100644 --- a/chrome/browser/extensions/extension_settings_storage_unittest.cc +++ b/chrome/browser/extensions/extension_settings_storage_unittest.cc @@ -7,7 +7,7 @@ #include "base/json/json_writer.h" #include "base/file_util.h" #include "base/values.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" // Gets the pretty-printed JSON for a value. static std::string GetJSON(const Value& value) { @@ -80,15 +80,17 @@ ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {} void ExtensionSettingsStorageTest::SetUp() { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); - settings_.reset(new ExtensionSettings(temp_dir_.path())); - storage_ = (GetParam())(*settings_, "fakeExtension"); + // TODO(kalman): Use ExtensionSettingsFrontend here? It would test more code + // paths. + backend_.reset(new ExtensionSettingsBackend(temp_dir_.path())); + storage_ = (GetParam())(*backend_, "fakeExtension"); ASSERT_TRUE(storage_ != NULL); } void ExtensionSettingsStorageTest::TearDown() { // Must do this explicitly here so that it's destroyed before the // message loops are. - settings_.reset(); + backend_.reset(); } TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) { diff --git a/chrome/browser/extensions/extension_settings_storage_unittest.h b/chrome/browser/extensions/extension_settings_storage_unittest.h index 9d209a1..a0c2610 100644 --- a/chrome/browser/extensions/extension_settings_storage_unittest.h +++ b/chrome/browser/extensions/extension_settings_storage_unittest.h @@ -13,12 +13,12 @@ #include "base/message_loop.h" #include "base/scoped_temp_dir.h" #include "base/task.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "content/browser/browser_thread.h" // Parameter type for the value-parameterized tests. typedef ExtensionSettingsStorage* (*ExtensionSettingsStorageTestParam)( - const ExtensionSettings& settings, const std::string& extension_id); + const ExtensionSettingsBackend& backend, const std::string& extension_id); // Test fixture for ExtensionSettingsStorage tests. Tests are defined in // extension_settings_storage_unittest.cc with configurations for both cached @@ -57,7 +57,7 @@ class ExtensionSettingsStorageTest private: ScopedTempDir temp_dir_; - scoped_ptr<ExtensionSettings> settings_; + scoped_ptr<ExtensionSettingsBackend> backend_; // Need these so that the DCHECKs for running on FILE or UI threads pass. MessageLoop message_loop_; diff --git a/chrome/browser/extensions/extension_settings_sync_unittest.cc b/chrome/browser/extensions/extension_settings_sync_unittest.cc index 7f77b1b..1b69d7b 100644 --- a/chrome/browser/extensions/extension_settings_sync_unittest.cc +++ b/chrome/browser/extensions/extension_settings_sync_unittest.cc @@ -11,7 +11,7 @@ #include "base/message_loop.h" #include "base/scoped_temp_dir.h" #include "base/task.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "chrome/browser/extensions/extension_settings_storage_cache.h" #include "chrome/browser/extensions/extension_settings_noop_storage.h" #include "chrome/browser/extensions/extension_settings_sync_util.h" @@ -127,13 +127,15 @@ class ExtensionSettingsSyncTest : public testing::Test { virtual void SetUp() OVERRIDE { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); - settings_.reset(new ExtensionSettings(temp_dir_.path())); + // TODO(kalman): Use ExtensionSettingsFrontend here? It would test more + // code paths. + backend_.reset(new ExtensionSettingsBackend(temp_dir_.path())); } virtual void TearDown() OVERRIDE { // Must do this explicitly here so that it's destroyed before the // message loops are. - settings_.reset(); + backend_.reset(); } protected: @@ -142,17 +144,17 @@ class ExtensionSettingsSyncTest : public testing::Test { SyncableExtensionSettingsStorage* GetStorage( const std::string& extension_id) { return static_cast<SyncableExtensionSettingsStorage*>( - settings_->GetStorage(extension_id)); + backend_->GetStorage(extension_id)); } MockSyncChangeProcessor sync_; - scoped_ptr<ExtensionSettings> settings_; + scoped_ptr<ExtensionSettingsBackend> backend_; - // Gets all the sync data from settings_ as a map from extension id to its + // Gets all the sync data from backend_ as a map from extension id to its // sync data. std::map<std::string, ExtensionSettingSyncDataList> GetAllSyncData() { SyncDataList as_list = - settings_->GetAllSyncData(syncable::EXTENSION_SETTINGS); + backend_->GetAllSyncData(syncable::EXTENSION_SETTINGS); std::map<std::string, ExtensionSettingSyncDataList> as_map; for (SyncDataList::iterator it = as_list.begin(); it != as_list.end(); ++it) { @@ -178,7 +180,7 @@ TEST_F(ExtensionSettingsSyncTest, NoDataDoesNotInvokeSync) { GetStorage("s1"); ASSERT_EQ(0u, GetAllSyncData().size()); - settings_->MergeDataAndStartSyncing( + backend_->MergeDataAndStartSyncing( syncable::EXTENSION_SETTINGS, SyncDataList(), &sync_); @@ -186,7 +188,7 @@ TEST_F(ExtensionSettingsSyncTest, NoDataDoesNotInvokeSync) { GetStorage("s2"); ASSERT_EQ(0u, GetAllSyncData().size()); - settings_->StopSyncing(syncable::EXTENSION_SETTINGS); + backend_->StopSyncing(syncable::EXTENSION_SETTINGS); ASSERT_EQ(0u, sync_.changes().size()); ASSERT_EQ(0u, GetAllSyncData().size()); @@ -217,9 +219,9 @@ TEST_F(ExtensionSettingsSyncTest, InSyncDataDoesNotInvokeSync) { sync_data.push_back(extension_settings_sync_util::CreateData( "s2", "bar", value2)); - settings_->MergeDataAndStartSyncing( + backend_->MergeDataAndStartSyncing( syncable::EXTENSION_SETTINGS, sync_data, &sync_); - settings_->StopSyncing(syncable::EXTENSION_SETTINGS); + backend_->StopSyncing(syncable::EXTENSION_SETTINGS); // Already in sync, so no changes. ASSERT_EQ(0u, sync_.changes().size()); @@ -236,7 +238,7 @@ TEST_F(ExtensionSettingsSyncTest, LocalDataWithNoSyncDataIsPushedToSync) { storage1->Set("foo", value1); storage2->Set("bar", value2); - settings_->MergeDataAndStartSyncing( + backend_->MergeDataAndStartSyncing( syncable::EXTENSION_SETTINGS, SyncDataList(), &sync_); // All settings should have been pushed to sync. @@ -248,7 +250,7 @@ TEST_F(ExtensionSettingsSyncTest, LocalDataWithNoSyncDataIsPushedToSync) { ASSERT_EQ(SyncChange::ACTION_ADD, change.change_type()); ASSERT_TRUE(value2.Equals(&change.value())); - settings_->StopSyncing(syncable::EXTENSION_SETTINGS); + backend_->StopSyncing(syncable::EXTENSION_SETTINGS); } TEST_F(ExtensionSettingsSyncTest, AnySyncDataOverwritesLocalData) { @@ -269,7 +271,7 @@ TEST_F(ExtensionSettingsSyncTest, AnySyncDataOverwritesLocalData) { "s1", "foo", value1)); sync_data.push_back(extension_settings_sync_util::CreateData( "s2", "bar", value2)); - settings_->MergeDataAndStartSyncing( + backend_->MergeDataAndStartSyncing( syncable::EXTENSION_SETTINGS, sync_data, &sync_); expected1.Set("foo", value1.DeepCopy()); expected2.Set("bar", value2.DeepCopy()); @@ -283,7 +285,7 @@ TEST_F(ExtensionSettingsSyncTest, AnySyncDataOverwritesLocalData) { ASSERT_PRED_FORMAT2(SettingsEq, &expected1, storage1->Get()); ASSERT_PRED_FORMAT2(SettingsEq, &expected2, storage2->Get()); - settings_->StopSyncing(syncable::EXTENSION_SETTINGS); + backend_->StopSyncing(syncable::EXTENSION_SETTINGS); } TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { @@ -306,7 +308,7 @@ TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { sync_data.push_back(extension_settings_sync_util::CreateData( "s2", "bar", value2)); - settings_->MergeDataAndStartSyncing( + backend_->MergeDataAndStartSyncing( syncable::EXTENSION_SETTINGS, sync_data, &sync_); expected2.Set("bar", value2.DeepCopy()); @@ -316,7 +318,7 @@ TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { "s1", "bar", value2)); change_list.push_back(extension_settings_sync_util::CreateAdd( "s2", "foo", value1)); - settings_->ProcessSyncChanges(FROM_HERE, change_list); + backend_->ProcessSyncChanges(FROM_HERE, change_list); expected1.Set("bar", value2.DeepCopy()); expected2.Set("foo", value1.DeepCopy()); @@ -330,7 +332,7 @@ TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { "s1", "bar", value2)); change_list.push_back(extension_settings_sync_util::CreateUpdate( "s2", "bar", value1)); - settings_->ProcessSyncChanges(FROM_HERE, change_list); + backend_->ProcessSyncChanges(FROM_HERE, change_list); expected1.Set("bar", value2.DeepCopy()); expected2.Set("bar", value1.DeepCopy()); @@ -344,14 +346,14 @@ TEST_F(ExtensionSettingsSyncTest, ProcessSyncChanges) { "s1", "foo")); change_list.push_back(extension_settings_sync_util::CreateDelete( "s2", "foo")); - settings_->ProcessSyncChanges(FROM_HERE, change_list); + backend_->ProcessSyncChanges(FROM_HERE, change_list); expected1.Remove("foo", NULL); expected2.Remove("foo", NULL); ASSERT_PRED_FORMAT2(SettingsEq, &expected1, storage1->Get()); ASSERT_PRED_FORMAT2(SettingsEq, &expected2, storage2->Get()); - settings_->StopSyncing(syncable::EXTENSION_SETTINGS); + backend_->StopSyncing(syncable::EXTENSION_SETTINGS); } TEST_F(ExtensionSettingsSyncTest, PushToSync) { @@ -375,7 +377,7 @@ TEST_F(ExtensionSettingsSyncTest, PushToSync) { sync_data.push_back(extension_settings_sync_util::CreateData( "s4", "bar", value2)); - settings_->MergeDataAndStartSyncing( + backend_->MergeDataAndStartSyncing( syncable::EXTENSION_SETTINGS, sync_data, &sync_); // Add something locally. @@ -488,5 +490,5 @@ TEST_F(ExtensionSettingsSyncTest, PushToSync) { SyncChange::ACTION_DELETE, sync_.GetOnlyChange("s4", "bar").change_type()); - settings_->StopSyncing(syncable::EXTENSION_SETTINGS); + backend_->StopSyncing(syncable::EXTENSION_SETTINGS); } diff --git a/chrome/browser/extensions/extension_settings_ui_wrapper.h b/chrome/browser/extensions/extension_settings_ui_wrapper.h deleted file mode 100644 index f5cf1fd..0000000 --- a/chrome/browser/extensions/extension_settings_ui_wrapper.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_UI_WRAPPER_H_ -#define CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_UI_WRAPPER_H_ -#pragma once - -#include "base/compiler_specific.h" -#include "base/memory/ref_counted.h" -#include "base/callback.h" -#include "chrome/browser/sync/api/syncable_service.h" - -class FilePath; -class ExtensionSettings; -class ExtensionSettingsStorage; - -// Wrapper for an ExtensionSettings object for dealing with thread ownership. -// This class lives on the UI thread while ExtensionSettings object live on -// the FILE thread. -class ExtensionSettingsUIWrapper { - public: - explicit ExtensionSettingsUIWrapper(const FilePath& base_path); - - typedef base::Callback<void(ExtensionSettings*)> SettingsCallback; - - // Runs |callback| on the FILE thread with the extension settings. - void RunWithSettings(const SettingsCallback& callback); - - ~ExtensionSettingsUIWrapper(); - - private: - // Ref-counted container for the ExtensionSettings object. - class Core : public base::RefCountedThreadSafe<Core> { - public: - // Constructed on UI thread. - Core(); - - // Does any FILE thread specific initialization, such as - // construction of |extension_settings_|. Must be called before - // any call to RunWithSettingsOnFileThread(). - void InitOnFileThread(const FilePath& base_path); - - // Runs |callback| with extension settings. - void RunWithSettingsOnFileThread(const SettingsCallback& callback); - - private: - // Can be destroyed on either the UI or FILE thread. - virtual ~Core(); - friend class base::RefCountedThreadSafe<Core>; - - // Lives on the FILE thread. - ExtensionSettings* extension_settings_; - - DISALLOW_COPY_AND_ASSIGN(Core); - }; - - scoped_refptr<Core> core_; - - DISALLOW_COPY_AND_ASSIGN(ExtensionSettingsUIWrapper); -}; - -#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SETTINGS_UI_WRAPPER_H_ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 993fb2d..481b2ef 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -35,7 +35,7 @@ #include "chrome/browser/extensions/extension_pref_store.h" #include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "chrome/browser/extensions/extension_special_storage_policy.h" #include "chrome/browser/extensions/user_script_master.h" #include "chrome/browser/favicon/favicon_service.h" diff --git a/chrome/browser/sync/glue/extension_setting_data_type_controller.cc b/chrome/browser/sync/glue/extension_setting_data_type_controller.cc index 6649ca8..6c6ea21 100644 --- a/chrome/browser/sync/glue/extension_setting_data_type_controller.cc +++ b/chrome/browser/sync/glue/extension_setting_data_type_controller.cc @@ -6,7 +6,7 @@ #include "base/metrics/histogram.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/extension_settings_ui_wrapper.h" +#include "chrome/browser/extensions/extension_settings_frontend.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/api/syncable_service.h" #include "chrome/browser/sync/glue/generic_change_processor.h" @@ -20,10 +20,10 @@ ExtensionSettingDataTypeController::ExtensionSettingDataTypeController( Profile* profile, ProfileSyncService* profile_sync_service) : NonFrontendDataTypeController(profile_sync_factory, profile), - extension_settings_ui_wrapper_( - profile->GetExtensionService()->extension_settings()), + extension_settings_frontend_( + profile->GetExtensionService()->extension_settings_frontend()), profile_sync_service_(profile_sync_service), - extension_settings_(NULL) { + extension_settings_backend_(NULL) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); } @@ -45,30 +45,31 @@ bool ExtensionSettingDataTypeController::StartModels() { bool ExtensionSettingDataTypeController::StartAssociationAsync() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); DCHECK_EQ(state(), ASSOCIATING); - extension_settings_ui_wrapper_->RunWithSettings( + extension_settings_frontend_->RunWithBackend( base::Bind( &ExtensionSettingDataTypeController:: - StartAssociationWithExtensionSettings, + StartAssociationWithExtensionSettingsBackend, this)); return true; } -void ExtensionSettingDataTypeController::StartAssociationWithExtensionSettings( - ExtensionSettings* extension_settings) { +void ExtensionSettingDataTypeController:: + StartAssociationWithExtensionSettingsBackend( + ExtensionSettingsBackend* extension_settings_backend) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); - extension_settings_ = extension_settings; - // Calls CreateSyncComponents, which expects extension_settings_ to be - // non-NULL. + extension_settings_backend_ = extension_settings_backend; + // Calls CreateSyncComponents, which expects extension_settings_backend_ to + // be non-NULL. StartAssociation(); } void ExtensionSettingDataTypeController::CreateSyncComponents() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); DCHECK_EQ(state(), ASSOCIATING); - DCHECK(extension_settings_); + DCHECK(extension_settings_backend_); ProfileSyncFactory::SyncComponents sync_components = profile_sync_factory()->CreateExtensionSettingSyncComponents( - extension_settings_, profile_sync_service_, this); + extension_settings_backend_, profile_sync_service_, this); set_model_associator(sync_components.model_associator); set_change_processor(sync_components.change_processor); } diff --git a/chrome/browser/sync/glue/extension_setting_data_type_controller.h b/chrome/browser/sync/glue/extension_setting_data_type_controller.h index 9da3662..44227f7 100644 --- a/chrome/browser/sync/glue/extension_setting_data_type_controller.h +++ b/chrome/browser/sync/glue/extension_setting_data_type_controller.h @@ -11,8 +11,8 @@ #include "base/compiler_specific.h" #include "chrome/browser/sync/glue/non_frontend_data_type_controller.h" -class ExtensionSettings; -class ExtensionSettingsUIWrapper; +class ExtensionSettingsBackend; +class ExtensionSettingsFrontend; class Profile; class ProfileSyncFactory; class ProfileSyncService; @@ -46,15 +46,15 @@ class ExtensionSettingDataTypeController // Starts sync association with |extension_settings|. Callback from // RunWithSettings of |extension_settings_ui_wrapper_| on FILE thread. - void StartAssociationWithExtensionSettings( - ExtensionSettings* extension_settings); + void StartAssociationWithExtensionSettingsBackend( + ExtensionSettingsBackend* extension_settings_backend); // These only used on the UI thread. - ExtensionSettingsUIWrapper* extension_settings_ui_wrapper_; + ExtensionSettingsFrontend* extension_settings_frontend_; ProfileSyncService* profile_sync_service_; // Only used on the FILE thread. - ExtensionSettings* extension_settings_; + ExtensionSettingsBackend* extension_settings_backend_; DISALLOW_COPY_AND_ASSIGN(ExtensionSettingDataTypeController); }; diff --git a/chrome/browser/sync/profile_sync_factory.h b/chrome/browser/sync/profile_sync_factory.h index 19199d5..e4bd347 100644 --- a/chrome/browser/sync/profile_sync_factory.h +++ b/chrome/browser/sync/profile_sync_factory.h @@ -15,8 +15,9 @@ #include "chrome/browser/sync/glue/model_associator.h" #include "chrome/browser/sync/unrecoverable_error_handler.h" -class ExtensionSettings; +class ExtensionSettingsBackend; class PasswordStore; +class PersonalDataManager; class ProfileSyncService; class WebDatabase; @@ -97,7 +98,7 @@ class ProfileSyncFactory { // extension setting data type. The pointers in the return struct are // owned by the caller. virtual SyncComponents CreateExtensionSettingSyncComponents( - ExtensionSettings* extension_settings, + ExtensionSettingsBackend* extension_settings_backend_, ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler) = 0; diff --git a/chrome/browser/sync/profile_sync_factory_impl.cc b/chrome/browser/sync/profile_sync_factory_impl.cc index b4809cf..bf2fab3 100644 --- a/chrome/browser/sync/profile_sync_factory_impl.cc +++ b/chrome/browser/sync/profile_sync_factory_impl.cc @@ -4,7 +4,7 @@ #include "base/command_line.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/extension_settings.h" +#include "chrome/browser/extensions/extension_settings_backend.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search_engines/template_url_service.h" #include "chrome/browser/search_engines/template_url_service_factory.h" @@ -254,16 +254,19 @@ ProfileSyncFactoryImpl::CreateBookmarkSyncComponents( ProfileSyncFactory::SyncComponents ProfileSyncFactoryImpl::CreateExtensionSettingSyncComponents( - ExtensionSettings* extension_settings, + ExtensionSettingsBackend* extension_settings_backend, ProfileSyncService* profile_sync_service, UnrecoverableErrorHandler* error_handler) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); sync_api::UserShare* user_share = profile_sync_service->GetUserShare(); GenericChangeProcessor* change_processor = - new GenericChangeProcessor(extension_settings, error_handler, user_share); + new GenericChangeProcessor( + extension_settings_backend, + error_handler, + user_share); browser_sync::SyncableServiceAdapter* sync_service_adapter = new browser_sync::SyncableServiceAdapter(syncable::EXTENSION_SETTINGS, - extension_settings, + extension_settings_backend, change_processor); return SyncComponents(sync_service_adapter, change_processor); } diff --git a/chrome/browser/sync/profile_sync_factory_impl.h b/chrome/browser/sync/profile_sync_factory_impl.h index 5a3cc3d..cab83cf 100644 --- a/chrome/browser/sync/profile_sync_factory_impl.h +++ b/chrome/browser/sync/profile_sync_factory_impl.h @@ -12,7 +12,7 @@ #include "chrome/browser/sync/profile_sync_factory.h" class CommandLine; -class ExtensionSettings; +class ExtensionSettingsBackend; class Profile; class ProfileSyncFactoryImpl : public ProfileSyncFactory { @@ -49,7 +49,7 @@ class ProfileSyncFactoryImpl : public ProfileSyncFactory { browser_sync::UnrecoverableErrorHandler* error_handler); virtual SyncComponents CreateExtensionSettingSyncComponents( - ExtensionSettings* extension_settings, + ExtensionSettingsBackend* extension_settings_backend, ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler); diff --git a/chrome/browser/sync/profile_sync_factory_mock.h b/chrome/browser/sync/profile_sync_factory_mock.h index b98b4e5..2fb8e12 100644 --- a/chrome/browser/sync/profile_sync_factory_mock.h +++ b/chrome/browser/sync/profile_sync_factory_mock.h @@ -11,7 +11,7 @@ #include "chrome/browser/sync/profile_sync_factory.h" #include "testing/gmock/include/gmock/gmock.h" -class ExtensionSettings; +class ExtensionSettingsBackend; namespace browser_sync { class AssociatorInterface; @@ -53,7 +53,7 @@ class ProfileSyncFactoryMock : public ProfileSyncFactory { SyncComponents(ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler)); MOCK_METHOD3(CreateExtensionSettingSyncComponents, - SyncComponents(ExtensionSettings* extension_settings, + SyncComponents(ExtensionSettingsBackend* extension_settings_backend, ProfileSyncService* profile_sync_service, browser_sync::UnrecoverableErrorHandler* error_handler)); MOCK_METHOD3(CreatePasswordSyncComponents, diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 72232ac..0660992 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1083,10 +1083,10 @@ 'browser/extensions/extension_save_page_api.h', 'browser/extensions/extension_setting_sync_data.cc', 'browser/extensions/extension_setting_sync_data.h', - 'browser/extensions/extension_settings.cc', - 'browser/extensions/extension_settings.h', - 'browser/extensions/extension_settings_ui_wrapper.cc', - 'browser/extensions/extension_settings_ui_wrapper.h', + 'browser/extensions/extension_settings_backend.cc', + 'browser/extensions/extension_settings_backend.h', + 'browser/extensions/extension_settings_frontend.cc', + 'browser/extensions/extension_settings_frontend.h', 'browser/extensions/extension_settings_api.cc', 'browser/extensions/extension_settings_api.h', 'browser/extensions/extension_settings_noop_storage.cc', diff --git a/chrome/test/base/testing_profile.cc b/chrome/test/base/testing_profile.cc index 9e90e32..29ded40 100644 --- a/chrome/test/base/testing_profile.cc +++ b/chrome/test/base/testing_profile.cc @@ -19,7 +19,6 @@ #include "chrome/browser/custom_handlers/protocol_handler_registry.h" #include "chrome/browser/extensions/extension_pref_value_map.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/extension_settings.h" #include "chrome/browser/extensions/extension_special_storage_policy.h" #include "chrome/browser/favicon/favicon_service.h" #include "chrome/browser/geolocation/chrome_geolocation_permission_context.h" |