Index: webkit/glue/webframe_impl.cc |
=================================================================== |
--- webkit/glue/webframe_impl.cc (revision 5578) |
+++ webkit/glue/webframe_impl.cc (working copy) |
@@ -286,8 +286,7 @@ |
frames_scoping_count_(-1), |
scoping_complete_(false), |
next_invalidate_after_(0), |
- printing_(false), |
- form_autocomplete_listener_(NULL) { |
+ printing_(false) { |
StatsCounter(kWebFrameActiveCount).Increment(); |
live_object_count_++; |
} |
@@ -297,6 +296,7 @@ |
live_object_count_--; |
CancelPendingScopingEffort(); |
+ ClearPasswordListeners(); |
} |
// WebFrame ------------------------------------------------------------------- |
@@ -1873,14 +1873,24 @@ |
return frame()->eventHandler()->pendingFrameUnloadEventCount(); |
} |
-webkit_glue::AutocompleteBodyListener* WebFrameImpl::GetAutocompleteListener() { |
- if (!form_autocomplete_listener_) { |
- form_autocomplete_listener_ = |
- adoptRef(new webkit_glue::AutocompleteBodyListener(frame())); |
+void WebFrameImpl::RegisterPasswordListener( |
+ PassRefPtr<WebCore::HTMLInputElement> input_element, |
+ webkit_glue::PasswordAutocompleteListener* listener) { |
+ RefPtr<WebCore::HTMLInputElement> element = input_element; |
+ DCHECK(password_listeners_.find(element) == password_listeners_.end()); |
+ password_listeners_.set(element, listener); |
+} |
+ |
+webkit_glue::PasswordAutocompleteListener* WebFrameImpl::GetPasswordListener( |
+ WebCore::HTMLInputElement* input_element) { |
+ return password_listeners_.get(input_element); |
+} |
+ |
+void WebFrameImpl::ClearPasswordListeners() { |
+ for (PasswordListenerMap::iterator iter = password_listeners_.begin(); |
+ iter != password_listeners_.end(); ++iter) { |
+ delete iter->second; |
} |
- return form_autocomplete_listener_.get(); |
+ password_listeners_.clear(); |
} |
-void WebFrameImpl::ClearAutocompleteListener() { |
- form_autocomplete_listener_ = NULL; |
-} |