| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/logging.h" | 7 #include "base/logging.h" |
| 8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
| 9 #include "chrome/browser/prefs/pref_service.h" | 9 #include "chrome/browser/prefs/pref_service.h" |
| 10 #include "chrome/common/chrome_notification_types.h" | 10 #include "chrome/common/chrome_notification_types.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 | 42 |
| 43 void SyncPrefs::ClearPreferences() { | 43 void SyncPrefs::ClearPreferences() { |
| 44 DCHECK(non_thread_safe_.CalledOnValidThread()); | 44 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 45 CHECK(pref_service_); | 45 CHECK(pref_service_); |
| 46 pref_service_->ClearPref(prefs::kSyncLastSyncedTime); | 46 pref_service_->ClearPref(prefs::kSyncLastSyncedTime); |
| 47 pref_service_->ClearPref(prefs::kSyncHasSetupCompleted); | 47 pref_service_->ClearPref(prefs::kSyncHasSetupCompleted); |
| 48 pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); | 48 pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); |
| 49 | 49 |
| 50 // TODO(nick): The current behavior does not clear | 50 // TODO(nick): The current behavior does not clear |
| 51 // e.g. prefs::kSyncBookmarks. Is that really what we want? | 51 // e.g. prefs::kSyncBookmarks. Is that really what we want? |
| 52 pref_service_->ScheduleSavePersistentPrefs(); | |
| 53 } | 52 } |
| 54 | 53 |
| 55 bool SyncPrefs::HasSyncSetupCompleted() const { | 54 bool SyncPrefs::HasSyncSetupCompleted() const { |
| 56 DCHECK(non_thread_safe_.CalledOnValidThread()); | 55 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 57 return | 56 return |
| 58 pref_service_ && | 57 pref_service_ && |
| 59 pref_service_->GetBoolean(prefs::kSyncHasSetupCompleted); | 58 pref_service_->GetBoolean(prefs::kSyncHasSetupCompleted); |
| 60 } | 59 } |
| 61 | 60 |
| 62 void SyncPrefs::SetSyncSetupCompleted() { | 61 void SyncPrefs::SetSyncSetupCompleted() { |
| 63 DCHECK(non_thread_safe_.CalledOnValidThread()); | 62 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 64 CHECK(pref_service_); | 63 CHECK(pref_service_); |
| 65 pref_service_->SetBoolean(prefs::kSyncHasSetupCompleted, true); | 64 pref_service_->SetBoolean(prefs::kSyncHasSetupCompleted, true); |
| 66 SetStartSuppressed(false); | 65 SetStartSuppressed(false); |
| 67 pref_service_->ScheduleSavePersistentPrefs(); | |
| 68 } | 66 } |
| 69 | 67 |
| 70 bool SyncPrefs::IsStartSuppressed() const { | 68 bool SyncPrefs::IsStartSuppressed() const { |
| 71 DCHECK(non_thread_safe_.CalledOnValidThread()); | 69 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 72 return | 70 return |
| 73 pref_service_ && | 71 pref_service_ && |
| 74 pref_service_->GetBoolean(prefs::kSyncSuppressStart); | 72 pref_service_->GetBoolean(prefs::kSyncSuppressStart); |
| 75 } | 73 } |
| 76 | 74 |
| 77 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { | 75 void SyncPrefs::SetStartSuppressed(bool is_suppressed) { |
| 78 DCHECK(non_thread_safe_.CalledOnValidThread()); | 76 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 79 CHECK(pref_service_); | 77 CHECK(pref_service_); |
| 80 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); | 78 pref_service_->SetBoolean(prefs::kSyncSuppressStart, is_suppressed); |
| 81 pref_service_->ScheduleSavePersistentPrefs(); | |
| 82 } | 79 } |
| 83 | 80 |
| 84 base::Time SyncPrefs::GetLastSyncedTime() const { | 81 base::Time SyncPrefs::GetLastSyncedTime() const { |
| 85 DCHECK(non_thread_safe_.CalledOnValidThread()); | 82 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 86 return | 83 return |
| 87 base::Time::FromInternalValue( | 84 base::Time::FromInternalValue( |
| 88 pref_service_ ? | 85 pref_service_ ? |
| 89 pref_service_->GetInt64(prefs::kSyncLastSyncedTime) : 0); | 86 pref_service_->GetInt64(prefs::kSyncLastSyncedTime) : 0); |
| 90 } | 87 } |
| 91 | 88 |
| 92 void SyncPrefs::SetLastSyncedTime(base::Time time) { | 89 void SyncPrefs::SetLastSyncedTime(base::Time time) { |
| 93 DCHECK(non_thread_safe_.CalledOnValidThread()); | 90 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 94 CHECK(pref_service_); | 91 CHECK(pref_service_); |
| 95 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); | 92 pref_service_->SetInt64(prefs::kSyncLastSyncedTime, time.ToInternalValue()); |
| 96 pref_service_->ScheduleSavePersistentPrefs(); | |
| 97 } | 93 } |
| 98 | 94 |
| 99 bool SyncPrefs::HasKeepEverythingSynced() const { | 95 bool SyncPrefs::HasKeepEverythingSynced() const { |
| 100 DCHECK(non_thread_safe_.CalledOnValidThread()); | 96 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 101 return | 97 return |
| 102 pref_service_ && | 98 pref_service_ && |
| 103 pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); | 99 pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced); |
| 104 } | 100 } |
| 105 | 101 |
| 106 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { | 102 void SyncPrefs::SetKeepEverythingSynced(bool keep_everything_synced) { |
| 107 DCHECK(non_thread_safe_.CalledOnValidThread()); | 103 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 108 CHECK(pref_service_); | 104 CHECK(pref_service_); |
| 109 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, | 105 pref_service_->SetBoolean(prefs::kSyncKeepEverythingSynced, |
| 110 keep_everything_synced); | 106 keep_everything_synced); |
| 111 pref_service_->ScheduleSavePersistentPrefs(); | |
| 112 } | 107 } |
| 113 | 108 |
| 114 syncable::ModelTypeSet SyncPrefs::GetPreferredDataTypes( | 109 syncable::ModelTypeSet SyncPrefs::GetPreferredDataTypes( |
| 115 const syncable::ModelTypeSet& registered_types) const { | 110 const syncable::ModelTypeSet& registered_types) const { |
| 116 DCHECK(non_thread_safe_.CalledOnValidThread()); | 111 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 117 if (!pref_service_) { | 112 if (!pref_service_) { |
| 118 return syncable::ModelTypeSet(); | 113 return syncable::ModelTypeSet(); |
| 119 } | 114 } |
| 120 | 115 |
| 121 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { | 116 if (pref_service_->GetBoolean(prefs::kSyncKeepEverythingSynced)) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 DCHECK(non_thread_safe_.CalledOnValidThread()); | 178 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 184 return | 179 return |
| 185 pref_service_ ? | 180 pref_service_ ? |
| 186 pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken) : ""; | 181 pref_service_->GetString(prefs::kSyncEncryptionBootstrapToken) : ""; |
| 187 } | 182 } |
| 188 | 183 |
| 189 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { | 184 void SyncPrefs::SetEncryptionBootstrapToken(const std::string& token) { |
| 190 DCHECK(non_thread_safe_.CalledOnValidThread()); | 185 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 191 CHECK(pref_service_); | 186 CHECK(pref_service_); |
| 192 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); | 187 pref_service_->SetString(prefs::kSyncEncryptionBootstrapToken, token); |
| 193 pref_service_->ScheduleSavePersistentPrefs(); | |
| 194 } | 188 } |
| 195 | 189 |
| 196 void SyncPrefs::AcknowledgeSyncedTypes( | 190 void SyncPrefs::AcknowledgeSyncedTypes( |
| 197 const syncable::ModelTypeSet& types) { | 191 const syncable::ModelTypeSet& types) { |
| 198 DCHECK(non_thread_safe_.CalledOnValidThread()); | 192 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 199 CHECK(pref_service_); | 193 CHECK(pref_service_); |
| 200 syncable::ModelTypeSet acknowledged_types = | 194 syncable::ModelTypeSet acknowledged_types = |
| 201 syncable::ModelTypeSetFromValue( | 195 syncable::ModelTypeSetFromValue( |
| 202 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); | 196 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); |
| 203 | 197 |
| 204 // Add the types to the current set of acknowledged | 198 // Add the types to the current set of acknowledged |
| 205 // types, and then store the resulting set in prefs. | 199 // types, and then store the resulting set in prefs. |
| 206 { | 200 { |
| 207 syncable::ModelTypeSet temp; | 201 syncable::ModelTypeSet temp; |
| 208 std::set_union(acknowledged_types.begin(), acknowledged_types.end(), | 202 std::set_union(acknowledged_types.begin(), acknowledged_types.end(), |
| 209 types.begin(), types.end(), | 203 types.begin(), types.end(), |
| 210 std::inserter(temp, temp.end())); | 204 std::inserter(temp, temp.end())); |
| 211 std::swap(acknowledged_types, temp); | 205 std::swap(acknowledged_types, temp); |
| 212 } | 206 } |
| 213 | 207 |
| 214 scoped_ptr<ListValue> value( | 208 scoped_ptr<ListValue> value( |
| 215 syncable::ModelTypeSetToValue(acknowledged_types)); | 209 syncable::ModelTypeSetToValue(acknowledged_types)); |
| 216 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); | 210 pref_service_->Set(prefs::kSyncAcknowledgedSyncTypes, *value); |
| 217 pref_service_->ScheduleSavePersistentPrefs(); | |
| 218 } | 211 } |
| 219 | 212 |
| 220 void SyncPrefs::Observe(int type, | 213 void SyncPrefs::Observe(int type, |
| 221 const NotificationSource& source, | 214 const NotificationSource& source, |
| 222 const NotificationDetails& details) { | 215 const NotificationDetails& details) { |
| 223 DCHECK(non_thread_safe_.CalledOnValidThread()); | 216 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 224 DCHECK(Source<PrefService>(pref_service_) == source); | 217 DCHECK(Source<PrefService>(pref_service_) == source); |
| 225 switch (type) { | 218 switch (type) { |
| 226 case chrome::NOTIFICATION_PREF_CHANGED: { | 219 case chrome::NOTIFICATION_PREF_CHANGED: { |
| 227 const std::string* pref_name = | 220 const std::string* pref_name = |
| 228 Details<const std::string>(details).ptr(); | 221 Details<const std::string>(details).ptr(); |
| 229 if (*pref_name == prefs::kSyncManaged) { | 222 if (*pref_name == prefs::kSyncManaged) { |
| 230 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, | 223 FOR_EACH_OBSERVER(SyncPrefObserver, sync_pref_observers_, |
| 231 OnSyncManagedPrefChange(*pref_sync_managed_)); | 224 OnSyncManagedPrefChange(*pref_sync_managed_)); |
| 232 } | 225 } |
| 233 break; | 226 break; |
| 234 } | 227 } |
| 235 default: | 228 default: |
| 236 NOTREACHED(); | 229 NOTREACHED(); |
| 237 break; | 230 break; |
| 238 } | 231 } |
| 239 } | 232 } |
| 240 | 233 |
| 241 void SyncPrefs::SetManagedForTest(bool is_managed) { | 234 void SyncPrefs::SetManagedForTest(bool is_managed) { |
| 242 DCHECK(non_thread_safe_.CalledOnValidThread()); | 235 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 243 CHECK(pref_service_); | 236 CHECK(pref_service_); |
| 244 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); | 237 pref_service_->SetBoolean(prefs::kSyncManaged, is_managed); |
| 245 pref_service_->ScheduleSavePersistentPrefs(); | |
| 246 } | 238 } |
| 247 | 239 |
| 248 syncable::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { | 240 syncable::ModelTypeSet SyncPrefs::GetAcknowledgeSyncedTypesForTest() const { |
| 249 DCHECK(non_thread_safe_.CalledOnValidThread()); | 241 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 250 if (!pref_service_) { | 242 if (!pref_service_) { |
| 251 return syncable::ModelTypeSet(); | 243 return syncable::ModelTypeSet(); |
| 252 } | 244 } |
| 253 return syncable::ModelTypeSetFromValue( | 245 return syncable::ModelTypeSetFromValue( |
| 254 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); | 246 *pref_service_->GetList(prefs::kSyncAcknowledgedSyncTypes)); |
| 255 } | 247 } |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 void SyncPrefs::SetDataTypePreferred( | 386 void SyncPrefs::SetDataTypePreferred( |
| 395 syncable::ModelType type, bool is_preferred) { | 387 syncable::ModelType type, bool is_preferred) { |
| 396 DCHECK(non_thread_safe_.CalledOnValidThread()); | 388 DCHECK(non_thread_safe_.CalledOnValidThread()); |
| 397 CHECK(pref_service_); | 389 CHECK(pref_service_); |
| 398 const char* pref_name = GetPrefNameForDataType(type); | 390 const char* pref_name = GetPrefNameForDataType(type); |
| 399 if (!pref_name) { | 391 if (!pref_name) { |
| 400 NOTREACHED(); | 392 NOTREACHED(); |
| 401 return; | 393 return; |
| 402 } | 394 } |
| 403 pref_service_->SetBoolean(pref_name, is_preferred); | 395 pref_service_->SetBoolean(pref_name, is_preferred); |
| 404 pref_service_->ScheduleSavePersistentPrefs(); | |
| 405 } | 396 } |
| 406 | 397 |
| 407 } // namespace browser_sync | 398 } // namespace browser_sync |
| OLD | NEW |