| Index: webkit/glue/webframeloaderclient_impl.cc
|
| ===================================================================
|
| --- webkit/glue/webframeloaderclient_impl.cc (revision 5578)
|
| +++ webkit/glue/webframeloaderclient_impl.cc (working copy)
|
| @@ -44,8 +44,6 @@
|
| #endif
|
| #include "webkit/glue/autofill_form.h"
|
| #include "webkit/glue/alt_404_page_resource_fetcher.h"
|
| -#include "webkit/glue/autocomplete_input_listener.h"
|
| -#include "webkit/glue/form_autocomplete_listener.h"
|
| #include "webkit/glue/glue_util.h"
|
| #include "webkit/glue/password_form_dom_manager.h"
|
| #include "webkit/glue/plugins/plugin_list.h"
|
| @@ -328,10 +326,11 @@
|
| void WebFrameLoaderClient::dispatchDidFinishDocumentLoad() {
|
| WebViewImpl* webview = webframe_->webview_impl();
|
| WebViewDelegate* d = webview->delegate();
|
| - // A frame may be reused. This call ensures a new AutoCompleteListener will
|
| - // be created for the newly created frame.
|
| - webframe_->ClearAutocompleteListener();
|
|
|
| + // A frame may be reused. This call ensures we don't hold on to our password
|
| + // listeners and their associated HTMLInputElements.
|
| + webframe_->ClearPasswordListeners();
|
| +
|
| // The document has now been fully loaded.
|
| // Scan for password forms to be sent to the browser
|
| PassRefPtr<WebCore::HTMLCollection> forms =
|
| @@ -351,28 +350,11 @@
|
| if (!form->autoComplete())
|
| continue;
|
|
|
| - std::set<std::wstring> password_related_fields;
|
| scoped_ptr<PasswordForm> passwordFormPtr(
|
| PasswordFormDomManager::CreatePasswordForm(form));
|
|
|
| - if (passwordFormPtr.get()) {
|
| + if (passwordFormPtr.get())
|
| passwordForms.push_back(*passwordFormPtr);
|
| -
|
| - // Let's remember the names of password related fields so we do not
|
| - // autofill them with the regular form autofill.
|
| -
|
| - if (!passwordFormPtr->username_element.empty())
|
| - password_related_fields.insert(passwordFormPtr->username_element);
|
| - DCHECK(!passwordFormPtr->password_element.empty());
|
| - password_related_fields.insert(passwordFormPtr->password_element);
|
| - if (!passwordFormPtr->old_password_element.empty())
|
| - password_related_fields.insert(passwordFormPtr->old_password_element);
|
| - }
|
| -
|
| - // Now let's register for any text input.
|
| - // TODO(jcampan): bug #3847 merge password and form autofill so we
|
| - // traverse the form elements only once.
|
| - RegisterAutofillListeners(form, password_related_fields);
|
| }
|
| }
|
|
|
| @@ -703,40 +685,6 @@
|
| NavigationGestureAuto;
|
| }
|
|
|
| -void WebFrameLoaderClient::RegisterAutofillListeners(
|
| - WebCore::HTMLFormElement* form,
|
| - const std::set<std::wstring>& excluded_fields) {
|
| -
|
| - WebViewDelegate* webview_delegate = webframe_->webview_impl()->delegate();
|
| - if (!webview_delegate)
|
| - return;
|
| -
|
| - for (size_t i = 0; i < form->formElements.size(); i++) {
|
| - WebCore::HTMLFormControlElement* form_element = form->formElements[i];
|
| - if (!form_element->hasLocalName(WebCore::HTMLNames::inputTag))
|
| - continue;
|
| -
|
| - WebCore::HTMLInputElement* input_element =
|
| - static_cast<WebCore::HTMLInputElement*>(form_element);
|
| - if (!input_element->isEnabled() || !input_element->isTextField() ||
|
| - input_element->isPasswordField() || !input_element->autoComplete()) {
|
| - continue;
|
| - }
|
| -
|
| - std::wstring name = webkit_glue::StringToStdWString(input_element->name());
|
| - if (name.empty() || excluded_fields.find(name) != excluded_fields.end())
|
| - continue;
|
| -
|
| -#if !defined(OS_MACOSX)
|
| - // FIXME on Mac
|
| - webkit_glue::FormAutocompleteListener* listener =
|
| - new webkit_glue::FormAutocompleteListener(webview_delegate);
|
| - webframe_->GetAutocompleteListener()->AddInputListener(input_element,
|
| - listener);
|
| -#endif
|
| - }
|
| -}
|
| -
|
| void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title) {
|
| WebViewImpl* webview = webframe_->webview_impl();
|
| WebViewDelegate* d = webview->delegate();
|
| @@ -1001,7 +949,7 @@
|
| PassRefPtr<FormState> form_ref) {
|
| SearchableFormData* form_data = SearchableFormData::Create(form_ref->form());
|
| WebDocumentLoaderImpl* loader = static_cast<WebDocumentLoaderImpl*>(
|
| - webframe_->frame()->loader()->provisionalDocumentLoader());
|
| + webframe_->frame()->loader()->provisionalDocumentLoader());
|
| // Don't free the SearchableFormData, the loader will do that.
|
| loader->set_searchable_form_data(form_data);
|
|
|
|
|