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

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

Issue 11946058: Add password sync for Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 11 months 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
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/profile_sync_service.h" 5 #include "chrome/browser/sync/profile_sync_service.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 #include "sync/internal_api/public/sync_encryption_handler.h" 67 #include "sync/internal_api/public/sync_encryption_handler.h"
68 #include "sync/internal_api/public/util/experiments.h" 68 #include "sync/internal_api/public/util/experiments.h"
69 #include "sync/internal_api/public/util/sync_string_conversions.h" 69 #include "sync/internal_api/public/util/sync_string_conversions.h"
70 #include "sync/js/js_arg_list.h" 70 #include "sync/js/js_arg_list.h"
71 #include "sync/js/js_event_details.h" 71 #include "sync/js/js_event_details.h"
72 #include "sync/notifier/invalidator_registrar.h" 72 #include "sync/notifier/invalidator_registrar.h"
73 #include "sync/notifier/invalidator_state.h" 73 #include "sync/notifier/invalidator_state.h"
74 #include "sync/util/cryptographer.h" 74 #include "sync/util/cryptographer.h"
75 #include "ui/base/l10n/l10n_util.h" 75 #include "ui/base/l10n/l10n_util.h"
76 76
77 #if defined(OS_ANDROID)
78 #include "sync/internal_api/public/read_transaction.h"
79 #endif
80
77 using browser_sync::ChangeProcessor; 81 using browser_sync::ChangeProcessor;
78 using browser_sync::DataTypeController; 82 using browser_sync::DataTypeController;
79 using browser_sync::DataTypeManager; 83 using browser_sync::DataTypeManager;
80 using browser_sync::SyncBackendHost; 84 using browser_sync::SyncBackendHost;
81 using syncer::ModelType; 85 using syncer::ModelType;
82 using syncer::ModelTypeSet; 86 using syncer::ModelTypeSet;
83 using syncer::JsBackend; 87 using syncer::JsBackend;
84 using syncer::JsController; 88 using syncer::JsController;
85 using syncer::JsEventDetails; 89 using syncer::JsEventDetails;
86 using syncer::JsEventHandler; 90 using syncer::JsEventHandler;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 // Sync is logged in if there is a non-empty authenticated username. 182 // Sync is logged in if there is a non-empty authenticated username.
179 return !signin_->GetAuthenticatedUsername().empty(); 183 return !signin_->GetAuthenticatedUsername().empty();
180 } 184 }
181 185
182 bool ProfileSyncService::IsSyncTokenAvailable() { 186 bool ProfileSyncService::IsSyncTokenAvailable() {
183 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); 187 TokenService* token_service = TokenServiceFactory::GetForProfile(profile_);
184 if (!token_service) 188 if (!token_service)
185 return false; 189 return false;
186 return token_service->HasTokenForService(GaiaConstants::kSyncService); 190 return token_service->HasTokenForService(GaiaConstants::kSyncService);
187 } 191 }
192 #if defined(OS_ANDROID)
193 bool ProfileSyncService::IsPasswordSyncEnabledForAndroid() const {
Nicolas Zea 2013/01/18 00:05:11 This method isn't really about whether it is enabl
shashi 2013/01/18 02:06:31 Correct, thanks much better. On 2013/01/18 00:05:1
194 const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes();
195 const syncer::ModelTypeSet preferred_types =
196 sync_prefs_.GetPreferredDataTypes(registered_types);
197 if (!preferred_types.Has(syncer::PASSWORDS))
198 return false;
199 const syncer::PassphraseType passphraseType = GetPassphraseType();
200 // On Android we do not want to prompt user to enter a passphrase except in
201 // case of custom passphrase, when we have no choice.
202 // We enable passwords always for CUSTOM_PASSPHRASE but for all other
203 // passphrase types we disable them till the cryptographer is ready.
204 syncer::ReadTransaction trans(FROM_HERE, GetUserShare());
205 return (passphraseType == syncer::CUSTOM_PASSPHRASE
Nicolas Zea 2013/01/18 00:05:11 So, given that we already have logic to enable pas
shashi 2013/01/18 02:06:31 This is to deal with a corner case: User has a cus
Nicolas Zea 2013/01/18 22:55:13 Hmm, the IsEncryptedDatatypeEnabled method looks a
shashi 2013/01/18 23:20:52 IsEncryptedDatatypeEnabled uses PSS.GetPreferredDa
Nicolas Zea 2013/01/19 01:10:16 That sounds good. Also, apparently the reason for
shashi 2013/01/23 21:25:24 Yes the function name is confusing :), GetEnabledP
206 || IsCryptographerReady(&trans));
207 }
208 #endif
188 209
189 void ProfileSyncService::Initialize() { 210 void ProfileSyncService::Initialize() {
190 DCHECK(!invalidator_registrar_.get()); 211 DCHECK(!invalidator_registrar_.get());
191 invalidator_registrar_.reset(new syncer::InvalidatorRegistrar()); 212 invalidator_registrar_.reset(new syncer::InvalidatorRegistrar());
192 213
193 InitSettings(); 214 InitSettings();
194 215
195 // We clear this here (vs Shutdown) because we want to remember that an error 216 // We clear this here (vs Shutdown) because we want to remember that an error
196 // happened on shutdown so we can display details (message, location) about it 217 // happened on shutdown so we can display details (message, location) about it
197 // in about:sync. 218 // in about:sync.
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 // consumed our cached passphrase. Clear it now. 1003 // consumed our cached passphrase. Clear it now.
983 if (!cached_passphrase_.empty()) 1004 if (!cached_passphrase_.empty())
984 cached_passphrase_.clear(); 1005 cached_passphrase_.clear();
985 1006
986 // Reset passphrase_required_reason_ since we know we no longer require the 1007 // Reset passphrase_required_reason_ since we know we no longer require the
987 // passphrase. We do this here rather than down in ResolvePassphraseRequired() 1008 // passphrase. We do this here rather than down in ResolvePassphraseRequired()
988 // because that can be called by OnPassphraseRequired() if no encrypted data 1009 // because that can be called by OnPassphraseRequired() if no encrypted data
989 // types are enabled, and we don't want to clobber the true passphrase error. 1010 // types are enabled, and we don't want to clobber the true passphrase error.
990 passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED; 1011 passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED;
991 1012
1013 #if defined(OS_ANDROID)
1014 // Re-enable passwords if we have disabled them.
1015 if (failed_datatypes_handler_.GetFailedTypes().Has(syncer::PASSWORDS)
1016 && IsPasswordSyncEnabledForAndroid()) {
Nicolas Zea 2013/01/18 00:05:11 move && operator to previous line
shashi 2013/01/18 02:06:31 Done.
1017 syncer::ModelTypeSet preferredTypes = GetPreferredDataTypes();
1018 preferredTypes.Put(syncer::PASSWORDS);
Nicolas Zea 2013/01/18 00:05:11 This shouldn't be necessary right? From what I rem
shashi 2013/01/18 02:06:31 PSS.GetPreferredDataTypes filters failed types, bu
Nicolas Zea 2013/01/18 22:55:13 I see. Yeah, I think clearing failed datatypes sho
1019 OnUserChoseDatatypes(sync_prefs_.HasKeepEverythingSynced(), preferredTypes);
1020 return;
1021 }
1022 #endif
1023
992 // Make sure the data types that depend on the passphrase are started at 1024 // Make sure the data types that depend on the passphrase are started at
993 // this time. 1025 // this time.
994 const syncer::ModelTypeSet types = GetPreferredDataTypes(); 1026 const syncer::ModelTypeSet types = GetPreferredDataTypes();
995 1027
996 if (data_type_manager_.get()) { 1028 if (data_type_manager_.get()) {
997 // Unblock the data type manager if necessary. 1029 // Unblock the data type manager if necessary.
998 data_type_manager_->Configure(types, 1030 data_type_manager_->Configure(types,
999 syncer::CONFIGURE_REASON_RECONFIGURATION); 1031 syncer::CONFIGURE_REASON_RECONFIGURATION);
1000 } 1032 }
1001 1033
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 1476
1445 // We create the migrator at the same time. 1477 // We create the migrator at the same time.
1446 migrator_.reset( 1478 migrator_.reset(
1447 new browser_sync::BackendMigrator( 1479 new browser_sync::BackendMigrator(
1448 profile_->GetDebugName(), GetUserShare(), 1480 profile_->GetDebugName(), GetUserShare(),
1449 this, data_type_manager_.get(), 1481 this, data_type_manager_.get(),
1450 base::Bind(&ProfileSyncService::StartSyncingWithServer, 1482 base::Bind(&ProfileSyncService::StartSyncingWithServer,
1451 base::Unretained(this)))); 1483 base::Unretained(this))));
1452 } 1484 }
1453 1485
1486 #if defined(OS_ANDROID)
1487 if (GetPreferredDataTypes().Has(syncer::PASSWORDS)
1488 && !IsPasswordSyncEnabledForAndroid()) {
Nicolas Zea 2013/01/18 00:05:11 move && operator to previous line
shashi 2013/01/18 02:06:31 Done.
1489 DisableBrokenDatatype(syncer::PASSWORDS, FROM_HERE, "Not supported.");
1490 }
1491 #endif
1492
1454 const syncer::ModelTypeSet types = GetPreferredDataTypes(); 1493 const syncer::ModelTypeSet types = GetPreferredDataTypes();
1455 if (IsPassphraseRequiredForDecryption()) { 1494 if (IsPassphraseRequiredForDecryption()) {
1456 // We need a passphrase still. We don't bother to attempt to configure 1495 // We need a passphrase still. We don't bother to attempt to configure
1457 // until we receive an OnPassphraseAccepted (which triggers a configure). 1496 // until we receive an OnPassphraseAccepted (which triggers a configure).
1458 DVLOG(1) << "ProfileSyncService::ConfigureDataTypeManager bailing out " 1497 DVLOG(1) << "ProfileSyncService::ConfigureDataTypeManager bailing out "
1459 << "because a passphrase required"; 1498 << "because a passphrase required";
1460 NotifyObservers(); 1499 NotifyObservers();
1461 return; 1500 return;
1462 } 1501 }
1463 syncer::ConfigureReason reason = syncer::CONFIGURE_REASON_UNKNOWN; 1502 syncer::ConfigureReason reason = syncer::CONFIGURE_REASON_UNKNOWN;
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
1913 // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine d-behaviour-after-directly-calling-the-destru. 1952 // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine d-behaviour-after-directly-calling-the-destru.
1914 ProfileSyncService* old_this = this; 1953 ProfileSyncService* old_this = this;
1915 this->~ProfileSyncService(); 1954 this->~ProfileSyncService();
1916 new(old_this) ProfileSyncService( 1955 new(old_this) ProfileSyncService(
1917 new ProfileSyncComponentsFactoryImpl(profile, 1956 new ProfileSyncComponentsFactoryImpl(profile,
1918 CommandLine::ForCurrentProcess()), 1957 CommandLine::ForCurrentProcess()),
1919 profile, 1958 profile,
1920 signin, 1959 signin,
1921 behavior); 1960 behavior);
1922 } 1961 }
OLDNEW
« chrome/browser/sync/profile_sync_service.h ('K') | « chrome/browser/sync/profile_sync_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698