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

Unified Diff: components/password_manager/core/browser/password_form_manager.cc

Issue 2796873002: Sending autofill types for username fields in sign-in forms for improving username detection. (Closed)
Patch Set: Fix compilation error Created 3 years, 8 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: components/password_manager/core/browser/password_form_manager.cc
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc
index c4ad94d5ed6c368ab3ecb10b22145a76110a2829..ba04364ea1bc762c6eedd0fcc2dccd96d25f3448 100644
--- a/components/password_manager/core/browser/password_form_manager.cc
+++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -197,6 +197,14 @@ void LabelFields(const FieldTypeMap& field_types,
}
}
+// Check whether |form_data| corresponds to a 2 field form with 1 text field and
+// 1 password field. Such form is likely sign-in form.
+bool IsSignInSubmission(const FormData& form_data) {
+ return form_data.fields.size() == 2 &&
+ form_data.fields[0].form_control_type == "text" &&
+ form_data.fields[1].form_control_type == "password";
+}
+
} // namespace
PasswordFormManager::PasswordFormManager(
@@ -1290,6 +1298,11 @@ void PasswordFormManager::SendVotesOnSave() {
if (observed_form_.IsPossibleChangePasswordFormWithoutUsername())
return;
+ if (IsSignInSubmission(pending_credentials_.form_data)) {
+ SendSignInVote(pending_credentials_.form_data);
+ return;
+ }
+
// Upload credentials the first time they are saved. This data is used
// by password generation to help determine account creation sites.
// Credentials that have been previously used (e.g., PSL matches) are checked
@@ -1308,6 +1321,20 @@ void PasswordFormManager::SendVotesOnSave() {
SendVoteOnCredentialsReuse(observed_form_, &pending_credentials_);
}
+void PasswordFormManager::SendSignInVote(const FormData& form_data) {
+ autofill::AutofillManager* autofill_manager =
+ client_->GetAutofillManagerForMainFrame();
+ if (!autofill_manager)
+ return;
+ std::unique_ptr<FormStructure> form_structure(new FormStructure(form_data));
+ form_structure->set_is_signin_upload(true);
+ DCHECK(form_structure->ShouldBeCrowdsourced());
+ DCHECK_EQ(2u, form_structure->field_count());
+ form_structure->field(1)->set_possible_types({autofill::PASSWORD});
+ autofill_manager->StartUploadProcess(std::move(form_structure),
+ base::TimeTicks::Now(), true);
+}
+
void PasswordFormManager::SetUserAction(UserAction user_action) {
if (user_action == kUserActionChoose) {
base::RecordAction(

Powered by Google App Engine
This is Rietveld 408576698