| 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 0a5c23e191398576b618ed1168ea47ff4319871c..5b173f90377bd8f1b51d8c25e1e6f459b8739b05 100644
|
| --- a/components/autofill/content/renderer/password_autofill_agent.cc
|
| +++ b/components/autofill/content/renderer/password_autofill_agent.cc
|
| @@ -657,7 +657,7 @@ void PasswordAutofillAgent::FillFormOnPasswordRecieved(
|
| username_element.autoComplete()) &&
|
| 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
|
| @@ -732,7 +732,7 @@ bool PasswordAutofillAgent::FillUserNameAndPassword(
|
| if (IsElementEditable(*username_element) &&
|
| (ShouldIgnoreAutocompleteOffForPasswordFields() ||
|
| username_element->autoComplete())) {
|
| - username_element->setValue(username);
|
| + username_element->setValue(username, true);
|
| SetElementAutofilled(username_element, true);
|
|
|
| if (set_selection) {
|
| @@ -753,9 +753,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;
|
| }
|
|
|
| @@ -833,7 +836,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();
|
|
|