| 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 7d061db21d2d0849ceaa8070f3313ee5c0d36e4e..7eed5d8205d31528f081128ac7b0b3b4ead9893f 100644
|
| --- a/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
|
| +++ b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
|
| @@ -1056,6 +1056,84 @@ TEST_F(PasswordAutofillAgentTest, AcceptSuggestion) {
|
| CheckUsernameSelection(username_length, username_length);
|
| }
|
|
|
| +// Tests that |SelectSuggestion| properly previews the username and password.
|
| +TEST_F(PasswordAutofillAgentTest, SelectSuggestion) {
|
| + // Simulate the browser sending the login info, but set |wait_for_username|
|
| + // to prevent the form from being immediately filled.
|
| + fill_data_.wait_for_username = true;
|
| + SimulateOnFillPasswordForm(fill_data_);
|
| +
|
| + // Neither field should have been autocompleted.
|
| + CheckTextFieldsDOMState(std::string(), false, std::string(), false);
|
| +
|
| + // If the password field is not autocompletable, it should not be affected.
|
| + SetElementReadOnly(password_element_, true);
|
| + EXPECT_FALSE(password_autofill_->SelectSuggestion(
|
| + username_element_, kAliceUsername, kAlicePassword));
|
| + EXPECT_EQ(std::string(), username_element_.suggestedValue().utf8());
|
| + EXPECT_FALSE(username_element_.isAutofilled());
|
| + EXPECT_EQ(std::string(), password_element_.suggestedValue().utf8());
|
| + EXPECT_FALSE(password_element_.isAutofilled());
|
| + SetElementReadOnly(password_element_, false);
|
| +
|
| + // After selecting the suggestion, both fields should be previewed
|
| + // with suggested values.
|
| + EXPECT_TRUE(password_autofill_->SelectSuggestion(
|
| + username_element_, kAliceUsername, kAlicePassword));
|
| + EXPECT_EQ(
|
| + kAliceUsername,
|
| + static_cast<std::string>(username_element_.suggestedValue().utf8()));
|
| + EXPECT_TRUE(username_element_.isAutofilled());
|
| + EXPECT_EQ(
|
| + kAlicePassword,
|
| + static_cast<std::string>(password_element_.suggestedValue().utf8()));
|
| + EXPECT_TRUE(password_element_.isAutofilled());
|
| + int username_length = strlen(kAliceUsername);
|
| + // Selection range starts from the end of matching characters between
|
| + // username_element value and suggestedValue. value lenght is 0 in this case.
|
| + CheckUsernameSelection(0, username_length);
|
| +
|
| + // Try selecting a suggestion with a password different from the one that was
|
| + // initially sent to the renderer.
|
| + EXPECT_TRUE(password_autofill_->SelectSuggestion(
|
| + username_element_, kBobUsername, kCarolPassword));
|
| + EXPECT_EQ(
|
| + kBobUsername,
|
| + static_cast<std::string>(username_element_.suggestedValue().utf8()));
|
| + EXPECT_TRUE(username_element_.isAutofilled());
|
| + EXPECT_EQ(
|
| + kCarolPassword,
|
| + static_cast<std::string>(password_element_.suggestedValue().utf8()));
|
| + EXPECT_TRUE(password_element_.isAutofilled());
|
| + username_length = strlen(kBobUsername);
|
| + CheckUsernameSelection(0, username_length);
|
| +}
|
| +
|
| +// Tests that |SelectSuggestion| properly sets the username selection range.
|
| +TEST_F(PasswordAutofillAgentTest, SelectSuggestionSelectionRange) {
|
| + username_element_.setValue(WebString::fromUTF8("ali"));
|
| +
|
| + // Simulate the browser sending the login info, but set |wait_for_username|
|
| + // to prevent the form from being immediately filled.
|
| + fill_data_.wait_for_username = true;
|
| + SimulateOnFillPasswordForm(fill_data_);
|
| +
|
| + EXPECT_TRUE(password_autofill_->SelectSuggestion(
|
| + username_element_, kAliceUsername, kAlicePassword));
|
| + EXPECT_EQ(
|
| + kAliceUsername,
|
| + static_cast<std::string>(username_element_.suggestedValue().utf8()));
|
| + EXPECT_TRUE(username_element_.isAutofilled());
|
| + EXPECT_EQ(
|
| + kAlicePassword,
|
| + static_cast<std::string>(password_element_.suggestedValue().utf8()));
|
| + EXPECT_TRUE(password_element_.isAutofilled());
|
| + int username_length = strlen(kAliceUsername);
|
| + // Selection range starts from the end of matching characters between
|
| + // username_element value and suggestedValue.
|
| + CheckUsernameSelection(3, username_length);
|
| +}
|
| +
|
| // Tests that logging is off by default.
|
| TEST_F(PasswordAutofillAgentTest, OnChangeLoggingState_NoMessage) {
|
| render_thread_->sink().ClearMessages();
|
|
|