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 |