| Index: chrome/browser/password_manager/password_store_mac.cc
|
| diff --git a/chrome/browser/password_manager/password_store_mac.cc b/chrome/browser/password_manager/password_store_mac.cc
|
| index c7642219f55824a2943cf93f6b302f2f6810cbb8..f067dd8f1afb92b3ee86dcf18889ec05df63799c 100644
|
| --- a/chrome/browser/password_manager/password_store_mac.cc
|
| +++ b/chrome/browser/password_manager/password_store_mac.cc
|
| @@ -478,8 +478,7 @@ bool FormsMatchForMerge(const PasswordForm& form_a,
|
| }
|
| bool equal_realm = form_a.signon_realm == form_b.signon_realm;
|
| if (strictness == FUZZY_FORM_MATCH) {
|
| - equal_realm |= (!form_a.original_signon_realm.empty()) &&
|
| - form_a.original_signon_realm == form_b.signon_realm;
|
| + equal_realm |= form_a.is_public_suffix_match;
|
| }
|
| return form_a.scheme == form_b.scheme && equal_realm &&
|
| form_a.username_value == form_b.username_value;
|
| @@ -1183,9 +1182,8 @@ ScopedVector<autofill::PasswordForm> PasswordStoreMac::FillMatchingLogins(
|
| // http://crbug.com/340112
|
| if (form.scheme != db_form->scheme)
|
| continue; // Forms with different schemes never match.
|
| - const std::string& original_singon_realm(db_form->original_signon_realm);
|
| - if (!original_singon_realm.empty())
|
| - realm_set.insert(original_singon_realm);
|
| + if (db_form->is_public_suffix_match)
|
| + realm_set.insert(db_form->signon_realm);
|
| }
|
| ScopedVector<autofill::PasswordForm> keychain_forms;
|
| for (std::set<std::string>::const_iterator realm = realm_set.begin();
|
| @@ -1277,9 +1275,9 @@ bool PasswordStoreMac::DatabaseHasFormMatchingKeychainForm(
|
| if (!login_metadata_db_->GetLogins(form, &database_forms))
|
| return false;
|
| for (const autofill::PasswordForm* db_form : database_forms) {
|
| - // Below we filter out forms with non-empty original_signon_realm, because
|
| - // those signal fuzzy matches, and we are only interested in exact ones.
|
| - if (db_form->original_signon_realm.empty() &&
|
| + // Below we filter out fuzzy matched forms because we are only interested
|
| + // in exact ones.
|
| + if (!db_form->is_public_suffix_match &&
|
| internal_keychain_helpers::FormsMatchForMerge(
|
| form, *db_form, internal_keychain_helpers::STRICT_FORM_MATCH) &&
|
| db_form->origin == form.origin) {
|
|
|