Chromium Code Reviews| Index: components/password_manager/core/browser/login_database.cc |
| diff --git a/components/password_manager/core/browser/login_database.cc b/components/password_manager/core/browser/login_database.cc |
| index 82ec036ac2b0be4bcdd56d6a3d6a74f48c49d42c..d57aed2a5b7a608fd1148c0f653c8cb538974a92 100644 |
| --- a/components/password_manager/core/browser/login_database.cc |
| +++ b/components/password_manager/core/browser/login_database.cc |
| @@ -1093,6 +1093,13 @@ bool LoginDatabase::GetLogins( |
| s.BindString(placeholder++, expression); |
| } |
| + if (should_PSL_matching_apply && should_federated_apply) { |
| + std::string federation_regexp = "^federation://([\\w-]+\\.)*" + |
| + registered_domain + "(:" + |
| + signon_realm.port() + ")?/.+$"; |
|
jdoerrie
2017/01/16 18:04:14
Couple questions here:
- Do federated matches ever
vasilii
2017/01/17 12:41:24
No, we don't save port.
That is correct for the re
jdoerrie
2017/01/17 13:37:18
Acknowledged.
|
| + s.BindString(placeholder++, federation_regexp); |
| + } |
| + |
| if (!should_PSL_matching_apply && !should_federated_apply) { |
| // Otherwise the histogram is reported in StatementToForms. |
| UMA_HISTOGRAM_ENUMERATION("PasswordManager.PslDomainMatchTriggering", |
| @@ -1221,6 +1228,11 @@ bool LoginDatabase::StatementToForms( |
| } else if (!new_form->federation_origin.unique() && |
| IsFederatedMatch(new_form->signon_realm, |
| matched_form->origin)) { |
| + } else if (!new_form->federation_origin.unique() && |
| + IsFederatedPSLMatch(new_form->signon_realm, |
| + matched_form->origin)) { |
| + psl_domain_match_metric = PSL_DOMAIN_MATCH_FOUND; |
|
jdoerrie
2017/01/16 18:04:14
Should we consider adding a new value to |PSLDomai
vasilii
2017/01/17 12:41:24
Sure.
|
| + new_form->is_public_suffix_match = true; |
| } else { |
| continue; |
| } |
| @@ -1277,13 +1289,15 @@ void LoginDatabase::InitializeStatementStrings(const SQLTableBuilder& builder) { |
| std::string psl_statement = "OR signon_realm REGEXP ? "; |
| std::string federated_statement = |
|
vasilii
2017/01/17 12:41:24
Seems to be obsolete
jdoerrie
2017/01/17 13:37:18
Acknowledged. It's obsolete for matching federated
|
| "OR (signon_realm LIKE ? AND password_type == 2) "; |
| + std::string psl_federated_statement = |
| + "OR (signon_realm REGEXP ? AND password_type == 2) "; |
| DCHECK(get_statement_psl_.empty()); |
| get_statement_psl_ = get_statement_ + psl_statement; |
| DCHECK(get_statement_federated_.empty()); |
| get_statement_federated_ = get_statement_ + federated_statement; |
| DCHECK(get_statement_psl_federated_.empty()); |
| - get_statement_psl_federated_ = |
| - get_statement_ + psl_statement + federated_statement; |
| + get_statement_psl_federated_ = get_statement_ + psl_statement + |
| + federated_statement + psl_federated_statement; |
| DCHECK(created_statement_.empty()); |
| created_statement_ = |
| "SELECT " + all_column_names + |