Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: chrome/browser/sync/sync_prefs.cc

Issue 11570009: Split PrefService into PrefService, PrefServiceSimple and PrefServiceSyncable. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ready for review. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698