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

Unified Diff: chrome/renderer/autofill/password_autofill_agent_browsertest.cc

Issue 2750323003: [Password Manager] Replace WebInputElement.setValue with WebInputElement.setAutofillValue (Closed)
Patch Set: Fixed Win tests Created 3 years, 9 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
« no previous file with comments | « no previous file | chrome/renderer/autofill/password_generation_agent_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 fbdc312d3bfbb4cdde3a9f41be60d7197598fb8f..d1a69a75e23e0a246de3f9eb1c76dadc2ecdc805 100644
--- a/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
+++ b/chrome/renderer/autofill/password_autofill_agent_browsertest.cc
@@ -177,18 +177,6 @@ const char kJavaScriptClick[] =
"form.dispatchEvent(event);"
"console.log('clicked!');";
-const char kOnChangeDetectionScript[] =
- "<script>"
- " usernameOnchangeCalled = false;"
- " passwordOnchangeCalled = false;"
- " document.getElementById('username').onchange = function() {"
- " usernameOnchangeCalled = true;"
- " };"
- " document.getElementById('password').onchange = function() {"
- " passwordOnchangeCalled = true;"
- " };"
- "</script>";
-
const char kFormHTMLWithTwoTextFields[] =
"<FORM name='LoginTestForm' id='LoginTestForm' "
"action='http://www.bidule.com'>"
@@ -551,6 +539,16 @@ class PasswordAutofillAgentTest : public ChromeRenderViewTest {
EXPECT_EQ(ASCIIToUTF16(new_password_value), form.new_password_value);
}
+ void CheckIfEventsAreCalled(const std::vector<base::string16>& checkers,
+ bool expected) {
+ for (const base::string16& variable : checkers) {
+ int value;
+ EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(variable, &value))
+ << variable;
+ EXPECT_EQ(expected, value == 1) << variable;
+ }
+ }
+
bool GetCalledShowPasswordGenerationPopup() {
fake_pw_client_.Flush();
return fake_pw_client_.called_show_pw_generation_popup();
@@ -915,11 +913,16 @@ TEST_F(PasswordAutofillAgentTest, NoDOMActivationTest) {
CheckTextFieldsDOMState(kAliceUsername, true, "", true);
}
-// Verifies that password autofill triggers onChange events in JavaScript for
-// forms that are filled on page load.
+// Verifies that password autofill triggers events in JavaScript for forms that
+// are filled on page load.
TEST_F(PasswordAutofillAgentTest,
PasswordAutofillTriggersOnChangeEventsOnLoad) {
- std::string html = std::string(kFormHTML) + kOnChangeDetectionScript;
+ std::vector<base::string16> username_event_checkers;
+ std::vector<base::string16> password_event_checkers;
+ std::string events_registration_script =
+ CreateScriptToRegisterListeners(kUsernameName, &username_event_checkers) +
+ CreateScriptToRegisterListeners(kPasswordName, &password_event_checkers);
+ std::string html = std::string(kFormHTML) + events_registration_script;
LoadHTML(html.c_str());
UpdateOriginForHTML(html);
UpdateUsernameAndPasswordElements();
@@ -934,40 +937,28 @@ TEST_F(PasswordAutofillAgentTest,
// password should only be visible to the user.
CheckTextFieldsDOMState(kAliceUsername, true, std::string(), true);
- // A JavaScript onChange event should have been triggered for the username,
- // but not yet for the password.
- int username_onchange_called = -1;
- int password_onchange_called = -1;
- ASSERT_TRUE(
- ExecuteJavaScriptAndReturnIntValue(
- ASCIIToUTF16("usernameOnchangeCalled ? 1 : 0"),
- &username_onchange_called));
- EXPECT_EQ(1, username_onchange_called);
- ASSERT_TRUE(
- ExecuteJavaScriptAndReturnIntValue(
- ASCIIToUTF16("passwordOnchangeCalled ? 1 : 0"),
- &password_onchange_called));
- // TODO(isherman): Re-enable this check once http://crbug.com/333144 is fixed.
- // EXPECT_EQ(0, password_onchange_called);
+ // A JavaScript events should have been triggered for the username, but not
vabr (Chromium) 2017/03/21 07:57:30 nit: Remove "A": A JavaScript events -> JavaScript
kolos1 2017/03/21 08:29:21 Done.
+ // yet for the password.
+ CheckIfEventsAreCalled(username_event_checkers, true);
+ CheckIfEventsAreCalled(password_event_checkers, false);
// Simulate a user click so that the password field's real value is filled.
SimulateElementClick(kUsernameName);
CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true);
- // Now, a JavaScript onChange event should have been triggered for the
- // password as well.
- ASSERT_TRUE(
- ExecuteJavaScriptAndReturnIntValue(
- ASCIIToUTF16("passwordOnchangeCalled ? 1 : 0"),
- &password_onchange_called));
- EXPECT_EQ(1, password_onchange_called);
+ // Now, JavaScript events should have been triggered for the password as well.
+ CheckIfEventsAreCalled(password_event_checkers, true);
}
-// Verifies that password autofill triggers onChange events in JavaScript for
-// forms that are filled after page load.
+// Verifies that password autofill triggers events in JavaScript for forms that
+// are filled after page load.
TEST_F(PasswordAutofillAgentTest,
PasswordAutofillTriggersOnChangeEventsWaitForUsername) {
- std::string html = std::string(kFormHTML) + kOnChangeDetectionScript;
+ std::vector<base::string16> event_checkers;
+ std::string events_registration_script =
+ CreateScriptToRegisterListeners(kUsernameName, &event_checkers) +
+ CreateScriptToRegisterListeners(kPasswordName, &event_checkers);
+ std::string html = std::string(kFormHTML) + events_registration_script;
LoadHTML(html.c_str());
UpdateOriginForHTML(html);
UpdateUsernameAndPasswordElements();
@@ -987,25 +978,16 @@ TEST_F(PasswordAutofillAgentTest,
// Simulate the user entering the first letter of their username and selecting
// the matching autofill from the dropdown.
SimulateUsernameChange("a");
+ // Since the username element has focus, blur event will be not triggered.
+ base::Erase(event_checkers, base::ASCIIToUTF16("username_blur_event"));
SimulateSuggestionChoice(username_element_);
// The username and password should now have been autocompleted.
CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true);
- // JavaScript onChange events should have been triggered both for the username
- // and for the password.
- int username_onchange_called = -1;
- int password_onchange_called = -1;
- ASSERT_TRUE(
- ExecuteJavaScriptAndReturnIntValue(
- ASCIIToUTF16("usernameOnchangeCalled ? 1 : 0"),
- &username_onchange_called));
- EXPECT_EQ(1, username_onchange_called);
- ASSERT_TRUE(
- ExecuteJavaScriptAndReturnIntValue(
- ASCIIToUTF16("passwordOnchangeCalled ? 1 : 0"),
- &password_onchange_called));
- EXPECT_EQ(1, password_onchange_called);
+ // JavaScript events should have been triggered both for the username and for
+ // the password.
+ CheckIfEventsAreCalled(event_checkers, true);
}
// Tests that |FillSuggestion| properly fills the username and password.
« no previous file with comments | « no previous file | chrome/renderer/autofill/password_generation_agent_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698