Commit 48a29efa authored by Vadym Doroshenko's avatar Vadym Doroshenko Committed by Commit Bot

Drop forms for filling without password field.

Bug: 831123
Change-Id: I9ce6a2d781a7ac718043664f33420b782e5a3d9b
Reviewed-on: https://chromium-review.googlesource.com/1101035
Commit-Queue: Vadym Doroshenko <dvadym@chromium.org>
Reviewed-by: default avatarVaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567593}
parent e45eb066
......@@ -15,6 +15,7 @@
#include "components/password_manager/core/browser/password_manager_util.h"
using autofill::FormData;
using autofill::FormFieldData;
using autofill::FormSignature;
using autofill::FormStructure;
using base::TimeDelta;
......@@ -225,6 +226,11 @@ void NewPasswordFormManager::Fill() {
if (!driver_ || best_matches_.empty() || filled_)
return;
// Do not fill forms without password field.
if (observed_password_form->password_element_renderer_id ==
FormFieldData::kNotSetFormControlRendererId)
return;
// TODO(https://crbug.com/831123). Implement correct treating of federated
// matches.
std::vector<const autofill::PasswordForm*> federated_matches;
......
......@@ -57,14 +57,17 @@ class NewPasswordFormManagerTest : public testing::Test {
FormFieldData field;
field.name = ASCIIToUTF16("firstname");
field.form_control_type = "text";
field.unique_renderer_id = 1;
observed_form_.fields.push_back(field);
field.name = ASCIIToUTF16("username");
field.form_control_type = "text";
field.unique_renderer_id = 2;
observed_form_.fields.push_back(field);
field.name = ASCIIToUTF16("password");
field.form_control_type = "password";
field.unique_renderer_id = 3;
observed_form_.fields.push_back(field);
saved_match_.origin = origin;
......@@ -134,6 +137,21 @@ TEST_F(NewPasswordFormManagerTest, Autofill) {
EXPECT_EQ(saved_match_.password_value, fill_data.password_field.value);
}
TEST_F(NewPasswordFormManagerTest, NoAutofillSignUpForm) {
TestMockTimeTaskRunner::ScopedContext scoped_context(task_runner_.get());
FakeFormFetcher fetcher;
fetcher.Fetch();
// Make |observed_form_| to be sign-up form.
observed_form_.fields.back().autocomplete_attribute = "new-password";
EXPECT_CALL(driver_, FillPasswordForm(_)).Times(0);
NewPasswordFormManager form_manager(&client_, driver_.AsWeakPtr(),
observed_form_, &fetcher);
fetcher.SetNonFederated({&saved_match_}, 0u);
task_runner_->FastForwardUntilNoTasksRemain();
}
TEST_F(NewPasswordFormManagerTest, SetSubmitted) {
FakeFormFetcher fetcher;
fetcher.Fetch();
......
......@@ -1203,9 +1203,11 @@ TEST_F(PasswordManagerTest, FillPasswordOnManyFrames_SameId) {
form_data.fields.resize(2);
form_data.fields[0].name = ASCIIToUTF16("Email");
form_data.fields[0].value = ASCIIToUTF16("googleuser");
form_data.fields[0].unique_renderer_id = 1;
form_data.fields[0].form_control_type = "text";
form_data.fields[1].name = ASCIIToUTF16("Passwd");
form_data.fields[1].value = ASCIIToUTF16("p4ssword");
form_data.fields[1].unique_renderer_id = 2;
form_data.fields[1].form_control_type = "password";
PasswordForm first_form;
first_form.form_data = form_data;
......@@ -1214,8 +1216,10 @@ TEST_F(PasswordManagerTest, FillPasswordOnManyFrames_SameId) {
form_data.action = GURL("http://www.example.com/");
form_data.fields[0].name = ASCIIToUTF16("User");
form_data.fields[0].value = ASCIIToUTF16("exampleuser");
form_data.fields[0].unique_renderer_id = 3;
form_data.fields[1].name = ASCIIToUTF16("Pwd");
form_data.fields[1].value = ASCIIToUTF16("1234");
form_data.fields[1].unique_renderer_id = 4;
PasswordForm second_form;
second_form.form_data = form_data;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment