| Index: chrome/renderer/autofill/autofill_agent.cc
|
| diff --git a/chrome/renderer/autofill/autofill_agent.cc b/chrome/renderer/autofill/autofill_agent.cc
|
| index d51cc48cde3c04d2becd2053212cc57003785802..294ba19b33f091f1dc731a7d51979b523c3ebd65 100644
|
| --- a/chrome/renderer/autofill/autofill_agent.cc
|
| +++ b/chrome/renderer/autofill/autofill_agent.cc
|
| @@ -86,6 +86,8 @@ bool AutofillAgent::OnMessageReceived(const IPC::Message& message) {
|
| OnClearPreviewedForm)
|
| IPC_MESSAGE_HANDLER(AutofillMsg_SetNodeText,
|
| OnSetNodeText)
|
| + IPC_MESSAGE_HANDLER(AutofillMsg_AcceptPasswordAutofillSuggestion,
|
| + OnAcceptPasswordAutofillSuggestion)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
| @@ -230,8 +232,10 @@ void AutofillAgent::textFieldDidChange(const WebInputElement& element) {
|
| }
|
|
|
| void AutofillAgent::TextFieldDidChangeImpl(const WebInputElement& element) {
|
| - if (password_autofill_manager_->TextDidChangeInTextField(element))
|
| + if (password_autofill_manager_->TextDidChangeInTextField(element)) {
|
| + autofill_query_element_ = element;
|
| return;
|
| + }
|
|
|
| ShowSuggestions(element, false, true, false);
|
|
|
| @@ -245,8 +249,10 @@ void AutofillAgent::TextFieldDidChangeImpl(const WebInputElement& element) {
|
|
|
| void AutofillAgent::textFieldDidReceiveKeyDown(const WebInputElement& element,
|
| const WebKeyboardEvent& event) {
|
| - if (password_autofill_manager_->TextFieldHandlingKeyDown(element, event))
|
| + if (password_autofill_manager_->TextFieldHandlingKeyDown(element, event)) {
|
| + autofill_query_element_ = element;
|
| return;
|
| + }
|
|
|
| if (event.windowsKeyCode == ui::VKEY_DOWN ||
|
| event.windowsKeyCode == ui::VKEY_UP)
|
| @@ -398,6 +404,16 @@ void AutofillAgent::OnSetNodeText(const string16& value) {
|
| SetNodeText(value, &autofill_query_element_);
|
| }
|
|
|
| +void AutofillAgent::OnAcceptPasswordAutofillSuggestion(const string16& value) {
|
| + // We need to make sure this is handled here because the browser process
|
| + // skipped it handling because it believed it would be handled here. If it
|
| + // isn't handled here then the browser logic needs to be updated.
|
| + bool handled = password_autofill_manager_->DidAcceptAutofillSuggestion(
|
| + autofill_query_element_,
|
| + value);
|
| + DCHECK(handled);
|
| +}
|
| +
|
| void AutofillAgent::ShowSuggestions(const WebInputElement& element,
|
| bool autofill_on_empty_values,
|
| bool requires_caret_at_end,
|
|
|