Index: components/password_manager/core/browser/password_manager.cc |
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc |
index 85ad67d89ea3e2996a6149177a8c7d4b07707b57..696918e7ba8e93fc0e969b6bccdcdd4003d9bb5a 100644 |
--- a/components/password_manager/core/browser/password_manager.cc |
+++ b/components/password_manager/core/browser/password_manager.cc |
@@ -207,6 +207,14 @@ void PasswordManager::ProvisionallySavePassword(const PasswordForm& form) { |
return; |
} |
+ // Don't save credentials for the syncing account. See crbug.com/365832 for |
+ // background. |
+ if (client_->IsPasswordSyncAccountCredential( |
+ base::UTF16ToUTF8(form.username_value), form.signon_realm)) { |
+ RecordFailure(SYNC_CREDENTIAL, form.origin.host(), logger.get()); |
+ return; |
+ } |
+ |
// Always save generated passwords, as the user expresses explicit intent for |
// Chrome to manage such passwords. For other passwords, respect the |
// autocomplete attribute if autocomplete='off' is not ignored. |
@@ -276,6 +284,9 @@ void PasswordManager::RecordFailure(ProvisionalSaveFailure failure, |
case AUTOCOMPLETE_OFF: |
logger->LogMessage(Logger::STRING_AUTOCOMPLETE_OFF); |
break; |
+ case SYNC_CREDENTIAL: |
+ logger->LogMessage(Logger::STRING_SYNC_CREDENTIAL); |
+ break; |
case MAX_FAILURE_VALUE: |
NOTREACHED(); |
return; |