diff options
author | ramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-04 05:37:02 +0000 |
---|---|---|
committer | ramankk@chromium.org <ramankk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-04 05:37:02 +0000 |
commit | 14696913ff86cfbc533bc0db15a134c1627a2d58 (patch) | |
tree | ba5013a3d9403094c35dc49185068ffeb8812394 /chrome/renderer/autofill/form_cache.cc | |
parent | fc652c0df8646b9485d0bfb671b84771ef3279d1 (diff) | |
download | chromium_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.cc | 17 |
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); + } } } |