| Index: chrome/browser/profiles/profile_impl.cc
|
| diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
|
| index 6615e8a6d1a86fd54dd8a79adfbdabcf371924ae..b11b5fd8f5709c802c4c551db72d17ab35974dbf 100644
|
| --- a/chrome/browser/profiles/profile_impl.cc
|
| +++ b/chrome/browser/profiles/profile_impl.cc
|
| @@ -56,6 +56,8 @@
|
| #include "chrome/browser/plugins/plugin_prefs.h"
|
| #include "chrome/browser/prefs/browser_prefs.h"
|
| #include "chrome/browser/prefs/chrome_pref_service_factory.h"
|
| +#include "chrome/browser/prefs/pref_registry_syncable.h"
|
| +#include "chrome/browser/prefs/pref_service_syncable.h"
|
| #include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| #include "chrome/browser/prerender/prerender_manager_factory.h"
|
| #include "chrome/browser/profiles/chrome_version_service.h"
|
| @@ -299,53 +301,53 @@ int ProfileImpl::create_readme_delay_ms = 60000;
|
| const char* const ProfileImpl::kPrefExitTypeNormal = "Normal";
|
|
|
| // static
|
| -void ProfileImpl::RegisterUserPrefs(PrefServiceSyncable* prefs) {
|
| - prefs->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled,
|
| - false,
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| - prefs->RegisterBooleanPref(prefs::kForceSafeSearch,
|
| - false,
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| - prefs->RegisterIntegerPref(prefs::kProfileAvatarIndex,
|
| - -1,
|
| - PrefServiceSyncable::SYNCABLE_PREF);
|
| - prefs->RegisterStringPref(prefs::kProfileName,
|
| - "",
|
| - PrefServiceSyncable::SYNCABLE_PREF);
|
| - prefs->RegisterBooleanPref(prefs::kProfileIsManaged,
|
| - false,
|
| - PrefServiceSyncable::SYNCABLE_PREF);
|
| - prefs->RegisterStringPref(prefs::kHomePage,
|
| - std::string(),
|
| - PrefServiceSyncable::SYNCABLE_PREF);
|
| +void ProfileImpl::RegisterUserPrefs(PrefRegistrySyncable* registry) {
|
| + registry->RegisterBooleanPref(prefs::kSavingBrowserHistoryDisabled,
|
| + false,
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterBooleanPref(prefs::kForceSafeSearch,
|
| + false,
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterIntegerPref(prefs::kProfileAvatarIndex,
|
| + -1,
|
| + PrefRegistrySyncable::SYNCABLE_PREF);
|
| + registry->RegisterStringPref(prefs::kProfileName,
|
| + "",
|
| + PrefRegistrySyncable::SYNCABLE_PREF);
|
| + registry->RegisterBooleanPref(prefs::kProfileIsManaged,
|
| + false,
|
| + PrefRegistrySyncable::SYNCABLE_PREF);
|
| + registry->RegisterStringPref(prefs::kHomePage,
|
| + std::string(),
|
| + PrefRegistrySyncable::SYNCABLE_PREF);
|
| #if defined(ENABLE_PRINTING)
|
| - prefs->RegisterBooleanPref(prefs::kPrintingEnabled,
|
| - true,
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterBooleanPref(prefs::kPrintingEnabled,
|
| + true,
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| #endif
|
| - prefs->RegisterBooleanPref(prefs::kPrintPreviewDisabled,
|
| + registry->RegisterBooleanPref(prefs::kPrintPreviewDisabled,
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| - false,
|
| + false,
|
| #else
|
| - true,
|
| + true,
|
| #endif
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
|
|
| // Initialize the cache prefs.
|
| - prefs->RegisterFilePathPref(prefs::kDiskCacheDir,
|
| - FilePath(),
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| - prefs->RegisterIntegerPref(prefs::kDiskCacheSize,
|
| - 0,
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| - prefs->RegisterIntegerPref(prefs::kMediaCacheSize,
|
| - 0,
|
| - PrefServiceSyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterFilePathPref(prefs::kDiskCacheDir,
|
| + FilePath(),
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterIntegerPref(prefs::kDiskCacheSize,
|
| + 0,
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
| + registry->RegisterIntegerPref(prefs::kMediaCacheSize,
|
| + 0,
|
| + PrefRegistrySyncable::UNSYNCABLE_PREF);
|
|
|
| // Deprecated. Kept around for migration.
|
| - prefs->RegisterBooleanPref(prefs::kClearSiteDataOnExit,
|
| - false,
|
| - PrefServiceSyncable::SYNCABLE_PREF);
|
| + registry->RegisterBooleanPref(prefs::kClearSiteDataOnExit,
|
| + false,
|
| + PrefRegistrySyncable::SYNCABLE_PREF);
|
| }
|
|
|
| ProfileImpl::ProfileImpl(
|
| @@ -354,6 +356,7 @@ ProfileImpl::ProfileImpl(
|
| CreateMode create_mode,
|
| base::SequencedTaskRunner* sequenced_task_runner)
|
| : path_(path),
|
| + pref_registry_(new PrefRegistrySyncable),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(io_data_(this)),
|
| host_content_settings_map_(NULL),
|
| last_session_exit_type_(EXIT_NORMAL),
|
| @@ -409,6 +412,8 @@ ProfileImpl::ProfileImpl(
|
| create_mode == CREATE_MODE_SYNCHRONOUS);
|
| bool async_prefs = create_mode == CREATE_MODE_ASYNCHRONOUS;
|
|
|
| + Profile::RegisterUserPrefs(pref_registry_);
|
| +
|
| {
|
| // On startup, preference loading is always synchronous so a scoped timer
|
| // will work here.
|
| @@ -420,6 +425,7 @@ ProfileImpl::ProfileImpl(
|
| policy_service_.get(),
|
| new ExtensionPrefStore(
|
| ExtensionPrefValueMapFactory::GetForProfile(this), false),
|
| + pref_registry_,
|
| async_prefs));
|
| }
|
|
|
| @@ -722,10 +728,10 @@ void ProfileImpl::OnPrefsLoaded(bool success) {
|
| return;
|
| }
|
|
|
| - // The Profile class and ProfileManager class may read some prefs so
|
| - // register known prefs as soon as possible.
|
| - Profile::RegisterUserPrefs(prefs_.get());
|
| - chrome::RegisterUserPrefs(prefs_.get());
|
| + // TODO(joi): Registration can move to the constructor once it
|
| + // doesn't need the PrefService parameter.
|
| + chrome::RegisterUserPrefs(prefs_.get(), pref_registry_);
|
| +
|
| // TODO(mirandac): remove migration code after 6 months (crbug.com/69995).
|
| if (g_browser_process->local_state())
|
| chrome::MigrateBrowserPrefs(this, g_browser_process->local_state());
|
| @@ -808,16 +814,17 @@ policy::PolicyService* ProfileImpl::GetPolicyService() {
|
| return policy_service_.get();
|
| }
|
|
|
| -PrefServiceSyncable* ProfileImpl::GetPrefs() {
|
| +PrefService* ProfileImpl::GetPrefs() {
|
| DCHECK(prefs_.get()); // Should explicitly be initialized.
|
| return prefs_.get();
|
| }
|
|
|
| -PrefServiceSyncable* ProfileImpl::GetOffTheRecordPrefs() {
|
| +PrefService* ProfileImpl::GetOffTheRecordPrefs() {
|
| + DCHECK(prefs_.get());
|
| if (!otr_prefs_.get()) {
|
| // The new ExtensionPrefStore is ref_counted and the new PrefService
|
| // stores a reference so that we do not leak memory here.
|
| - otr_prefs_.reset(GetPrefs()->CreateIncognitoPrefService(
|
| + otr_prefs_.reset(prefs_->CreateIncognitoPrefService(
|
| new ExtensionPrefStore(
|
| ExtensionPrefValueMapFactory::GetForProfile(this), true)));
|
| }
|
| @@ -1082,7 +1089,7 @@ void ProfileImpl::SetupChromeOSEnterpriseExtensionObserver() {
|
|
|
| void ProfileImpl::InitChromeOSPreferences() {
|
| chromeos_preferences_.reset(new chromeos::Preferences());
|
| - chromeos_preferences_->Init(GetPrefs());
|
| + chromeos_preferences_->Init(PrefServiceSyncable::FromProfile(this));
|
| }
|
| #endif // defined(OS_CHROMEOS)
|
|
|
|
|