Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2441)

Unified Diff: webkit/glue/webframeloaderclient_impl.cc

Issue 11479: New take at implementing autofill using the editor client API (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/glue/webframeloaderclient_impl.h ('k') | webkit/tools/test_shell/keyboard_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « webkit/glue/webframeloaderclient_impl.h ('k') | webkit/tools/test_shell/keyboard_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698