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

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

Issue 5159001: Rest of the autofill work. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Diff against the first part of the review. Created 10 years, 1 month 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/callback.h" 12 #include "base/callback.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
16 #include "base/stl_util-inl.h" 16 #include "base/stl_util-inl.h"
17 #include "base/string16.h" 17 #include "base/string16.h"
18 #include "base/string_number_conversions.h" 18 #include "base/string_number_conversions.h"
19 #include "base/string_util.h" 19 #include "base/string_util.h"
20 #include "base/task.h" 20 #include "base/task.h"
21 #include "base/utf_string_conversions.h" 21 #include "base/utf_string_conversions.h"
22 #include "chrome/browser/browser_thread.h" 22 #include "chrome/browser/browser_thread.h"
23 #include "chrome/browser/history/history_types.h" 23 #include "chrome/browser/history/history_types.h"
24 #include "chrome/browser/platform_util.h" 24 #include "chrome/browser/platform_util.h"
25 #include "chrome/browser/prefs/pref_service.h" 25 #include "chrome/browser/prefs/pref_service.h"
26 #include "chrome/browser/profile.h" 26 #include "chrome/browser/profile.h"
27 #include "chrome/browser/net/gaia/token_service.h" 27 #include "chrome/browser/net/gaia/token_service.h"
28 #include "chrome/browser/sync/glue/autofill_profile_data_type_controller.h"
28 #include "chrome/browser/sync/glue/change_processor.h" 29 #include "chrome/browser/sync/glue/change_processor.h"
29 #include "chrome/browser/sync/glue/data_type_controller.h" 30 #include "chrome/browser/sync/glue/data_type_controller.h"
30 #include "chrome/browser/sync/glue/data_type_manager.h" 31 #include "chrome/browser/sync/glue/data_type_manager.h"
31 #include "chrome/browser/sync/glue/session_data_type_controller.h" 32 #include "chrome/browser/sync/glue/session_data_type_controller.h"
32 #include "chrome/browser/sync/profile_sync_factory.h" 33 #include "chrome/browser/sync/profile_sync_factory.h"
33 #include "chrome/browser/sync/signin_manager.h" 34 #include "chrome/browser/sync/signin_manager.h"
34 #include "chrome/browser/sync/token_migrator.h" 35 #include "chrome/browser/sync/token_migrator.h"
35 #include "chrome/common/chrome_switches.h" 36 #include "chrome/common/chrome_switches.h"
36 #include "chrome/common/net/gaia/gaia_constants.h" 37 #include "chrome/common/net/gaia/gaia_constants.h"
37 #include "chrome/common/notification_details.h" 38 #include "chrome/common/notification_details.h"
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default); 360 pref_service->RegisterBooleanPref(prefs::kSyncAutofill, enable_by_default);
360 pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default); 361 pref_service->RegisterBooleanPref(prefs::kSyncThemes, enable_by_default);
361 pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default); 362 pref_service->RegisterBooleanPref(prefs::kSyncTypedUrls, enable_by_default);
362 pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default); 363 pref_service->RegisterBooleanPref(prefs::kSyncExtensions, enable_by_default);
363 pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default); 364 pref_service->RegisterBooleanPref(prefs::kSyncApps, enable_by_default);
364 pref_service->RegisterBooleanPref(prefs::kSyncSessions, enable_by_default); 365 pref_service->RegisterBooleanPref(prefs::kSyncSessions, enable_by_default);
365 pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced, 366 pref_service->RegisterBooleanPref(prefs::kKeepEverythingSynced,
366 enable_by_default); 367 enable_by_default);
367 pref_service->RegisterBooleanPref(prefs::kSyncManaged, false); 368 pref_service->RegisterBooleanPref(prefs::kSyncManaged, false);
368 pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, ""); 369 pref_service->RegisterStringPref(prefs::kEncryptionBootstrapToken, "");
370
371 // If you have never synced before until we have migrated autofill profile
372 // is disabled.
373 pref_service->RegisterBooleanPref(prefs::kSyncAutofill_profile, false);
374
375 pref_service->RegisterBooleanPref(prefs::kAutofillProfileMigrated, false);
369 } 376 }
370 377
371 void ProfileSyncService::ClearPreferences() { 378 void ProfileSyncService::ClearPreferences() {
372 PrefService* pref_service = profile_->GetPrefs(); 379 PrefService* pref_service = profile_->GetPrefs();
373 pref_service->ClearPref(prefs::kSyncLastSyncedTime); 380 pref_service->ClearPref(prefs::kSyncLastSyncedTime);
374 pref_service->ClearPref(prefs::kSyncHasSetupCompleted); 381 pref_service->ClearPref(prefs::kSyncHasSetupCompleted);
375 pref_service->ClearPref(prefs::kEncryptionBootstrapToken); 382 pref_service->ClearPref(prefs::kEncryptionBootstrapToken);
376 383
377 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks. 384 // TODO(nick): The current behavior does not clear e.g. prefs::kSyncBookmarks.
378 // Is that really what we want? 385 // Is that really what we want?
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 syncable::ModelType data_type) { 548 syncable::ModelType data_type) {
542 switch (data_type) { 549 switch (data_type) {
543 case syncable::BOOKMARKS: 550 case syncable::BOOKMARKS:
544 return prefs::kSyncBookmarks; 551 return prefs::kSyncBookmarks;
545 case syncable::PASSWORDS: 552 case syncable::PASSWORDS:
546 return prefs::kSyncPasswords; 553 return prefs::kSyncPasswords;
547 case syncable::PREFERENCES: 554 case syncable::PREFERENCES:
548 return prefs::kSyncPreferences; 555 return prefs::kSyncPreferences;
549 case syncable::AUTOFILL: 556 case syncable::AUTOFILL:
550 return prefs::kSyncAutofill; 557 return prefs::kSyncAutofill;
558 case syncable::AUTOFILL_PROFILE:
559 return prefs::kSyncAutofill_profile;
560 break;
551 case syncable::THEMES: 561 case syncable::THEMES:
552 return prefs::kSyncThemes; 562 return prefs::kSyncThemes;
553 case syncable::TYPED_URLS: 563 case syncable::TYPED_URLS:
554 return prefs::kSyncTypedUrls; 564 return prefs::kSyncTypedUrls;
555 case syncable::EXTENSIONS: 565 case syncable::EXTENSIONS:
556 return prefs::kSyncExtensions; 566 return prefs::kSyncExtensions;
557 case syncable::APPS: 567 case syncable::APPS:
558 return prefs::kSyncApps; 568 return prefs::kSyncApps;
559 case syncable::SESSIONS: 569 case syncable::SESSIONS:
560 return prefs::kSyncSessions; 570 return prefs::kSyncSessions;
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 GetRegisteredDataTypes(&registered_types); 879 GetRegisteredDataTypes(&registered_types);
870 for (int i = 0; i < syncable::MODEL_TYPE_COUNT; ++i) { 880 for (int i = 0; i < syncable::MODEL_TYPE_COUNT; ++i) {
871 syncable::ModelType model_type = syncable::ModelTypeFromInt(i); 881 syncable::ModelType model_type = syncable::ModelTypeFromInt(i);
872 if (!registered_types.count(model_type)) 882 if (!registered_types.count(model_type))
873 continue; 883 continue;
874 const char* pref_name = GetPrefNameForDataType(model_type); 884 const char* pref_name = GetPrefNameForDataType(model_type);
875 if (!pref_name) 885 if (!pref_name)
876 continue; 886 continue;
877 profile_->GetPrefs()->SetBoolean(pref_name, 887 profile_->GetPrefs()->SetBoolean(pref_name,
878 preferred_types.count(model_type) != 0); 888 preferred_types.count(model_type) != 0);
889 if (syncable::AUTOFILL == model_type) {
890 if (profile_->GetPrefs()->GetBoolean(prefs::kAutofillProfileMigrated)) {
891 profile_->GetPrefs()->SetBoolean(prefs::kSyncAutofill_profile,
892 preferred_types.count(model_type) != 0);
893 syncable::ModelTypeSet registered_types;
894
895 // Now register autofill profile if necessary.
896 GetRegisteredDataTypes(&registered_types);
897 if (registered_types.count(syncable::AUTOFILL_PROFILE) == 0) {
898 RegisterDataTypeController(
899 new browser_sync::AutofillProfileDataTypeController(this->factory_,
900 profile_,
901 this));
902 }
903 } else {
904 profile_->GetPrefs()->SetBoolean(prefs::kSyncAutofill_profile, false);
905 }
906 }
879 } 907 }
880 908
881 // If we haven't initialized yet, don't configure the DTM as it could cause 909 // If we haven't initialized yet, don't configure the DTM as it could cause
882 // association to start before a Directory has even been created. 910 // association to start before a Directory has even been created.
883 if (backend_initialized_) 911 if (backend_initialized_)
884 ConfigureDataTypeManager(); 912 ConfigureDataTypeManager();
885 } 913 }
886 914
915 void ProfileSyncService::GetAllSyncableTypesForCurrentClientState(
916 syncable::ModelTypeSet* preferred_types) const {
917
918 GetRegisteredDataTypes(preferred_types);
919
920 if (!profile_->GetPrefs()->GetBoolean(prefs::kAutofillProfileMigrated)) {
921 preferred_types->erase(syncable::AUTOFILL_PROFILE);
922 }
923
924 return;
925 }
926
887 void ProfileSyncService::GetPreferredDataTypes( 927 void ProfileSyncService::GetPreferredDataTypes(
888 syncable::ModelTypeSet* preferred_types) const { 928 syncable::ModelTypeSet* preferred_types) const {
889 preferred_types->clear(); 929 preferred_types->clear();
890
891 // Filter out any datatypes which aren't registered, or for which
892 // the preference can't be read.
893 syncable::ModelTypeSet registered_types;
894 GetRegisteredDataTypes(&registered_types);
895 if (profile_->GetPrefs()->GetBoolean(prefs::kKeepEverythingSynced)) { 930 if (profile_->GetPrefs()->GetBoolean(prefs::kKeepEverythingSynced)) {
896 *preferred_types = registered_types; 931 GetAllSyncableTypesForCurrentClientState(preferred_types);
897 } else { 932 } else {
933 // Filter out any datatypes which aren't registered, or for which
934 // the preference can't be read.
935 syncable::ModelTypeSet registered_types;
936 GetRegisteredDataTypes(&registered_types);
898 for (int i = 0; i < syncable::MODEL_TYPE_COUNT; ++i) { 937 for (int i = 0; i < syncable::MODEL_TYPE_COUNT; ++i) {
899 syncable::ModelType model_type = syncable::ModelTypeFromInt(i); 938 syncable::ModelType model_type = syncable::ModelTypeFromInt(i);
900 if (!registered_types.count(model_type)) 939 if (!registered_types.count(model_type))
901 continue; 940 continue;
902 const char* pref_name = GetPrefNameForDataType(model_type); 941 const char* pref_name = GetPrefNameForDataType(model_type);
903 if (!pref_name) 942 if (!pref_name)
904 continue; 943 continue;
905 if (profile_->GetPrefs()->GetBoolean(pref_name)) 944 if (profile_->GetPrefs()->GetBoolean(pref_name))
906 preferred_types->insert(model_type); 945 preferred_types->insert(model_type);
907 } 946 }
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 // is initialized, all enabled data types are consistent with one 1183 // is initialized, all enabled data types are consistent with one
1145 // another, and no unrecoverable error has transpired. 1184 // another, and no unrecoverable error has transpired.
1146 if (unrecoverable_error_detected_) 1185 if (unrecoverable_error_detected_)
1147 return false; 1186 return false;
1148 1187
1149 if (!data_type_manager_.get()) 1188 if (!data_type_manager_.get())
1150 return false; 1189 return false;
1151 1190
1152 return data_type_manager_->state() == DataTypeManager::CONFIGURED; 1191 return data_type_manager_->state() == DataTypeManager::CONFIGURED;
1153 } 1192 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698