diff options
author | Ben Murdoch <benm@google.com> | 2011-01-07 16:04:47 +0000 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-01-11 15:04:36 +0000 |
commit | d647e7c2e5ceee4dbcef5eee5c723cbdbed719d0 (patch) | |
tree | 49f75cb1fafd62f4be4ae593b03d89d5f2d200ee /WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp | |
parent | 6eef37161f9d4fde23b1b87a5bb26dfcf1a55c8c (diff) | |
download | external_webkit-d647e7c2e5ceee4dbcef5eee5c723cbdbed719d0.zip external_webkit-d647e7c2e5ceee4dbcef5eee5c723cbdbed719d0.tar.gz external_webkit-d647e7c2e5ceee4dbcef5eee5c723cbdbed719d0.tar.bz2 |
Merge Chromium at 9.0.597.55: Merge 67599. (2/2)
This needed a bit of work so I've split into two commits.
This is part 2, where we now need to pass both the field that
was focussed and the form it belongs to. To achieve this I have
a new class that encapsulates the pointers.
Change-Id: Iea1a5a55696c63255bcc57b070116409a2195f4c
Diffstat (limited to 'WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp')
-rw-r--r-- | WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp b/WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp index a844f55..b8afbe9 100644 --- a/WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp +++ b/WebKit/android/WebCoreSupport/autofill/WebAutoFill.cpp @@ -48,7 +48,6 @@ namespace android { - WebAutoFill::WebAutoFill() : mQueryId(1) , mWebViewCore(0) @@ -74,10 +73,17 @@ void WebAutoFill::init() WebAutoFill::~WebAutoFill() { - mQueryMap.clear(); + cleanUpQueryMap(); mUniqueIdMap.clear(); } +void WebAutoFill::cleanUpQueryMap() +{ + for (AutoFillQueryFormDataMap::iterator it = mQueryMap.begin(); it != mQueryMap.end(); it++) + delete it->second; + mQueryMap.clear(); +} + void WebAutoFill::searchDocument(WebCore::Frame* frame) { if (!enabled()) @@ -85,7 +91,7 @@ void WebAutoFill::searchDocument(WebCore::Frame* frame) init(); - mQueryMap.clear(); + cleanUpQueryMap(); mUniqueIdMap.clear(); mForms.clear(); mQueryId = 1; @@ -133,15 +139,15 @@ void WebAutoFill::formFieldFocused(WebCore::HTMLFormControlElement* formFieldEle } // Get the FormField from the Node. - webkit_glue::FormField formField; - FormManager::HTMLFormControlElementToFormField(formFieldElement, FormManager::EXTRACT_NONE, &formField); - formField.set_label(FormManager::LabelForElement(*formFieldElement)); + webkit_glue::FormField* formField = new webkit_glue::FormField; + FormManager::HTMLFormControlElementToFormField(formFieldElement, FormManager::EXTRACT_NONE, formField); + formField->set_label(FormManager::LabelForElement(*formFieldElement)); webkit_glue::FormData* form = new webkit_glue::FormData; mFormManager->FindFormWithFormControlElement(formFieldElement, FormManager::REQUIRE_AUTOCOMPLETE, form); - mQueryMap[mQueryId] = form; + mQueryMap[mQueryId] = new FormDataAndField(form, formField); - bool suggestions = mAutoFillManager->GetAutoFillSuggestions(false, formField); + bool suggestions = mAutoFillManager->GetAutoFillSuggestions(*form, *formField); mQueryId++; if (!suggestions) { ASSERT(mWebViewCore); @@ -169,8 +175,11 @@ void WebAutoFill::fillFormFields(int queryId) if (!enabled()) return; - webkit_glue::FormData* form = mQueryMap[queryId]; + webkit_glue::FormData* form = mQueryMap[queryId]->form(); + webkit_glue::FormField* field = mQueryMap[queryId]->field(); ASSERT(form); + ASSERT(field); + AutoFillQueryToUniqueIdMap::iterator iter = mUniqueIdMap.find(queryId); if (iter == mUniqueIdMap.end()) { // The user has most likely tried to AutoFill the form again without @@ -178,7 +187,7 @@ void WebAutoFill::fillFormFields(int queryId) // but stop here to be certain. return; } - mAutoFillManager->FillAutoFillFormData(queryId, *form, iter->second); + mAutoFillManager->FillAutoFillFormData(queryId, *form, *field, iter->second); mUniqueIdMap.erase(iter); } |