Index: components/autofill/core/common/password_form_fill_data.cc |
diff --git a/components/autofill/core/common/password_form_fill_data.cc b/components/autofill/core/common/password_form_fill_data.cc |
index e2468390e878fc3b79f546c72828924e8d379352..8849a6a49d07fa5c50751bd793c13ef5de7a0532 100644 |
--- a/components/autofill/core/common/password_form_fill_data.cc |
+++ b/components/autofill/core/common/password_form_fill_data.cc |
@@ -5,8 +5,20 @@ |
#include "components/autofill/core/common/password_form_fill_data.h" |
#include "base/logging.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "components/autofill/core/common/form_field_data.h" |
+namespace { |
+ |
+std::string GetPreferredSignonRealm(const content::PasswordForm& form) { |
+ if (form.IsPublicSuffixMatch()) |
+ return form.original_signon_realm; |
+ else |
+ return form.signon_realm; |
+} |
+ |
+} // namespace |
+ |
namespace autofill { |
UsernamesCollectionKey::UsernamesCollectionKey() {} |
@@ -51,11 +63,17 @@ void InitPasswordFormFillData( |
result->basic_data.fields.push_back(password_field); |
result->wait_for_username = wait_for_username_before_autofill; |
+ result->preferred_realm = GetPreferredSignonRealm(*preferred_match); |
+ |
// Copy additional username/value pairs. |
content::PasswordFormMap::const_iterator iter; |
for (iter = matches.begin(); iter != matches.end(); iter++) { |
- if (iter->second != preferred_match) |
- result->additional_logins[iter->first] = iter->second->password_value; |
+ if (iter->second != preferred_match) { |
+ PasswordAndRealm value; |
+ value.password = iter->second->password_value; |
+ value.realm = GetPreferredSignonRealm(*iter->second); |
+ result->additional_logins[iter->first] = value; |
+ } |
if (enable_other_possible_usernames && |
!iter->second->other_possible_usernames.empty()) { |
// Note that there may be overlap between other_possible_usernames and |