| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync/sync_prefs.h" | 5 #include "chrome/browser/sync/sync_prefs.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/prefs/pref_member.h" | 9 #include "base/prefs/pref_member.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "build/build_config.h" | 13 #include "build/build_config.h" |
| 14 #include "chrome/browser/chrome_notification_types.h" | 14 #include "chrome/browser/chrome_notification_types.h" |
| 15 #include "chrome/browser/profiles/profile_io_data.h" | 15 #include "chrome/browser/profiles/profile_io_data.h" |
| 16 #include "chrome/browser/sync/profile_sync_service.h" | 16 #include "chrome/browser/sync/profile_sync_service.h" |
| 17 #include "chrome/common/chrome_switches.h" | 17 #include "chrome/common/chrome_switches.h" |
| 18 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
| 19 #include "components/user_prefs/pref_registry_syncable.h" | 19 #include "components/user_prefs/pref_registry_syncable.h" |
| 20 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
| 21 #include "content/public/browser/notification_details.h" | 21 #include "content/public/browser/notification_details.h" |
| 22 #include "content/public/browser/notification_source.h" | 22 #include "content/public/browser/notification_source.h" |
| 23 | 23 |
| 24 namespace browser_sync { | 24 namespace browser_sync { |
| 25 | 25 |
| 26 SyncPrefObserver::~SyncPrefObserver() {} | 26 SyncPrefObserver::~SyncPrefObserver() {} |
| 27 | 27 |
| 28 SyncPrefs::SyncPrefs(PrefService* pref_service) | 28 SyncPrefs::SyncPrefs(PrefService* pref_service) |
| 29 : pref_service_(pref_service) { | 29 : pref_service_(pref_service) { |
| 30 DCHECK(pref_service); |
| 30 RegisterPrefGroups(); | 31 RegisterPrefGroups(); |
| 31 // TODO(tim): Create a Mock instead of maintaining the if(!pref_service_) case | 32 // Watch the preference that indicates sync is managed so we can take |
| 32 // throughout this file. This is a problem now due to lack of injection at | 33 // appropriate action. |
| 33 // ProfileSyncService. Bug 130176. | 34 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_, |
| 34 if (pref_service_) { | 35 base::Bind(&SyncPrefs::OnSyncManagedPrefChanged, |
| 35 // Watch the preference that indicates sync is managed so we can take | 36 base::Unretained(this))); |
| 36 // appropriate action. | |
| 37 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_, | |
| 38 base::Bind(&SyncPrefs::OnSyncManagedPrefChanged, | |
| 39 base::Unretained(this))); | |
| 40 } | |
| 41 } | 37 } |
| 42 | 38 |
| 43 SyncPrefs::~SyncPrefs() { | 39 SyncPrefs::~SyncPrefs() { |
| 44 DCHECK(CalledOnValidThread()); | 40 DCHECK(CalledOnValidThread()); |
| 45 } | 41 } |
| 46 | 42 |
| 47 // static | 43 // static |
| 48 void SyncPrefs::RegisterProfilePrefs( | 44 void SyncPrefs::RegisterProfilePrefs( |
| 49 user_prefs::PrefRegistrySyncable* registry) { | 45 user_prefs::PrefRegistrySyncable* registry) { |
| 50 registry->RegisterBooleanPref( | 46 registry->RegisterBooleanPref( |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 sync_pref_observers_.AddObserver(sync_pref_observer); | 139 sync_pref_observers_.AddObserver(sync_pref_observer); |
| 144 } | 140 } |
| 145 | 141 |
| 146 void SyncPrefs::RemoveSyncPrefObserver(SyncPrefObserver* sync_pref_observer) { | 142 void SyncPrefs::RemoveSyncPrefObserver(SyncPrefObserver* sync_pref_observer) { |
| 147 DCHECK(CalledOnValidThread()); | 143 DCHECK(CalledOnValidThread()); |
| 148 sync_pref_observers_.RemoveObserver(sync_pref_observer); | 144 sync_pref_observers_.RemoveObserver(sync_pref_observer); |
| 149 } | 145 } |
| 150 | 146 |
| 151 void SyncPrefs::ClearPreferences() { | 147 void SyncPrefs::ClearPreferences() { |
| 152 DCHECK(CalledOnValidThread()); | 148 DCHECK(CalledOnValidThread()); |
| 153 CHECK(pref_service_); | |
| 154 pref_service_->ClearPref(prefs::kSyncLastSyncedTime); | 149 pref_service_->ClearPref(prefs::kSyncLastSyncedTime); |
| 155 pref_service_->ClearPref(prefs::kSyncHasSetupCompleted); | 150 pref_service_->ClearPref(prefs::kSyncHasSetupCompleted); |
| 156 pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); | 151 pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); |
| 157 pref_service_->ClearPref(prefs::kSyncKeystoreEncryptionBootstrapToken); | 152 pref_service_->ClearPref(prefs::kSyncKeystoreEncryptionBootstrapToken); |
| 158 | 153 |
| 159 // TODO(nick): The current behavior does not clear | 154 // TODO(nick): The current behavior does not clear |
| 160 // e.g. prefs::kSyncBookmarks. Is that really what we want? | 155 // e.g. prefs::kSyncBookmarks. Is that really what we want? |
| 161 } | 156 } |
| 162 | 157 |
| 163 bool SyncPrefs::HasSyncSetupCompleted() const { | 158 bool SyncPrefs::HasSyncSetupCompleted() const { |
| 164 DCHECK(CalledOnValidThread()); | 159 DCHECK(CalledOnValidThread()); |
| 165 return | 160 return pref_service_->GetBoolean(prefs::kSyncHasSetupCompleted); |
| 166 pref_service_ && | |
| 167 pref_service_->GetBoolean(prefs::kSyncHasSetupCompleted); | |
| 168 } | 161 } |
| 169 | 162 |
| 170 void SyncPrefs::SetSyncSetupCompleted() { | 163 void SyncPrefs::SetSyncSetupCompleted() { |
| 171 DCHECK(CalledOnValidThread()); | 164 DCHECK(CalledOnValidThread()); |
| 172 CHECK(pref_service_); | |
| 173 pref_service_->SetBoolean(prefs::kSyncHasSetupCompleted, true); | 165 pref_service_->SetBoolean(prefs::kSyncHasSetupCompleted, true); |
| 174 SetStartSuppressed(false); | 166 SetStartSuppressed(false); |
| 175 } | 167 } |
| 176 | 168 |
| 177 bool SyncPrefs::SyncHasAuthError() const { | 169 bool SyncPrefs::SyncHasAuthError() const { |
| 178 DCHECK(CalledOnValidThread()); | 170 DCHECK(CalledOnValidThread()); |
| 179 return | 171 return pref_service_->GetBoolean(prefs::kSyncHasAuthError); |
| 180 pref_service_ && | |
| 181 pref_service_->GetBoolean(prefs::kSyncHasAuthError); | |
| 182 } | 172 } |
| 183 | 173 |
| 184 void SyncPrefs::SetSyncAuthError(bool error) { | 174 void SyncPrefs::SetSyncAuthError(bool error) { |
| 185 DCHECK(CalledOnValidThread()); | 175 DCHECK(CalledOnValidThread()); |
| 186 CHECK(pref_service_); | |
| 187 pref_service_->SetBoolean(prefs::kSyncHasAuthError, error); | 176 pref_service_->SetBoolean(prefs::kSyncHasAuthError, error); |
| 188 } | 177 } |
| 189 | 178 |
| 190 bool SyncPrefs::IsStartSuppressed() const { | 179 bool SyncPrefs::IsStartSuppressed() const { |
| 191 DCHECK(CalledOnValidThread()); | 180 DCHECK(CalledOnValidThread()); |
| 192 return | 181 return pref_service_->GetBoolean(prefs::kSyncSuppressStart); |
| 193 pref_service_ && | |
| 194 pref_service_->GetBoolean(prefs::kSyncSuppressStart); | |
| 195 } | 182 } |
| 196 | 183 |
| 197 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { | 184 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { |
| 198 DCHECK(CalledOnValidThread()); | 185 DCHECK(CalledOnValidThread()); |
| 199 CHECK(pref_service_); | |
| 200 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); | 186 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); |
| 201 } | 187 } |
| 202 | 188 |
| 203 std::string SyncPrefs::GetGoogleServicesUsername() const { | 189 std::string SyncPrefs::GetGoogleServicesUsername() const { |
| 204 DCHECK(CalledOnValidThread()); | 190 DCHECK(CalledOnValidThread()); |
| 205 return pref_service_ | 191 return pref_service_->GetString(prefs::kGoogleServicesUsername); |
| 206 ? pref_service_->GetString(prefs::kGoogleServicesUsername) | |
| 207 : std::string(); | |
| 208 } | 192 } |
| 209 | 193 |
| 210 base::Time SyncPrefs::GetLastSyncedTime() const { | 194 base::Time SyncPrefs::GetLastSyncedTime() const { |
| 211 DCHECK(CalledOnValidThread()); | 195 DCHECK(CalledOnValidThread()); |
| 212 return | 196 return |
| 213 base::Time::FromInternalValue( | 197 base::Time::FromInternalValue( |
| 214 pref_service_ ? | 198 pref_service_->GetInt64(prefs::kSyncLastSyncedTime)); |
| 215 pref_service_->GetInt64(prefs::kSyncLastSyncedTime) : 0); | |
| 216 } | 199 } |
| 217 | 200 |
| 218 void SyncPrefs::SetLastSyncedTime(base::Time time) { | 201 void SyncPrefs::SetLastSyncedTime(base::Time time) { |
| 219 DCHECK(CalledOnValidThread()); | 202 DCHECK(CalledOnValidThread()); |
| 220 CHECK(pref_service_); | |
| 221 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); | 203 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); |
| 222 } | 204 } |
| 223 | 205 |
| 224 bool SyncPrefs::HasKeepEverythingSynced() const { | 206 bool SyncPrefs::HasKeepEverythingSynced() const { |
| 225 DCHECK(CalledOnValidThread()); | 207 DCHECK(CalledOnValidThread()); |
| 226 return | 208 return pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); |
| 227 pref_service_ && | |
| 228 pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); | |
| 229 } | 209 } |
| 230 | 210 |
| 231 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { | 211 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { |
| 232 DCHECK(CalledOnValidThread()); | 212 DCHECK(CalledOnValidThread()); |
| 233 CHECK(pref_service_); | |
| 234 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, | 213 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, |
| 235 keep_everything_synced); | 214 keep_everything_synced); |
| 236 } | 215 } |
| 237 | 216 |
| 238 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes( | 217 syncer::ModelTypeSet SyncPrefs::GetPreferredDataTypes( |
| 239 syncer::ModelTypeSet registered_types) const { | 218 syncer::ModelTypeSet registered_types) const { |
| 240 DCHECK(CalledOnValidThread()); | 219 DCHECK(CalledOnValidThread()); |
| 241 if (!pref_service_) { | |
| 242 return syncer::ModelTypeSet(); | |
| 243 } | |
| 244 | 220 |
| 245 // First remove any datatypes that are inconsistent with the current policies | 221 // First remove any datatypes that are inconsistent with the current policies |
| 246 // on the client (so that "keep everything synced" doesn't include them). | 222 // on the client (so that "keep everything synced" doesn't include them). |
| 247 if (pref_service_->HasPrefPath(prefs::kSavingBrowserHistoryDisabled) && | 223 if (pref_service_->HasPrefPath(prefs::kSavingBrowserHistoryDisabled) && |
| 248 pref_service_->GetBoolean(prefs::kSavingBrowserHistoryDisabled)) { | 224 pref_service_->GetBoolean(prefs::kSavingBrowserHistoryDisabled)) { |
| 249 registered_types.Remove(syncer::TYPED_URLS); | 225 registered_types.Remove(syncer::TYPED_URLS); |
| 250 } | 226 } |
| 251 | 227 |
| 252 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { | 228 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { |
| 253 return registered_types; | 229 return registered_types; |
| 254 } | 230 } |
| 255 | 231 |
| 256 syncer::ModelTypeSet preferred_types; | 232 syncer::ModelTypeSet preferred_types; |
| 257 for (syncer::ModelTypeSet::Iterator it = registered_types.First(); | 233 for (syncer::ModelTypeSet::Iterator it = registered_types.First(); |
| 258 it.Good(); it.Inc()) { | 234 it.Good(); it.Inc()) { |
| 259 if (GetDataTypePreferred(it.Get())) { | 235 if (GetDataTypePreferred(it.Get())) { |
| 260 preferred_types.Put(it.Get()); | 236 preferred_types.Put(it.Get()); |
| 261 } | 237 } |
| 262 } | 238 } |
| 263 return ResolvePrefGroups(registered_types, preferred_types); | 239 return ResolvePrefGroups(registered_types, preferred_types); |
| 264 } | 240 } |
| 265 | 241 |
| 266 void SyncPrefs::SetPreferredDataTypes( | 242 void SyncPrefs::SetPreferredDataTypes( |
| 267 syncer::ModelTypeSet registered_types, | 243 syncer::ModelTypeSet registered_types, |
| 268 syncer::ModelTypeSet preferred_types) { | 244 syncer::ModelTypeSet preferred_types) { |
| 269 DCHECK(CalledOnValidThread()); | 245 DCHECK(CalledOnValidThread()); |
| 270 CHECK(pref_service_); | |
| 271 DCHECK(registered_types.HasAll(preferred_types)); | 246 DCHECK(registered_types.HasAll(preferred_types)); |
| 272 preferred_types = ResolvePrefGroups(registered_types, preferred_types); | 247 preferred_types = ResolvePrefGroups(registered_types, preferred_types); |
| 273 for (syncer::ModelTypeSet::Iterator i = registered_types.First(); | 248 for (syncer::ModelTypeSet::Iterator i = registered_types.First(); |
| 274 i.Good(); i.Inc()) { | 249 i.Good(); i.Inc()) { |
| 275 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); | 250 SetDataTypePreferred(i.Get(), preferred_types.Has(i.Get())); |
| 276 } | 251 } |
| 277 } | 252 } |
| 278 | 253 |
| 279 bool SyncPrefs::IsManaged() const { | 254 bool SyncPrefs::IsManaged() const { |
| 280 DCHECK(CalledOnValidThread()); | 255 DCHECK(CalledOnValidThread()); |
| 281 return pref_service_ && pref_service_->GetBoolean(prefs::kSyncManaged); | 256 return pref_service_->GetBoolean(prefs::kSyncManaged); |
| 282 } | 257 } |
| 283 | 258 |
| 284 std::string SyncPrefs::GetEncryptionBootstrapToken() const { | 259 std::string SyncPrefs::GetEncryptionBootstrapToken() const { |
| 285 DCHECK(CalledOnValidThread()); | 260 DCHECK(CalledOnValidThread()); |
| 286 return pref_service_ | 261 return pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken); |
| 287 ? pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken) | |
| 288 : std::string(); | |
| 289 } | 262 } |
| 290 | 263 |
| 291 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { | 264 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { |
| 292 DCHECK(CalledOnValidThread()); | 265 DCHECK(CalledOnValidThread()); |
| 293 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); | 266 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); |
| 294 } | 267 } |
| 295 | 268 |
| 296 std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const { | 269 std::string SyncPrefs::GetKeystoreEncryptionBootstrapToken() const { |
| 297 DCHECK(CalledOnValidThread()); | 270 DCHECK(CalledOnValidThread()); |
| 298 return pref_service_ ? pref_service_->GetString( | 271 return pref_service_->GetString( |
| 299 prefs::kSyncKeystoreEncryptionBootstrapToken) | 272 prefs::kSyncKeystoreEncryptionBootstrapToken); |
| 300 : std::string(); | |
| 301 } | 273 } |
| 302 | 274 |
| 303 void SyncPrefs::SetKeystoreEncryptionBootstrapToken(const std::string& token) { | 275 void SyncPrefs::SetKeystoreEncryptionBootstrapToken(const std::string& token) { |
| 304 DCHECK(CalledOnValidThread()); | 276 DCHECK(CalledOnValidThread()); |
| 305 pref_service_->SetString(prefs::kSyncKeystoreEncryptionBootstrapToken, token); | 277 pref_service_->SetString(prefs::kSyncKeystoreEncryptionBootstrapToken, token); |
| 306 } | 278 } |
| 307 | 279 |
| 308 std::string SyncPrefs::GetSyncSessionsGUID() const { | 280 std::string SyncPrefs::GetSyncSessionsGUID() const { |
| 309 DCHECK(CalledOnValidThread()); | 281 DCHECK(CalledOnValidThread()); |
| 310 return pref_service_ ? pref_service_->GetString(prefs::kSyncSessionsGUID) | 282 return pref_service_->GetString(prefs::kSyncSessionsGUID); |
| 311 : std::string(); | |
| 312 } | 283 } |
| 313 | 284 |
| 314 void SyncPrefs::SetSyncSessionsGUID(const std::string& guid) { | 285 void SyncPrefs::SetSyncSessionsGUID(const std::string& guid) { |
| 315 DCHECK(CalledOnValidThread()); | 286 DCHECK(CalledOnValidThread()); |
| 316 pref_service_->SetString(prefs::kSyncSessionsGUID, guid); | 287 pref_service_->SetString(prefs::kSyncSessionsGUID, guid); |
| 317 } | 288 } |
| 318 | 289 |
| 319 // static | 290 // static |
| 320 const char* SyncPrefs::GetPrefNameForDataType(syncer::ModelType data_type) { | 291 const char* SyncPrefs::GetPrefNameForDataType(syncer::ModelType data_type) { |
| 321 switch (data_type) { | 292 switch (data_type) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 default: | 341 default: |
| 371 break; | 342 break; |
| 372 } | 343 } |
| 373 NOTREACHED(); | 344 NOTREACHED(); |
| 374 return NULL; | 345 return NULL; |
| 375 } | 346 } |
| 376 | 347 |
| 377 #if defined(OS_CHROMEOS) | 348 #if defined(OS_CHROMEOS) |
| 378 std::string SyncPrefs::GetSpareBootstrapToken() const { | 349 std::string SyncPrefs::GetSpareBootstrapToken() const { |
| 379 DCHECK(CalledOnValidThread()); | 350 DCHECK(CalledOnValidThread()); |
| 380 return pref_service_ ? | 351 return pref_service_->GetString(prefs::kSyncSpareBootstrapToken); |
| 381 pref_service_->GetString(prefs::kSyncSpareBootstrapToken) : ""; | |
| 382 } | 352 } |
| 383 | 353 |
| 384 void SyncPrefs::SetSpareBootstrapToken(const std::string& token) { | 354 void SyncPrefs::SetSpareBootstrapToken(const std::string& token) { |
| 385 DCHECK(CalledOnValidThread()); | 355 DCHECK(CalledOnValidThread()); |
| 386 pref_service_->SetString(prefs::kSyncSpareBootstrapToken, token); | 356 pref_service_->SetString(prefs::kSyncSpareBootstrapToken, token); |
| 387 } | 357 } |
| 388 #endif | 358 #endif |
| 389 | 359 |
| 390 void SyncPrefs::AcknowledgeSyncedTypes(syncer::ModelTypeSet types) { | 360 void SyncPrefs::AcknowledgeSyncedTypes(syncer::ModelTypeSet types) { |
| 391 DCHECK(CalledOnValidThread()); | 361 DCHECK(CalledOnValidThread()); |
| 392 CHECK(pref_service_); | |
| 393 // Add the types to the current set of acknowledged | 362 // Add the types to the current set of acknowledged |
| 394 // types, and then store the resulting set in prefs. | 363 // types, and then store the resulting set in prefs. |
| 395 const syncer::ModelTypeSet acknowledged_types = | 364 const syncer::ModelTypeSet acknowledged_types = |
| 396 Union(types, | 365 Union(types, |
| 397 syncer::ModelTypeSetFromValue( | 366 syncer::ModelTypeSetFromValue( |
| 398 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes))); | 367 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes))); |
| 399 | 368 |
| 400 scoped_ptr<ListValue> value( | 369 scoped_ptr<ListValue> value( |
| 401 syncer::ModelTypeSetToValue(acknowledged_types)); | 370 syncer::ModelTypeSetToValue(acknowledged_types)); |
| 402 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); | 371 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); |
| 403 } | 372 } |
| 404 | 373 |
| 405 void SyncPrefs::OnSyncManagedPrefChanged() { | 374 void SyncPrefs::OnSyncManagedPrefChanged() { |
| 406 DCHECK(CalledOnValidThread()); | 375 DCHECK(CalledOnValidThread()); |
| 407 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, | 376 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, |
| 408 OnSyncManagedPrefChange(*pref_sync_managed_)); | 377 OnSyncManagedPrefChange(*pref_sync_managed_)); |
| 409 } | 378 } |
| 410 | 379 |
| 411 void SyncPrefs::SetManagedForTest(bool is_managed) { | 380 void SyncPrefs::SetManagedForTest(bool is_managed) { |
| 412 DCHECK(CalledOnValidThread()); | 381 DCHECK(CalledOnValidThread()); |
| 413 CHECK(pref_service_); | |
| 414 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); | 382 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); |
| 415 } | 383 } |
| 416 | 384 |
| 417 syncer::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { | 385 syncer::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { |
| 418 DCHECK(CalledOnValidThread()); | 386 DCHECK(CalledOnValidThread()); |
| 419 if (!pref_service_) { | |
| 420 return syncer::ModelTypeSet(); | |
| 421 } | |
| 422 return syncer::ModelTypeSetFromValue( | 387 return syncer::ModelTypeSetFromValue( |
| 423 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); | 388 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); |
| 424 } | 389 } |
| 425 | 390 |
| 426 void SyncPrefs::RegisterPrefGroups() { | 391 void SyncPrefs::RegisterPrefGroups() { |
| 427 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); | 392 pref_groups_[syncer::APPS].Put(syncer::APP_NOTIFICATIONS); |
| 428 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); | 393 pref_groups_[syncer::APPS].Put(syncer::APP_SETTINGS); |
| 429 | 394 |
| 430 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); | 395 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); |
| 431 | 396 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 464 return; | 429 return; |
| 465 } | 430 } |
| 466 registry->RegisterBooleanPref( | 431 registry->RegisterBooleanPref( |
| 467 pref_name, | 432 pref_name, |
| 468 is_preferred, | 433 is_preferred, |
| 469 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 434 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 470 } | 435 } |
| 471 | 436 |
| 472 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { | 437 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { |
| 473 DCHECK(CalledOnValidThread()); | 438 DCHECK(CalledOnValidThread()); |
| 474 if (!pref_service_) { | |
| 475 return false; | |
| 476 } | |
| 477 const char* pref_name = GetPrefNameForDataType(type); | 439 const char* pref_name = GetPrefNameForDataType(type); |
| 478 if (!pref_name) { | 440 if (!pref_name) { |
| 479 NOTREACHED(); | 441 NOTREACHED(); |
| 480 return false; | 442 return false; |
| 481 } | 443 } |
| 482 if (type == syncer::PROXY_TABS && | 444 if (type == syncer::PROXY_TABS && |
| 483 pref_service_->GetUserPrefValue(pref_name) == NULL && | 445 pref_service_->GetUserPrefValue(pref_name) == NULL && |
| 484 pref_service_->IsUserModifiablePreference(pref_name)) { | 446 pref_service_->IsUserModifiablePreference(pref_name)) { |
| 485 // If there is no tab sync preference yet (i.e. newly enabled type), | 447 // If there is no tab sync preference yet (i.e. newly enabled type), |
| 486 // default to the session sync preference value. | 448 // default to the session sync preference value. |
| 487 pref_name = GetPrefNameForDataType(syncer::SESSIONS); | 449 pref_name = GetPrefNameForDataType(syncer::SESSIONS); |
| 488 } | 450 } |
| 489 | 451 |
| 490 return pref_service_->GetBoolean(pref_name); | 452 return pref_service_->GetBoolean(pref_name); |
| 491 } | 453 } |
| 492 | 454 |
| 493 void SyncPrefs::SetDataTypePreferred( | 455 void SyncPrefs::SetDataTypePreferred( |
| 494 syncer::ModelType type, bool is_preferred) { | 456 syncer::ModelType type, bool is_preferred) { |
| 495 DCHECK(CalledOnValidThread()); | 457 DCHECK(CalledOnValidThread()); |
| 496 CHECK(pref_service_); | |
| 497 const char* pref_name = GetPrefNameForDataType(type); | 458 const char* pref_name = GetPrefNameForDataType(type); |
| 498 if (!pref_name) { | 459 if (!pref_name) { |
| 499 NOTREACHED(); | 460 NOTREACHED(); |
| 500 return; | 461 return; |
| 501 } | 462 } |
| 502 pref_service_->SetBoolean(pref_name, is_preferred); | 463 pref_service_->SetBoolean(pref_name, is_preferred); |
| 503 } | 464 } |
| 504 | 465 |
| 505 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( | 466 syncer::ModelTypeSet SyncPrefs::ResolvePrefGroups( |
| 506 syncer::ModelTypeSet registered_types, | 467 syncer::ModelTypeSet registered_types, |
| 507 syncer::ModelTypeSet types) const { | 468 syncer::ModelTypeSet types) const { |
| 508 DCHECK(registered_types.HasAll(types)); | 469 DCHECK(registered_types.HasAll(types)); |
| 509 syncer::ModelTypeSet types_with_groups = types; | 470 syncer::ModelTypeSet types_with_groups = types; |
| 510 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); | 471 for (PrefGroupsMap::const_iterator i = pref_groups_.begin(); |
| 511 i != pref_groups_.end(); ++i) { | 472 i != pref_groups_.end(); ++i) { |
| 512 if (types.Has(i->first)) | 473 if (types.Has(i->first)) |
| 513 types_with_groups.PutAll(i->second); | 474 types_with_groups.PutAll(i->second); |
| 514 } | 475 } |
| 515 types_with_groups.RetainAll(registered_types); | 476 types_with_groups.RetainAll(registered_types); |
| 516 return types_with_groups; | 477 return types_with_groups; |
| 517 } | 478 } |
| 518 | 479 |
| 519 } // namespace browser_sync | 480 } // namespace browser_sync |
| OLD | NEW |