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

Unified Diff: components/autofill/content/renderer/form_cache.cc

Issue 265203002: Revert of [Autofill] Enable Autofill for dynamically created forms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months 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
Index: components/autofill/content/renderer/form_cache.cc
diff --git a/components/autofill/content/renderer/form_cache.cc b/components/autofill/content/renderer/form_cache.cc
index bc5519b2fd71e67b836150a0b0893629174ca1db..8e3fc33a9acce657c46ebbaf2b2a7a0222a82bca 100644
--- a/components/autofill/content/renderer/form_cache.cc
+++ b/components/autofill/content/renderer/form_cache.cc
@@ -20,7 +20,6 @@
#include "third_party/WebKit/public/web/WebFormElement.h"
#include "third_party/WebKit/public/web/WebInputElement.h"
#include "third_party/WebKit/public/web/WebLocalFrame.h"
-#include "third_party/WebKit/public/web/WebNodeList.h"
#include "third_party/WebKit/public/web/WebSelectElement.h"
#include "third_party/WebKit/public/web/WebTextAreaElement.h"
#include "ui/base/l10n/l10n_util.h"
@@ -69,11 +68,22 @@
FormCache::~FormCache() {
}
-void FormCache::ExtractNewForms(const WebFrame& frame,
- std::vector<FormData>* forms) {
+void FormCache::ExtractForms(const WebFrame& frame,
+ std::vector<FormData>* forms) {
+ ExtractFormsAndFormElements(frame, kRequiredAutofillFields, forms, NULL);
+}
+
+bool FormCache::ExtractFormsAndFormElements(
+ const WebFrame& frame,
+ size_t minimum_required_fields,
+ std::vector<FormData>* forms,
+ std::vector<WebFormElement>* web_form_elements) {
+ // Reset the cache for this frame.
+ ResetFrame(frame);
+
WebDocument document = frame.document();
if (document.isNull())
- return;
+ return false;
web_documents_.insert(document);
@@ -81,6 +91,7 @@
document.forms(web_forms);
size_t num_fields_seen = 0;
+ bool has_skipped_forms = false;
for (size_t i = 0; i < web_forms.size(); ++i) {
WebFormElement form_element = web_forms[i];
@@ -117,8 +128,9 @@
// To avoid overly expensive computation, we impose a minimum number of
// allowable fields. The corresponding maximum number of allowable fields
// is imposed by WebFormElementToFormData().
- if (num_editable_elements < kRequiredAutofillFields &&
+ if (num_editable_elements < minimum_required_fields &&
control_elements.size() > 0) {
+ has_skipped_forms = true;
continue;
}
@@ -135,12 +147,17 @@
if (num_fields_seen > kMaxParseableFields)
break;
- if (form.fields.size() >= kRequiredAutofillFields &&
- !parsed_forms_[&frame].count(form)) {
+ if (form.fields.size() >= minimum_required_fields) {
forms->push_back(form);
- parsed_forms_[&frame].insert(form);
- }
- }
+ if (web_form_elements)
+ web_form_elements->push_back(form_element);
+ } else {
+ has_skipped_forms = true;
+ }
+ }
+
+ // Return true if there are any WebFormElements skipped, else false.
+ return has_skipped_forms;
}
void FormCache::ResetFrame(const WebFrame& frame) {
@@ -158,7 +175,6 @@
web_documents_.erase(*it);
}
- parsed_forms_[&frame].clear();
RemoveOldElements(frame, &initial_select_values_);
RemoveOldElements(frame, &initial_checked_state_);
}
« no previous file with comments | « components/autofill/content/renderer/form_cache.h ('k') | components/autofill/core/browser/autofill_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698