Index: components/autofill/content/renderer/password_autofill_agent.cc |
diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc |
index 9e8155d6da1159a66b38274ba5d18fe5362450ee..93a1aa879b183581b1fe65f3a67f1aafac698660 100644 |
--- a/components/autofill/content/renderer/password_autofill_agent.cc |
+++ b/components/autofill/content/renderer/password_autofill_agent.cc |
@@ -671,7 +671,7 @@ void PasswordAutofillAgent::FillFormOnPasswordRecieved( |
if (IsElementAutocompletable(username_element) && |
username_element.value().isEmpty()) { |
// TODO(tkent): Check maxlength and pattern. |
- username_element.setValue(fill_data.basic_data.fields[0].value); |
+ username_element.setValue(fill_data.basic_data.fields[0].value, true); |
} |
// Fill if we have an exact match for the username. Note that this sets |
@@ -742,7 +742,7 @@ bool PasswordAutofillAgent::FillUserNameAndPassword( |
// Input matches the username, fill in required values. |
if (IsElementAutocompletable(*username_element)) { |
- username_element->setValue(username); |
+ username_element->setValue(username, true); |
SetElementAutofilled(username_element, true); |
if (set_selection) { |
@@ -763,9 +763,12 @@ bool PasswordAutofillAgent::FillUserNameAndPassword( |
gesture_handler_->addElement(*password_element); |
password_element->setSuggestedValue(password); |
} else { |
- password_element->setValue(password); |
+ password_element->setValue(password, true); |
} |
- SetElementAutofilled(password_element, true); |
+ // Note: Don't call SetElementAutofilled() here, as that dispatches an |
+ // onChange event in JavaScript, which is not appropriate for the password |
+ // element if a user gesture has not yet occured. |
+ password_element->setAutofilled(true); |
return true; |
} |
@@ -843,7 +846,7 @@ void PasswordAutofillAgent::AutofillWebUserGestureHandler::onGesture() { |
std::vector<blink::WebInputElement>::iterator iter; |
for (iter = elements_.begin(); iter != elements_.end(); ++iter) { |
if (!iter->isNull() && !iter->suggestedValue().isNull()) |
- iter->setValue(iter->suggestedValue()); |
+ iter->setValue(iter->suggestedValue(), true); |
} |
elements_.clear(); |