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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/profile_sync_service.cc
diff --git a/chrome/browser/sync/profile_sync_service.cc b/chrome/browser/sync/profile_sync_service.cc
index aabef52ed85a745e063366d18353730bea6c5465..9f879e9bb0de6252f8af607ca12807704eab4ac1 100644
--- a/chrome/browser/sync/profile_sync_service.cc
+++ b/chrome/browser/sync/profile_sync_service.cc
@@ -74,6 +74,10 @@
#include "sync/util/cryptographer.h"
#include "ui/base/l10n/l10n_util.h"
+#if defined(OS_ANDROID)
+#include "sync/internal_api/public/read_transaction.h"
+#endif
+
using browser_sync::ChangeProcessor;
using browser_sync::DataTypeController;
using browser_sync::DataTypeManager;
@@ -185,6 +189,23 @@ bool ProfileSyncService::IsSyncTokenAvailable() {
return false;
return token_service->HasTokenForService(GaiaConstants::kSyncService);
}
+#if defined(OS_ANDROID)
+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
+ const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes();
+ const syncer::ModelTypeSet preferred_types =
+ sync_prefs_.GetPreferredDataTypes(registered_types);
+ if (!preferred_types.Has(syncer::PASSWORDS))
+ return false;
+ const syncer::PassphraseType passphraseType = GetPassphraseType();
+ // On Android we do not want to prompt user to enter a passphrase except in
+ // case of custom passphrase, when we have no choice.
+ // We enable passwords always for CUSTOM_PASSPHRASE but for all other
+ // passphrase types we disable them till the cryptographer is ready.
+ syncer::ReadTransaction trans(FROM_HERE, GetUserShare());
+ 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
+ || IsCryptographerReady(&trans));
+}
+#endif
void ProfileSyncService::Initialize() {
DCHECK(!invalidator_registrar_.get());
@@ -989,6 +1010,17 @@ void ProfileSyncService::OnPassphraseAccepted() {
// types are enabled, and we don't want to clobber the true passphrase error.
passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED;
+#if defined(OS_ANDROID)
+ // Re-enable passwords if we have disabled them.
+ if (failed_datatypes_handler_.GetFailedTypes().Has(syncer::PASSWORDS)
+ && IsPasswordSyncEnabledForAndroid()) {
Nicolas Zea 2013/01/18 00:05:11 move && operator to previous line
shashi 2013/01/18 02:06:31 Done.
+ syncer::ModelTypeSet preferredTypes = GetPreferredDataTypes();
+ 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
+ OnUserChoseDatatypes(sync_prefs_.HasKeepEverythingSynced(), preferredTypes);
+ return;
+ }
+#endif
+
// Make sure the data types that depend on the passphrase are started at
// this time.
const syncer::ModelTypeSet types = GetPreferredDataTypes();
@@ -1451,6 +1483,13 @@ void ProfileSyncService::ConfigureDataTypeManager() {
base::Unretained(this))));
}
+#if defined(OS_ANDROID)
+ if (GetPreferredDataTypes().Has(syncer::PASSWORDS)
+ && !IsPasswordSyncEnabledForAndroid()) {
Nicolas Zea 2013/01/18 00:05:11 move && operator to previous line
shashi 2013/01/18 02:06:31 Done.
+ DisableBrokenDatatype(syncer::PASSWORDS, FROM_HERE, "Not supported.");
+ }
+#endif
+
const syncer::ModelTypeSet types = GetPreferredDataTypes();
if (IsPassphraseRequiredForDecryption()) {
// We need a passphrase still. We don't bother to attempt to configure
« 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