Chromium Code Reviews| Index: chrome/browser/supervised_user/supervised_user_service.cc |
| diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc |
| index 8b45a60a84a11951dcdffcfeebc45f1185df2bdc..a39fd6d44f43ee5795b8bc151fb9ed8ca5375b80 100644 |
| --- a/chrome/browser/supervised_user/supervised_user_service.cc |
| +++ b/chrome/browser/supervised_user/supervised_user_service.cc |
| @@ -132,7 +132,8 @@ void SupervisedUserService::URLFilterContext::SetManualURLs( |
| } |
| SupervisedUserService::SupervisedUserService(Profile* profile) |
| - : profile_(profile), |
| + : includes_sync_sessions_(true), |
| + profile_(profile), |
| active_(false), |
| delegate_(NULL), |
| #if defined(ENABLE_EXTENSIONS) |
| @@ -359,7 +360,8 @@ syncer::ModelTypeSet SupervisedUserService::GetPreferredDataTypes() const { |
| return syncer::ModelTypeSet(); |
| syncer::ModelTypeSet result; |
| - result.Put(syncer::SESSIONS); |
| + if (IncludesSyncSessions()) |
| + result.Put(syncer::SESSIONS); |
| result.Put(syncer::EXTENSIONS); |
| result.Put(syncer::EXTENSION_SETTINGS); |
| result.Put(syncer::APPS); |
| @@ -369,6 +371,26 @@ syncer::ModelTypeSet SupervisedUserService::GetPreferredDataTypes() const { |
| return result; |
| } |
| +void SupervisedUserService::OnHistoryRecordingStateChanged() { |
| + bool has_session_sync_state_changed = FetchNewSessionSyncState(); |
| + if (has_session_sync_state_changed) |
| + ProfileSyncServiceFactory::GetForProfile(profile_) |
| + ->ReconfigureDatatypeManager(); |
| +} |
| + |
| +bool SupervisedUserService::FetchNewSessionSyncState() { |
|
Marc Treib
2014/08/20 14:14:26
This method doesn't seem necessary anymore, since
fhorschig
2014/08/20 14:48:03
Done.
|
| + bool old_includes_session_sync = includes_sync_sessions_; |
| + |
| + includes_sync_sessions_ = |
| + profile_->GetPrefs()->GetBoolean(prefs::kRecordHistory); |
| + |
| + return old_includes_session_sync != includes_sync_sessions_; |
| +} |
| + |
| +bool SupervisedUserService::IncludesSyncSessions() const { |
| + return includes_sync_sessions_; |
| +} |
| + |
| void SupervisedUserService::OnStateChanged() { |
| ProfileSyncService* service = |
| ProfileSyncServiceFactory::GetForProfile(profile_); |
| @@ -608,6 +630,10 @@ void SupervisedUserService::Init() { |
| prefs::kSupervisedUserId, |
| base::Bind(&SupervisedUserService::OnSupervisedUserIdChanged, |
| base::Unretained(this))); |
| + pref_change_registrar_.Add( |
| + prefs::kRecordHistory, |
| + base::Bind(&SupervisedUserService::OnHistoryRecordingStateChanged, |
| + base::Unretained(this))); |
| ProfileSyncService* sync_service = |
| ProfileSyncServiceFactory::GetForProfile(profile_); |