diff options
Diffstat (limited to 'webkit/glue/editor_client_impl.cc')
-rw-r--r-- | webkit/glue/editor_client_impl.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/webkit/glue/editor_client_impl.cc b/webkit/glue/editor_client_impl.cc index 7216e4f..a4b8380 100644 --- a/webkit/glue/editor_client_impl.cc +++ b/webkit/glue/editor_client_impl.cc @@ -677,7 +677,7 @@ void EditorClientImpl::handleInputMethodKeydown(WebCore::KeyboardEvent* keyEvent void EditorClientImpl::textFieldDidBeginEditing(WebCore::Element*) { } -void EditorClientImpl::textFieldDidEndEditing(WebCore::Element*) { +void EditorClientImpl::textFieldDidEndEditing(WebCore::Element* element) { // Notification that focus was lost. Be careful with this, it's also sent // when the page is being closed. @@ -686,6 +686,26 @@ void EditorClientImpl::textFieldDidEndEditing(WebCore::Element*) { // Hide any showing popup. web_view_->HideAutoCompletePopup(); + + // Notify any password-listener of the focus change. + WebCore::HTMLInputElement* input_element = + webkit_glue::ElementToHTMLInputElement(element); + if (!input_element) + return; + + WebFrameImpl* webframe = + WebFrameImpl::FromFrame(input_element->document()->frame()); + if (webframe->GetView() && !webframe->GetView()->GetDelegate()) + return; // The page is getting closed, don't fill the password. + + webkit_glue::PasswordAutocompleteListener* listener = + webframe->GetPasswordListener(input_element); + if (!listener) + return; + + std::wstring value = + webkit_glue::StringToStdWString(input_element->value()); + listener->OnBlur(input_element, value); } void EditorClientImpl::textDidChangeInTextField(WebCore::Element* element) { |