diff options
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); } |