diff options
Diffstat (limited to 'chrome/browser/webdata/web_data_service.cc')
-rw-r--r-- | chrome/browser/webdata/web_data_service.cc | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/chrome/browser/webdata/web_data_service.cc b/chrome/browser/webdata/web_data_service.cc index fd0e60a..002977c 100644 --- a/chrome/browser/webdata/web_data_service.cc +++ b/chrome/browser/webdata/web_data_service.cc @@ -13,6 +13,7 @@ #include "chrome/browser/template_url.h" #include "chrome/common/chrome_constants.h" #include "webkit/glue/password_form.h" +#include "webkit/glue/autofill_form.h" //////////////////////////////////////////////////////////////////////////////// // @@ -114,6 +115,33 @@ void WebDataService::CancelRequest(Handle h) { i->second->Cancel(); } +void WebDataService::AddAutofillFormElements( + const std::vector<AutofillForm::Element>& element) { + GenericRequest<std::vector<AutofillForm::Element> >* request = + new GenericRequest<std::vector<AutofillForm::Element> >( + this, GetNextRequestHandle(), NULL, element); + RegisterRequest(request); + ScheduleTask(NewRunnableMethod(this, + &WebDataService::AddAutofillFormElementsImpl, + request)); +} + +WebDataService::Handle WebDataService::GetFormValuesForElementName( + const std::wstring& name, const std::wstring& prefix, int limit, + WebDataServiceConsumer* consumer) { + WebDataRequest* request = + new WebDataRequest(this, GetNextRequestHandle(), consumer); + RegisterRequest(request); + ScheduleTask( + NewRunnableMethod(this, + &WebDataService::GetFormValuesForElementNameImpl, + request, + name, + prefix, + limit)); + return request->GetHandle(); +} + void WebDataService::RequestCompleted(Handle h) { pending_lock_.Acquire(); RequestMap::iterator i = pending_requests_.find(h); @@ -562,6 +590,33 @@ void WebDataService::GetAllLoginsImpl(WebDataRequest* request) { //////////////////////////////////////////////////////////////////////////////// // +// Autofill support. +// +//////////////////////////////////////////////////////////////////////////////// + +void WebDataService::AddAutofillFormElementsImpl( + GenericRequest<std::vector<AutofillForm::Element> >* request) { + if (db_ && !request->IsCancelled()) { + if (db_->AddAutofillFormElements(request->GetArgument())) + ScheduleCommit(); + } + request->RequestComplete(); +} + +void WebDataService::GetFormValuesForElementNameImpl(WebDataRequest* request, + const std::wstring& name, const std::wstring& prefix, int limit) { + if (db_ && !request->IsCancelled()) { + std::vector<std::wstring> values; + db_->GetFormValuesForElementName(name, prefix, &values, limit); + request->SetResult( + new WDResult<std::vector<std::wstring> >(AUTOFILL_VALUE_RESULT, + values)); + } + request->RequestComplete(); +} + +//////////////////////////////////////////////////////////////////////////////// +// // Web Apps implementation. // //////////////////////////////////////////////////////////////////////////////// |