Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Unified Diff: chrome/browser/prefs/pref_service_syncable.cc

Issue 1326353002: Remove dependency of PrefSyncableService on Profile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pref_model_associator
Patch Set: Move files back to //chrome/browser/prefs & //chrome/test/base Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prefs/pref_service_syncable.cc
diff --git a/chrome/browser/prefs/pref_service_syncable.cc b/chrome/browser/prefs/pref_service_syncable.cc
index 32d4d3e234a86f25a3104e49d3a78d4d4f5f2454..cb04107c76a7262e833f25c7b95c528283e2dfb1 100644
--- a/chrome/browser/prefs/pref_service_syncable.cc
+++ b/chrome/browser/prefs/pref_service_syncable.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/prefs/pref_service_syncable.h"
#include "base/bind.h"
+#include "base/callback.h"
#include "base/files/file_path.h"
#include "base/prefs/default_pref_store.h"
#include "base/prefs/overlay_user_pref_store.h"
@@ -15,21 +16,8 @@
#include "base/value_conversions.h"
#include "chrome/browser/prefs/pref_model_associator.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/pref_registry/pref_registry_syncable.h"
-// static
-PrefServiceSyncable* PrefServiceSyncable::FromProfile(Profile* profile) {
- return static_cast<PrefServiceSyncable*>(profile->GetPrefs());
-}
-
-// static
-PrefServiceSyncable* PrefServiceSyncable::IncognitoFromProfile(
- Profile* profile) {
- return static_cast<PrefServiceSyncable*>(profile->GetOffTheRecordPrefs());
-}
-
PrefServiceSyncable::PrefServiceSyncable(
PrefNotifierImpl* pref_notifier,
PrefValueStore* pref_value_store,
@@ -38,21 +26,21 @@ PrefServiceSyncable::PrefServiceSyncable(
base::Callback<void(PersistentPrefStore::PrefReadError)>
read_error_callback,
bool async)
- : PrefService(pref_notifier,
- pref_value_store,
- user_prefs,
- pref_registry,
- read_error_callback,
- async),
- pref_sync_associator_(syncer::PREFERENCES),
- priority_pref_sync_associator_(syncer::PRIORITY_PREFERENCES) {
+ : PrefService(pref_notifier,
+ pref_value_store,
+ user_prefs,
+ pref_registry,
+ read_error_callback,
+ async),
+ pref_sync_associator_(syncer::PREFERENCES),
+ priority_pref_sync_associator_(syncer::PRIORITY_PREFERENCES),
+ pref_model_associator_client_(NULL) {
pref_sync_associator_.SetPrefService(this);
priority_pref_sync_associator_.SetPrefService(this);
// Let PrefModelAssociators know about changes to preference values.
- pref_value_store->set_callback(
- base::Bind(&PrefServiceSyncable::ProcessPrefChange,
- base::Unretained(this)));
+ pref_value_store->set_callback(base::Bind(
+ &PrefServiceSyncable::ProcessPrefChange, base::Unretained(this)));
// Add already-registered syncable preferences to PrefModelAssociator.
for (PrefRegistry::const_iterator it = pref_registry->begin();
@@ -76,17 +64,29 @@ PrefServiceSyncable::~PrefServiceSyncable() {
user_prefs::PrefRegistrySyncable::SyncableRegistrationCallback());
}
+void PrefServiceSyncable::SetPrefModelAssociatorClient(
+ PrefModelAssociatorClient* pref_model_associator_client) {
+ pref_model_associator_client_ = pref_model_associator_client;
+ pref_sync_associator_.set_pref_model_associator_client(
+ pref_model_associator_client_);
+ priority_pref_sync_associator_.set_pref_model_associator_client(
+ pref_model_associator_client_);
+}
+
PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService(
- PrefStore* incognito_extension_prefs) {
+ PrefStore* incognito_extension_prefs,
+ const base::Callback<void(OverlayUserPrefStore*)>&
+ incognito_pref_created_cb) {
pref_service_forked_ = true;
PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
OverlayUserPrefStore* incognito_pref_store =
new OverlayUserPrefStore(user_pref_store_.get());
- PrefsTabHelper::InitIncognitoUserPrefStore(incognito_pref_store);
+ if (!incognito_pref_created_cb.is_null())
+ incognito_pref_created_cb.Run(incognito_pref_store);
scoped_refptr<user_prefs::PrefRegistrySyncable> forked_registry =
- static_cast<user_prefs::PrefRegistrySyncable*>(
- pref_registry_.get())->ForkForIncognito();
+ static_cast<user_prefs::PrefRegistrySyncable*>(pref_registry_.get())
+ ->ForkForIncognito();
PrefServiceSyncable* incognito_service = new PrefServiceSyncable(
pref_notifier,
pref_value_store_->CloneAndSpecialize(NULL, // managed
@@ -101,6 +101,8 @@ PrefServiceSyncable* PrefServiceSyncable::CreateIncognitoPrefService(
forked_registry.get(),
read_error_callback_,
false);
+ incognito_service->SetPrefModelAssociatorClient(
+ pref_model_associator_client_);
return incognito_service;
}
@@ -146,9 +148,8 @@ void PrefServiceSyncable::UpdateCommandLinePrefStore(
PrefService::UpdateCommandLinePrefStore(cmd_line_store);
}
-void PrefServiceSyncable::AddSyncedPrefObserver(
- const std::string& name,
- SyncedPrefObserver* observer) {
+void PrefServiceSyncable::AddSyncedPrefObserver(const std::string& name,
+ SyncedPrefObserver* observer) {
pref_sync_associator_.AddSyncedPrefObserver(name, observer);
priority_pref_sync_associator_.AddSyncedPrefObserver(name, observer);
}
@@ -166,8 +167,7 @@ void PrefServiceSyncable::AddRegisteredSyncablePreference(
DCHECK(FindPreference(path));
if (flags & user_prefs::PrefRegistrySyncable::SYNCABLE_PREF) {
pref_sync_associator_.RegisterPref(path.c_str());
- } else if (flags &
- user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) {
+ } else if (flags & user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF) {
priority_pref_sync_associator_.RegisterPref(path.c_str());
}
}

Powered by Google App Engine
This is Rietveld 408576698