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/logging.h" | 7 #include "base/logging.h" |
8 #include "base/string_number_conversions.h" | 8 #include "base/string_number_conversions.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "chrome/browser/prefs/pref_service.h" | 11 #include "chrome/browser/prefs/pref_service.h" |
12 #include "chrome/common/chrome_notification_types.h" | 12 #include "chrome/common/chrome_notification_types.h" |
13 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
14 #include "content/public/browser/notification_details.h" | 14 #include "content/public/browser/notification_details.h" |
15 #include "content/public/browser/notification_source.h" | 15 #include "content/public/browser/notification_source.h" |
16 | 16 |
17 namespace browser_sync { | 17 namespace browser_sync { |
18 | 18 |
19 SyncPrefObserver::~SyncPrefObserver() {} | 19 SyncPrefObserver::~SyncPrefObserver() {} |
20 | 20 |
21 SyncPrefs::SyncPrefs(PrefService* pref_service) | 21 SyncPrefs::SyncPrefs(PrefServiceSyncable* pref_service) |
22 : pref_service_(pref_service) { | 22 : pref_service_(pref_service) { |
23 RegisterPrefGroups(); | 23 RegisterPrefGroups(); |
24 // TODO(tim): Create a Mock instead of maintaining the if(!pref_service_) case | 24 // TODO(tim): Create a Mock instead of maintaining the if(!pref_service_) case |
25 // throughout this file. This is a problem now due to lack of injection at | 25 // throughout this file. This is a problem now due to lack of injection at |
26 // ProfileSyncService. Bug 130176. | 26 // ProfileSyncService. Bug 130176. |
27 if (pref_service_) { | 27 if (pref_service_) { |
28 RegisterPreferences(); | 28 RegisterPreferences(); |
29 // Watch the preference that indicates sync is managed so we can take | 29 // Watch the preference that indicates sync is managed so we can take |
30 // appropriate action. | 30 // appropriate action. |
31 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_, | 31 pref_sync_managed_.Init(prefs::kSyncManaged, pref_service_, |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
293 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); | 293 pref_groups_[syncer::AUTOFILL].Put(syncer::AUTOFILL_PROFILE); |
294 | 294 |
295 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); | 295 pref_groups_[syncer::EXTENSIONS].Put(syncer::EXTENSION_SETTINGS); |
296 | 296 |
297 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); | 297 pref_groups_[syncer::PREFERENCES].Put(syncer::SEARCH_ENGINES); |
298 | 298 |
299 // TODO(akalin): Revisit this once UI lands. | 299 // TODO(akalin): Revisit this once UI lands. |
300 pref_groups_[syncer::SESSIONS].Put(syncer::HISTORY_DELETE_DIRECTIVES); | 300 pref_groups_[syncer::SESSIONS].Put(syncer::HISTORY_DELETE_DIRECTIVES); |
301 } | 301 } |
302 | 302 |
303 void SyncPrefs::RegisterPreferences() { | 303 void SyncPrefs::RegisterPreferences() { |
Mattias Nissler (ping if slow)
2012/12/20 13:41:52
Random note: This should be called via browser_pre
Jói
2012/12/20 16:30:31
Added a TODO(joi).
| |
304 DCHECK(CalledOnValidThread()); | 304 DCHECK(CalledOnValidThread()); |
305 CHECK(pref_service_); | 305 CHECK(pref_service_); |
306 if (pref_service_->FindPreference(prefs::kSyncLastSyncedTime)) { | 306 if (pref_service_->FindPreference(prefs::kSyncLastSyncedTime)) { |
307 return; | 307 return; |
308 } | 308 } |
309 | 309 |
310 pref_service_->RegisterBooleanPref(prefs::kSyncHasSetupCompleted, | 310 pref_service_->RegisterBooleanPref(prefs::kSyncHasSetupCompleted, |
311 false, | 311 false, |
312 PrefService::UNSYNCABLE_PREF); | 312 PrefServiceSyncable::UNSYNCABLE_PREF); |
313 pref_service_->RegisterBooleanPref(prefs::kSyncSuppressStart, | 313 pref_service_->RegisterBooleanPref(prefs::kSyncSuppressStart, |
314 false, | 314 false, |
315 PrefService::UNSYNCABLE_PREF); | 315 PrefServiceSyncable::UNSYNCABLE_PREF); |
316 pref_service_->RegisterInt64Pref(prefs::kSyncLastSyncedTime, | 316 pref_service_->RegisterInt64Pref(prefs::kSyncLastSyncedTime, |
317 0, | 317 0, |
318 PrefService::UNSYNCABLE_PREF); | 318 PrefServiceSyncable::UNSYNCABLE_PREF); |
319 | 319 |
320 // If you've never synced before, or if you're using Chrome OS or Android, | 320 // If you've never synced before, or if you're using Chrome OS or Android, |
321 // all datatypes are on by default. | 321 // all datatypes are on by default. |
322 // TODO(nick): Perhaps a better model would be to always default to false, | 322 // TODO(nick): Perhaps a better model would be to always default to false, |
323 // and explicitly call SetDataTypes() when the user shows the wizard. | 323 // and explicitly call SetDataTypes() when the user shows the wizard. |
324 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) | 324 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) |
325 bool enable_by_default = true; | 325 bool enable_by_default = true; |
326 #else | 326 #else |
327 bool enable_by_default = | 327 bool enable_by_default = |
328 !pref_service_->HasPrefPath(prefs::kSyncHasSetupCompleted); | 328 !pref_service_->HasPrefPath(prefs::kSyncHasSetupCompleted); |
329 #endif | 329 #endif |
330 | 330 |
331 pref_service_->RegisterBooleanPref(prefs::kSyncKeepEverythingSynced, | 331 pref_service_->RegisterBooleanPref(prefs::kSyncKeepEverythingSynced, |
332 enable_by_default, | 332 enable_by_default, |
333 PrefService::UNSYNCABLE_PREF); | 333 PrefServiceSyncable::UNSYNCABLE_PREF); |
334 | 334 |
335 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 335 syncer::ModelTypeSet user_types = syncer::UserTypes(); |
336 | 336 |
337 // Treat bookmarks specially. | 337 // Treat bookmarks specially. |
338 RegisterDataTypePreferredPref(syncer::BOOKMARKS, true); | 338 RegisterDataTypePreferredPref(syncer::BOOKMARKS, true); |
339 user_types.Remove(syncer::BOOKMARKS); | 339 user_types.Remove(syncer::BOOKMARKS); |
340 | 340 |
341 for (syncer::ModelTypeSet::Iterator it = user_types.First(); | 341 for (syncer::ModelTypeSet::Iterator it = user_types.First(); |
342 it.Good(); it.Inc()) { | 342 it.Good(); it.Inc()) { |
343 RegisterDataTypePreferredPref(it.Get(), enable_by_default); | 343 RegisterDataTypePreferredPref(it.Get(), enable_by_default); |
344 } | 344 } |
345 | 345 |
346 pref_service_->RegisterBooleanPref(prefs::kSyncManaged, | 346 pref_service_->RegisterBooleanPref(prefs::kSyncManaged, |
347 false, | 347 false, |
348 PrefService::UNSYNCABLE_PREF); | 348 PrefServiceSyncable::UNSYNCABLE_PREF); |
349 pref_service_->RegisterStringPref(prefs::kSyncEncryptionBootstrapToken, | 349 pref_service_->RegisterStringPref(prefs::kSyncEncryptionBootstrapToken, |
350 "", | 350 "", |
351 PrefService::UNSYNCABLE_PREF); | 351 PrefServiceSyncable::UNSYNCABLE_PREF); |
352 pref_service_->RegisterStringPref( | 352 pref_service_->RegisterStringPref( |
353 prefs::kSyncKeystoreEncryptionBootstrapToken, | 353 prefs::kSyncKeystoreEncryptionBootstrapToken, |
354 "", | 354 "", |
355 PrefService::UNSYNCABLE_PREF); | 355 PrefServiceSyncable::UNSYNCABLE_PREF); |
356 #if defined(OS_CHROMEOS) | 356 #if defined(OS_CHROMEOS) |
357 pref_service_->RegisterStringPref(prefs::kSyncSpareBootstrapToken, | 357 pref_service_->RegisterStringPref(prefs::kSyncSpareBootstrapToken, |
358 "", | 358 "", |
359 PrefService::UNSYNCABLE_PREF); | 359 PrefServiceSyncable::UNSYNCABLE_PREF); |
360 #endif | 360 #endif |
361 | 361 |
362 // We will start prompting people about new data types after the launch of | 362 // We will start prompting people about new data types after the launch of |
363 // SESSIONS - all previously launched data types are treated as if they are | 363 // SESSIONS - all previously launched data types are treated as if they are |
364 // already acknowledged. | 364 // already acknowledged. |
365 syncer::ModelTypeSet model_set; | 365 syncer::ModelTypeSet model_set; |
366 model_set.Put(syncer::BOOKMARKS); | 366 model_set.Put(syncer::BOOKMARKS); |
367 model_set.Put(syncer::PREFERENCES); | 367 model_set.Put(syncer::PREFERENCES); |
368 model_set.Put(syncer::PASSWORDS); | 368 model_set.Put(syncer::PASSWORDS); |
369 model_set.Put(syncer::AUTOFILL_PROFILE); | 369 model_set.Put(syncer::AUTOFILL_PROFILE); |
370 model_set.Put(syncer::AUTOFILL); | 370 model_set.Put(syncer::AUTOFILL); |
371 model_set.Put(syncer::THEMES); | 371 model_set.Put(syncer::THEMES); |
372 model_set.Put(syncer::EXTENSIONS); | 372 model_set.Put(syncer::EXTENSIONS); |
373 model_set.Put(syncer::NIGORI); | 373 model_set.Put(syncer::NIGORI); |
374 model_set.Put(syncer::SEARCH_ENGINES); | 374 model_set.Put(syncer::SEARCH_ENGINES); |
375 model_set.Put(syncer::APPS); | 375 model_set.Put(syncer::APPS); |
376 model_set.Put(syncer::TYPED_URLS); | 376 model_set.Put(syncer::TYPED_URLS); |
377 model_set.Put(syncer::SESSIONS); | 377 model_set.Put(syncer::SESSIONS); |
378 pref_service_->RegisterListPref(prefs::kSyncAcknowledgedSyncTypes, | 378 pref_service_->RegisterListPref(prefs::kSyncAcknowledgedSyncTypes, |
379 syncer::ModelTypeSetToValue(model_set), | 379 syncer::ModelTypeSetToValue(model_set), |
380 PrefService::UNSYNCABLE_PREF); | 380 PrefServiceSyncable::UNSYNCABLE_PREF); |
381 } | 381 } |
382 | 382 |
383 void SyncPrefs::RegisterDataTypePreferredPref(syncer::ModelType type, | 383 void SyncPrefs::RegisterDataTypePreferredPref(syncer::ModelType type, |
384 bool is_preferred) { | 384 bool is_preferred) { |
385 DCHECK(CalledOnValidThread()); | 385 DCHECK(CalledOnValidThread()); |
386 CHECK(pref_service_); | 386 CHECK(pref_service_); |
387 const char* pref_name = GetPrefNameForDataType(type); | 387 const char* pref_name = GetPrefNameForDataType(type); |
388 if (!pref_name) { | 388 if (!pref_name) { |
389 NOTREACHED(); | 389 NOTREACHED(); |
390 return; | 390 return; |
391 } | 391 } |
392 pref_service_->RegisterBooleanPref(pref_name, is_preferred, | 392 pref_service_->RegisterBooleanPref(pref_name, is_preferred, |
393 PrefService::UNSYNCABLE_PREF); | 393 PrefServiceSyncable::UNSYNCABLE_PREF); |
394 } | 394 } |
395 | 395 |
396 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { | 396 bool SyncPrefs::GetDataTypePreferred(syncer::ModelType type) const { |
397 DCHECK(CalledOnValidThread()); | 397 DCHECK(CalledOnValidThread()); |
398 if (!pref_service_) { | 398 if (!pref_service_) { |
399 return false; | 399 return false; |
400 } | 400 } |
401 const char* pref_name = GetPrefNameForDataType(type); | 401 const char* pref_name = GetPrefNameForDataType(type); |
402 if (!pref_name) { | 402 if (!pref_name) { |
403 NOTREACHED(); | 403 NOTREACHED(); |
(...skipping 25 matching lines...) Expand all Loading... | |
429 if (types.Has(i->first)) | 429 if (types.Has(i->first)) |
430 types_with_groups.PutAll(i->second); | 430 types_with_groups.PutAll(i->second); |
431 else | 431 else |
432 types_with_groups.RemoveAll(i->second); | 432 types_with_groups.RemoveAll(i->second); |
433 } | 433 } |
434 types_with_groups.RetainAll(registered_types); | 434 types_with_groups.RetainAll(registered_types); |
435 return types_with_groups; | 435 return types_with_groups; |
436 } | 436 } |
437 | 437 |
438 } // namespace browser_sync | 438 } // namespace browser_sync |
OLD | NEW |