summaryrefslogtreecommitdiffstats
path: root/chrome/browser/webdata/web_data_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/webdata/web_data_service.cc')
-rw-r--r--chrome/browser/webdata/web_data_service.cc55
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.
//
////////////////////////////////////////////////////////////////////////////////