summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
Diffstat (limited to 'webkit')
-rw-r--r--webkit/glue/editor_client_impl.cc22
-rw-r--r--webkit/glue/editor_client_impl.h2
2 files changed, 22 insertions, 2 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) {
diff --git a/webkit/glue/editor_client_impl.h b/webkit/glue/editor_client_impl.h
index 0778b48..4bacad2a 100644
--- a/webkit/glue/editor_client_impl.h
+++ b/webkit/glue/editor_client_impl.h
@@ -77,7 +77,7 @@ class EditorClientImpl : public WebCore::EditorClient {
virtual void handleInputMethodKeydown(WebCore::KeyboardEvent*);
virtual void textFieldDidBeginEditing(WebCore::Element*);
- virtual void textFieldDidEndEditing(WebCore::Element*);
+ virtual void textFieldDidEndEditing(WebCore::Element* element);
virtual void textDidChangeInTextField(WebCore::Element*);
virtual bool doTextFieldCommandFromEvent(WebCore::Element*,WebCore::KeyboardEvent*);
virtual void textWillBeDeletedInTextField(WebCore::Element*);