summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/autofill/form_cache.cc
diff options
context:
space:
mode:
authorramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-04 05:37:02 +0000
committerramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-04 05:37:02 +0000
commit14696913ff86cfbc533bc0db15a134c1627a2d58 (patch)
treeba5013a3d9403094c35dc49185068ffeb8812394 /chrome/renderer/autofill/form_cache.cc
parentfc652c0df8646b9485d0bfb671b84771ef3279d1 (diff)
downloadchromium_src-14696913ff86cfbc533bc0db15a134c1627a2d58.zip
chromium_src-14696913ff86cfbc533bc0db15a134c1627a2d58.tar.gz
chromium_src-14696913ff86cfbc533bc0db15a134c1627a2d58.tar.bz2
Renderer side changes to save the user supplied data and use it to autofill in multiple page in the flow. Primarily being used by Autocheckout. This is achived by
* Saving the context of all form elements in the top most frame seen * Using filled form data from browser to fill form elements earlier seen BUG=172632 Review URL: https://chromiumcodereview.appspot.com/12087122 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180352 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/autofill/form_cache.cc')
-rw-r--r--chrome/renderer/autofill/form_cache.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/chrome/renderer/autofill/form_cache.cc b/chrome/renderer/autofill/form_cache.cc
index ea92a42..d5f1381 100644
--- a/chrome/renderer/autofill/form_cache.cc
+++ b/chrome/renderer/autofill/form_cache.cc
@@ -77,6 +77,13 @@ FormCache::~FormCache() {
void FormCache::ExtractForms(const WebFrame& frame,
std::vector<FormData>* forms) {
+ ExtractFormsAndFormElements(frame, forms, NULL);
+}
+
+void FormCache::ExtractFormsAndFormElements(
+ const WebFrame& frame,
+ std::vector<FormData>* forms,
+ std::vector<WebFormElement>* web_form_elements) {
// Reset the cache for this frame.
ResetFrame(frame);
@@ -122,8 +129,11 @@ void FormCache::ExtractForms(const WebFrame& frame,
continue;
FormData form;
+ ExtractMask extract_mask =
+ static_cast<ExtractMask>(EXTRACT_VALUE | EXTRACT_OPTIONS);
+
if (!WebFormElementToFormData(form_element, WebFormControlElement(),
- REQUIRE_NONE, EXTRACT_VALUE, &form, NULL)) {
+ REQUIRE_NONE, extract_mask, &form, NULL)) {
continue;
}
@@ -131,8 +141,11 @@ void FormCache::ExtractForms(const WebFrame& frame,
if (num_fields_seen > kMaxParseableFields)
break;
- if (form.fields.size() >= kRequiredAutofillFields)
+ if (form.fields.size() >= kRequiredAutofillFields) {
forms->push_back(form);
+ if (web_form_elements)
+ web_form_elements->push_back(form_element);
+ }
}
}