diff options
author | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-06 00:42:44 +0000 |
---|---|---|
committer | joi@chromium.org <joi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-06 00:42:44 +0000 |
commit | 75fee3776f2e159d8e52bb13bb4545ac46021512 (patch) | |
tree | 7740edac61c7925bd342065bc31d6127e42a7b89 /chrome/browser/prefs | |
parent | d959538b0a69164776b6410bc2c87f46a2c80e89 (diff) | |
download | chromium_src-75fee3776f2e159d8e52bb13bb4545ac46021512.zip chromium_src-75fee3776f2e159d8e52bb13bb4545ac46021512.tar.gz chromium_src-75fee3776f2e159d8e52bb13bb4545ac46021512.tar.bz2 |
Introduce //components/user_prefs.
The user_prefs component provides:
a) The UserPrefs class, used to map PrefService objects to BrowserContext. This addresses a TODO to get rid of PrefServiceFromBrowserContext from base/prefs/pref_service.h, where clearly a mention of a content class did not belong.
b) A place for PrefRegistrySyncable to live, where it can be used by components that need to register prefs.
We also use (b) in this change to eliminate Autofill's dependency on chrome/browser/prefs. Work is ongoing to move Autofill to //components/autofill.
TBR=ben@chromium.org
BUG=155525,140037
Review URL: https://chromiumcodereview.appspot.com/12340111
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186301 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prefs')
-rw-r--r-- | chrome/browser/prefs/browser_prefs.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/chrome_pref_service_factory.cc | 8 | ||||
-rw-r--r-- | chrome/browser/prefs/chrome_pref_service_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/incognito_mode_prefs.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/pref_registry_syncable.cc | 220 | ||||
-rw-r--r-- | chrome/browser/prefs/pref_registry_syncable.h | 110 | ||||
-rw-r--r-- | chrome/browser/prefs/pref_service_mock_builder.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/pref_service_syncable.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/pref_service_syncable_builder.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/proxy_policy_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/scoped_user_pref_update_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/session_startup_pref.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/session_startup_pref_unittest.cc | 2 |
13 files changed, 11 insertions, 347 deletions
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index e2385bb..27dbd04 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc @@ -52,7 +52,6 @@ #include "chrome/browser/pepper_flash_settings_manager.h" #include "chrome/browser/plugins/plugin_finder.h" #include "chrome/browser/prefs/incognito_mode_prefs.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service_syncable.h" #include "chrome/browser/prefs/session_startup_pref.h" #include "chrome/browser/printing/cloud_print/cloud_print_url.h" @@ -90,6 +89,7 @@ #include "chrome/browser/upgrade_detector.h" #include "chrome/browser/web_resource/promo_resource_service.h" #include "chrome/common/pref_names.h" +#include "components/user_prefs/pref_registry_syncable.h" #include "content/public/browser/render_process_host.h" #if defined(ENABLE_CONFIGURATION_POLICY) diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc index 792e2e8..d3f60bb 100644 --- a/chrome/browser/prefs/chrome_pref_service_factory.cc +++ b/chrome/browser/prefs/chrome_pref_service_factory.cc @@ -17,10 +17,9 @@ #include "chrome/browser/policy/configuration_policy_pref_store.h" #include "chrome/browser/prefs/command_line_pref_store.h" #include "chrome/browser/prefs/pref_model_associator.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service_syncable_builder.h" -#include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/profile_error_dialog.h" +#include "components/user_prefs/pref_registry_syncable.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "grit/chromium_strings.h" @@ -93,11 +92,6 @@ void PrepareBuilder( } // namespace -// TODO(joi): Find a better home for this. -PrefService* PrefServiceFromBrowserContext(BrowserContext* context) { - return static_cast<Profile*>(context)->GetPrefs(); -} - namespace chrome_prefs { PrefService* CreateLocalState( diff --git a/chrome/browser/prefs/chrome_pref_service_unittest.cc b/chrome/browser/prefs/chrome_pref_service_unittest.cc index b65ee3e..c2e8a30 100644 --- a/chrome/browser/prefs/chrome_pref_service_unittest.cc +++ b/chrome/browser/prefs/chrome_pref_service_unittest.cc @@ -14,7 +14,6 @@ #include "chrome/browser/policy/mock_configuration_policy_provider.h" #include "chrome/browser/prefs/browser_prefs.h" #include "chrome/browser/prefs/command_line_pref_store.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service_mock_builder.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/common/chrome_paths.h" @@ -23,6 +22,7 @@ #include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "chrome/test/base/testing_pref_service_syncable.h" #include "chrome/test/base/testing_profile.h" +#include "components/user_prefs/pref_registry_syncable.h" #include "content/public/test/test_browser_thread.h" #include "content/public/test/web_contents_tester.h" #include "ui/base/test/data/resource.h" diff --git a/chrome/browser/prefs/incognito_mode_prefs.cc b/chrome/browser/prefs/incognito_mode_prefs.cc index 22d67ac..e073013 100644 --- a/chrome/browser/prefs/incognito_mode_prefs.cc +++ b/chrome/browser/prefs/incognito_mode_prefs.cc @@ -7,9 +7,9 @@ #include "base/command_line.h" #include "base/logging.h" #include "base/prefs/pref_service.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" +#include "components/user_prefs/pref_registry_syncable.h" #if defined(OS_WIN) #include "base/win/metro.h" diff --git a/chrome/browser/prefs/pref_registry_syncable.cc b/chrome/browser/prefs/pref_registry_syncable.cc deleted file mode 100644 index 3a34360..0000000 --- a/chrome/browser/prefs/pref_registry_syncable.cc +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright (c) 2012 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. - -#include "chrome/browser/prefs/pref_registry_syncable.h" - -#include "base/files/file_path.h" -#include "base/prefs/default_pref_store.h" -#include "base/string_number_conversions.h" -#include "base/values.h" -#include "ui/base/l10n/l10n_util.h" - -namespace { - -// A helper function for RegisterLocalized*Pref that creates a Value* -// based on a localized resource. Because we control the values in a -// locale dll, this should always return a Value of the appropriate -// type. -base::Value* CreateLocaleDefaultValue(base::Value::Type type, - int message_id) { - const std::string resource_string = l10n_util::GetStringUTF8(message_id); - DCHECK(!resource_string.empty()); - switch (type) { - case Value::TYPE_BOOLEAN: { - if ("true" == resource_string) - return Value::CreateBooleanValue(true); - if ("false" == resource_string) - return Value::CreateBooleanValue(false); - break; - } - - case Value::TYPE_INTEGER: { - int val; - base::StringToInt(resource_string, &val); - return Value::CreateIntegerValue(val); - } - - case Value::TYPE_DOUBLE: { - double val; - base::StringToDouble(resource_string, &val); - return Value::CreateDoubleValue(val); - } - - case Value::TYPE_STRING: { - return Value::CreateStringValue(resource_string); - } - - default: { - NOTREACHED() << - "list and dictionary types cannot have default locale values"; - } - } - NOTREACHED(); - return Value::CreateNullValue(); -} - -} // namespace - -PrefRegistrySyncable::PrefRegistrySyncable() { -} - -PrefRegistrySyncable::~PrefRegistrySyncable() { -} - -const std::set<std::string>& -PrefRegistrySyncable::syncable_preferences() const { - return syncable_preferences_; -} - -void PrefRegistrySyncable::SetSyncableRegistrationCallback( - const SyncableRegistrationCallback& cb) { - callback_ = cb; -} - -void PrefRegistrySyncable::RegisterBooleanPref(const char* path, - bool default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, - Value::CreateBooleanValue(default_value), - sync_status); -} - -void PrefRegistrySyncable::RegisterIntegerPref(const char* path, - int default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, - Value::CreateIntegerValue(default_value), - sync_status); -} - -void PrefRegistrySyncable::RegisterDoublePref(const char* path, - double default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, - Value::CreateDoubleValue(default_value), - sync_status); -} - -void PrefRegistrySyncable::RegisterStringPref(const char* path, - const std::string& default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, - Value::CreateStringValue(default_value), - sync_status); -} - -void PrefRegistrySyncable::RegisterFilePathPref( - const char* path, - const base::FilePath& default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, - Value::CreateStringValue(default_value.value()), - sync_status); -} - -void PrefRegistrySyncable::RegisterListPref(const char* path, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, new ListValue(), sync_status); -} - -void PrefRegistrySyncable::RegisterListPref(const char* path, - ListValue* default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, default_value, sync_status); -} - -void PrefRegistrySyncable::RegisterDictionaryPref(const char* path, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, new DictionaryValue(), sync_status); -} - -void PrefRegistrySyncable::RegisterDictionaryPref( - const char* path, - DictionaryValue* default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference(path, default_value, sync_status); -} - -void PrefRegistrySyncable::RegisterLocalizedBooleanPref( - const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status) { - RegisterSyncablePreference( - path, - CreateLocaleDefaultValue(Value::TYPE_BOOLEAN, locale_default_message_id), - sync_status); -} - -void PrefRegistrySyncable::RegisterLocalizedIntegerPref( - const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status) { - RegisterSyncablePreference( - path, - CreateLocaleDefaultValue(Value::TYPE_INTEGER, locale_default_message_id), - sync_status); -} - -void PrefRegistrySyncable::RegisterLocalizedDoublePref( - const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status) { - RegisterSyncablePreference( - path, - CreateLocaleDefaultValue(Value::TYPE_DOUBLE, locale_default_message_id), - sync_status); -} - -void PrefRegistrySyncable::RegisterLocalizedStringPref( - const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status) { - RegisterSyncablePreference( - path, - CreateLocaleDefaultValue(Value::TYPE_STRING, locale_default_message_id), - sync_status); -} - -void PrefRegistrySyncable::RegisterInt64Pref( - const char* path, - int64 default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference( - path, - Value::CreateStringValue(base::Int64ToString(default_value)), - sync_status); -} - -void PrefRegistrySyncable::RegisterUint64Pref( - const char* path, - uint64 default_value, - PrefSyncStatus sync_status) { - RegisterSyncablePreference( - path, - Value::CreateStringValue(base::Uint64ToString(default_value)), - sync_status); -} - -void PrefRegistrySyncable::RegisterSyncablePreference( - const char* path, - base::Value* default_value, - PrefSyncStatus sync_status) { - PrefRegistry::RegisterPreference(path, default_value); - - if (sync_status == SYNCABLE_PREF) { - syncable_preferences_.insert(path); - - if (!callback_.is_null()) - callback_.Run(path); - } -} - -scoped_refptr<PrefRegistrySyncable> PrefRegistrySyncable::ForkForIncognito() { - // TODO(joi): We can directly reuse the same PrefRegistry once - // PrefService no longer registers for callbacks on registration and - // unregistration. - scoped_refptr<PrefRegistrySyncable> registry(new PrefRegistrySyncable()); - registry->defaults_ = defaults_; - return registry; -} diff --git a/chrome/browser/prefs/pref_registry_syncable.h b/chrome/browser/prefs/pref_registry_syncable.h deleted file mode 100644 index d6d1a4a..0000000 --- a/chrome/browser/prefs/pref_registry_syncable.h +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright (c) 2012 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_PREFS_PREF_REGISTRY_SYNCABLE_H_ -#define CHROME_BROWSER_PREFS_PREF_REGISTRY_SYNCABLE_H_ - -#include <set> -#include <string> - -#include "base/prefs/pref_registry.h" - -namespace base { -class DictionaryValue; -class FilePath; -class ListValue; -class Value; -} - -// A PrefRegistry that forces users to choose whether each registered -// preference is syncable or not. -class PrefRegistrySyncable : public PrefRegistry { - public: - typedef base::Callback<void(const char* path)> SyncableRegistrationCallback; - - // Enum used when registering preferences to determine if it should - // be synced or not. - enum PrefSyncStatus { - UNSYNCABLE_PREF, - SYNCABLE_PREF - }; - - PrefRegistrySyncable(); - - // Retrieve the set of syncable preferences currently registered. - const std::set<std::string>& syncable_preferences() const; - - // Exactly one callback can be set for the event of a syncable - // preference being registered. It will be fired after the - // registration has occurred. - // - // Calling this method after a callback has already been set will - // make the object forget the previous callback and use the new one - // instead. - void SetSyncableRegistrationCallback(const SyncableRegistrationCallback& cb); - - void RegisterBooleanPref(const char* path, - bool default_value, - PrefSyncStatus sync_status); - void RegisterIntegerPref(const char* path, - int default_value, - PrefSyncStatus sync_status); - void RegisterDoublePref(const char* path, - double default_value, - PrefSyncStatus sync_status); - void RegisterStringPref(const char* path, - const std::string& default_value, - PrefSyncStatus sync_status); - void RegisterFilePathPref(const char* path, - const base::FilePath& default_value, - PrefSyncStatus sync_status); - void RegisterListPref(const char* path, - PrefSyncStatus sync_status); - void RegisterDictionaryPref(const char* path, - PrefSyncStatus sync_status); - void RegisterListPref(const char* path, - base::ListValue* default_value, - PrefSyncStatus sync_status); - void RegisterDictionaryPref(const char* path, - base::DictionaryValue* default_value, - PrefSyncStatus sync_status); - void RegisterLocalizedBooleanPref(const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status); - void RegisterLocalizedIntegerPref(const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status); - void RegisterLocalizedDoublePref(const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status); - void RegisterLocalizedStringPref(const char* path, - int locale_default_message_id, - PrefSyncStatus sync_status); - void RegisterInt64Pref(const char* path, - int64 default_value, - PrefSyncStatus sync_status); - void RegisterUint64Pref(const char* path, - uint64 default_value, - PrefSyncStatus sync_status); - - // Returns a new PrefRegistrySyncable that uses the same defaults - // store. - scoped_refptr<PrefRegistrySyncable> ForkForIncognito(); - - private: - virtual ~PrefRegistrySyncable(); - - void RegisterSyncablePreference(const char* path, - base::Value* default_value, - PrefSyncStatus sync_status); - - SyncableRegistrationCallback callback_; - - // Contains the names of all registered preferences that are syncable. - std::set<std::string> syncable_preferences_; - - DISALLOW_COPY_AND_ASSIGN(PrefRegistrySyncable); -}; - -#endif // CHROME_BROWSER_PREFS_PREF_REGISTRY_SYNCABLE_H_ diff --git a/chrome/browser/prefs/pref_service_mock_builder.cc b/chrome/browser/prefs/pref_service_mock_builder.cc index 51ae6fb..661e891 100644 --- a/chrome/browser/prefs/pref_service_mock_builder.cc +++ b/chrome/browser/prefs/pref_service_mock_builder.cc @@ -5,7 +5,7 @@ #include "chrome/browser/prefs/pref_service_mock_builder.h" #include "base/prefs/testing_pref_store.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" +#include "components/user_prefs/pref_registry_syncable.h" PrefServiceMockBuilder::PrefServiceMockBuilder() { ResetDefaultState(); diff --git a/chrome/browser/prefs/pref_service_syncable.cc b/chrome/browser/prefs/pref_service_syncable.cc index 01db256..8f2f867 100644 --- a/chrome/browser/prefs/pref_service_syncable.cc +++ b/chrome/browser/prefs/pref_service_syncable.cc @@ -14,10 +14,10 @@ #include "base/strings/string_number_conversions.h" #include "base/value_conversions.h" #include "chrome/browser/prefs/pref_model_associator.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service_syncable_observer.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/prefs/prefs_tab_helper.h" +#include "components/user_prefs/pref_registry_syncable.h" // static PrefServiceSyncable* PrefServiceSyncable::FromProfile(Profile* profile) { diff --git a/chrome/browser/prefs/pref_service_syncable_builder.cc b/chrome/browser/prefs/pref_service_syncable_builder.cc index b11ba20..5e97d4d 100644 --- a/chrome/browser/prefs/pref_service_syncable_builder.cc +++ b/chrome/browser/prefs/pref_service_syncable_builder.cc @@ -10,8 +10,8 @@ #include "chrome/browser/policy/configuration_policy_pref_store.h" #include "chrome/browser/policy/policy_service.h" #include "chrome/browser/prefs/command_line_pref_store.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service_syncable.h" +#include "components/user_prefs/pref_registry_syncable.h" PrefServiceSyncableBuilder::PrefServiceSyncableBuilder() { } diff --git a/chrome/browser/prefs/proxy_policy_unittest.cc b/chrome/browser/prefs/proxy_policy_unittest.cc index 0318516..ec51894 100644 --- a/chrome/browser/prefs/proxy_policy_unittest.cc +++ b/chrome/browser/prefs/proxy_policy_unittest.cc @@ -8,13 +8,13 @@ #include "chrome/browser/policy/policy_map.h" #include "chrome/browser/policy/policy_service_impl.h" #include "chrome/browser/prefs/browser_prefs.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/pref_service_mock_builder.h" #include "chrome/browser/prefs/pref_service_syncable.h" #include "chrome/browser/prefs/proxy_config_dictionary.h" #include "chrome/browser/prefs/proxy_prefs.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" +#include "components/user_prefs/pref_registry_syncable.h" #include "policy/policy_constants.h" #include "testing/gtest/include/gtest/gtest.h" diff --git a/chrome/browser/prefs/scoped_user_pref_update_unittest.cc b/chrome/browser/prefs/scoped_user_pref_update_unittest.cc index 6a2b280..f12c099 100644 --- a/chrome/browser/prefs/scoped_user_pref_update_unittest.cc +++ b/chrome/browser/prefs/scoped_user_pref_update_unittest.cc @@ -4,9 +4,9 @@ #include "base/prefs/mock_pref_change_callback.h" #include "base/prefs/public/pref_change_registrar.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/test/base/testing_pref_service_syncable.h" +#include "components/user_prefs/pref_registry_syncable.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" diff --git a/chrome/browser/prefs/session_startup_pref.cc b/chrome/browser/prefs/session_startup_pref.cc index decc622..9ce5f44 100644 --- a/chrome/browser/prefs/session_startup_pref.cc +++ b/chrome/browser/prefs/session_startup_pref.cc @@ -10,10 +10,10 @@ #include "base/values.h" #include "base/version.h" #include "chrome/browser/net/url_fixer_upper.h" -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/pref_names.h" +#include "components/user_prefs/pref_registry_syncable.h" #if defined(OS_MACOSX) #include "chrome/browser/ui/cocoa/window_restore_utils.h" diff --git a/chrome/browser/prefs/session_startup_pref_unittest.cc b/chrome/browser/prefs/session_startup_pref_unittest.cc index fac4ec1..7f7c5a4 100644 --- a/chrome/browser/prefs/session_startup_pref_unittest.cc +++ b/chrome/browser/prefs/session_startup_pref_unittest.cc @@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/prefs/pref_registry_syncable.h" #include "chrome/browser/prefs/session_startup_pref.h" #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_pref_service_syncable.h" +#include "components/user_prefs/pref_registry_syncable.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" |