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 e2714226c66f8bd9963fbdeef86d245fae659c66..d1fa6a8ec0ab91807f9a5074fe757611705a5032 100644 |
--- a/components/autofill/content/renderer/password_autofill_agent.cc |
+++ b/components/autofill/content/renderer/password_autofill_agent.cc |
@@ -344,21 +344,29 @@ bool PasswordAutofillAgent::TextFieldHandlingKeyDown( |
return true; |
} |
-bool PasswordAutofillAgent::DidAcceptAutofillSuggestion( |
+bool PasswordAutofillAgent::AcceptSuggestion( |
const blink::WebNode& node, |
- const blink::WebString& username) { |
- blink::WebInputElement input; |
- PasswordInfo password; |
- if (!FindLoginInfo(node, &input, &password)) |
+ const blink::WebString& username, |
+ const blink::WebString& password) { |
+ blink::WebInputElement username_element; |
+ PasswordInfo password_info; |
+ |
+ if (!FindLoginInfo(node, &username_element, &password_info) || |
+ !IsElementAutocompletable(username_element) || |
+ !IsElementAutocompletable(password_info.password_field)) { |
return false; |
+ } |
- // Set the incoming |username| in the text field and |FillUserNameAndPassword| |
- // will do the rest. |
- input.setValue(username, true); |
- return FillUserNameAndPassword(&input, &password.password_field, |
- password.fill_data, |
- true /* exact_username_match */, |
- true /* set_selection */); |
+ base::string16 current_username = username_element.value(); |
+ username_element.setValue(username, true); |
+ username_element.setAutofilled(true); |
+ username_element.setSelectionRange(current_username.length(), |
+ username.length()); |
+ |
+ password_info.password_field.setValue(password, true); |
+ password_info.password_field.setAutofilled(true); |
+ |
+ return true; |
} |
bool PasswordAutofillAgent::DidClearAutofillSelection( |