| Index: chrome/renderer/autofill/password_autofill_agent_browsertest.cc
|
| diff --git a/chrome/renderer/autofill/password_autofill_agent_browsertest.cc b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
|
| index 66529cad25293b47249dabde58cd088f8422040b..4b618b0be2427062996015f68d2dca5737469b68 100644
|
| --- a/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
|
| +++ b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
|
| @@ -95,6 +95,12 @@ const char kEmptyFormHTML[] =
|
| "<head> <style> form {display: inline;} </style> </head>"
|
| "<body> <form> </form> </body>";
|
|
|
| +const char kFormWithoutPasswordsHTML[] =
|
| + "<FORM>"
|
| + " <INPUT type='text' id='random_field'/>"
|
| + " <INPUT type='text' id='username'/>"
|
| + "</FORM>";
|
| +
|
| const char kNonVisibleFormHTML[] =
|
| "<head> <style> form {visibility: hidden;} </style> </head>"
|
| "<body>"
|
| @@ -857,53 +863,132 @@ TEST_F(PasswordAutofillAgentTest, IsWebElementVisibleTest) {
|
| EXPECT_FALSE(form_util::IsWebElementVisible(web_control_elements[0]));
|
| }
|
|
|
| -TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest) {
|
| - fake_driver_.reset_password_forms_rendered();
|
| +TEST_F(PasswordAutofillAgentTest,
|
| + SendPasswordFormsTest_VisibleFormWithNoUsername) {
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kVisibleFormWithNoUsernameHTML);
|
| base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| + ASSERT_TRUE(fake_driver_.password_forms_parsed());
|
| + EXPECT_FALSE(fake_driver_.password_forms_parsed()->empty());
|
| EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| - ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered()));
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| EXPECT_FALSE(fake_driver_.password_forms_rendered()->empty());
|
| +}
|
|
|
| - fake_driver_.reset_password_forms_rendered();
|
| +TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_EmptyForm) {
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kEmptyFormHTML);
|
| base::RunLoop().RunUntilIdle();
|
| + EXPECT_FALSE(fake_driver_.called_password_forms_parsed());
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| + EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty());
|
| +}
|
| +
|
| +TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_FormWithoutPasswords) {
|
| + fake_driver_.reset_password_forms_calls();
|
| + LoadHTML(kFormWithoutPasswordsHTML);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_FALSE(fake_driver_.called_password_forms_parsed());
|
| EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| - ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered()));
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty());
|
| +}
|
|
|
| - fake_driver_.reset_password_forms_rendered();
|
| +TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_NonDisplayedForm) {
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kNonDisplayedFormHTML);
|
| base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| + ASSERT_TRUE(fake_driver_.password_forms_parsed());
|
| + EXPECT_FALSE(fake_driver_.password_forms_parsed()->empty());
|
| EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| - ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered()));
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty());
|
| +}
|
|
|
| - fake_driver_.reset_password_forms_rendered();
|
| +TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_NonVisibleForm) {
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kNonVisibleFormHTML);
|
| base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| + ASSERT_TRUE(fake_driver_.password_forms_parsed());
|
| + EXPECT_FALSE(fake_driver_.password_forms_parsed()->empty());
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| + EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty());
|
| +}
|
| +
|
| +TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_PasswordChangeForm) {
|
| + fake_driver_.reset_password_forms_calls();
|
| + LoadHTML(kPasswordChangeFormHTML);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| + ASSERT_TRUE(fake_driver_.password_forms_parsed());
|
| + EXPECT_FALSE(fake_driver_.password_forms_parsed()->empty());
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| + EXPECT_FALSE(fake_driver_.password_forms_rendered()->empty());
|
| +}
|
| +
|
| +TEST_F(PasswordAutofillAgentTest,
|
| + SendPasswordFormsTest_CannotCreatePasswordForm) {
|
| + // This test checks that a request to the store is sent even if we fail to
|
| + // create a |PasswordForm|.
|
| + fake_driver_.reset_password_forms_calls();
|
| + const char kInvalidFormHTML[] =
|
| + "<FORM name='ChangeWithUsernameForm' action='http://www.bidule.com'>"
|
| + " <INPUT type='password' id='pwd1' value='1'/>"
|
| + " <INPUT type='password' id='pwd1' value='2'/>"
|
| + " <INPUT type='password' id='pwd2' value='3'/>"
|
| + " <INPUT type='submit' value='Login'/>"
|
| + "</FORM>";
|
| + LoadHTML(kInvalidFormHTML);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| + ASSERT_TRUE(fake_driver_.password_forms_parsed());
|
| + EXPECT_FALSE(fake_driver_.password_forms_parsed()->empty());
|
| EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
| - ASSERT_TRUE(static_cast<bool>(fake_driver_.password_forms_rendered()));
|
| + ASSERT_TRUE(fake_driver_.password_forms_rendered());
|
| EXPECT_TRUE(fake_driver_.password_forms_rendered()->empty());
|
| }
|
|
|
| +TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_ReloadTab) {
|
| + // PasswordAutofillAgent::sent_request_to_store_ disables duplicate requests
|
| + // to the store. This test checks that new request will be sent if the frame
|
| + // has been reloaded.
|
| + fake_driver_.reset_password_forms_calls();
|
| + LoadHTML(kNonVisibleFormHTML);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| +
|
| + fake_driver_.reset_password_forms_calls();
|
| + std::string url_string = "data:text/html;charset=utf-8,";
|
| + url_string.append(kNonVisibleFormHTML);
|
| + Reload(GURL(url_string));
|
| + EXPECT_TRUE(fake_driver_.called_password_forms_parsed());
|
| + ASSERT_TRUE(fake_driver_.password_forms_parsed());
|
| + EXPECT_FALSE(fake_driver_.password_forms_parsed()->empty());
|
| +}
|
| +
|
| TEST_F(PasswordAutofillAgentTest, SendPasswordFormsTest_Redirection) {
|
| - fake_driver_.reset_password_forms_rendered();
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kEmptyWebpage);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_FALSE(fake_driver_.called_password_forms_rendered());
|
|
|
| - fake_driver_.reset_password_forms_rendered();
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kRedirectionWebpage);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_FALSE(fake_driver_.called_password_forms_rendered());
|
|
|
| - fake_driver_.reset_password_forms_rendered();
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kSimpleWebpage);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
|
|
| - fake_driver_.reset_password_forms_rendered();
|
| + fake_driver_.reset_password_forms_calls();
|
| LoadHTML(kWebpageWithDynamicContent);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_TRUE(fake_driver_.called_password_forms_rendered());
|
|
|