// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_AUTOFILL_MANAGER_H_ #define CHROME_BROWSER_AUTOFILL_MANAGER_H_ #include #include #include "chrome/browser/webdata/web_data_service.h" #include "chrome/common/pref_member.h" #include "webkit/glue/autofill_form.h" class Profile; class WebContents; // Per-tab autofill manager. Handles receiving form data from the renderer and // the storing and retrieving of form data through WebDataService. class AutofillManager : public WebDataServiceConsumer { public: explicit AutofillManager(WebContents* web_contents); virtual ~AutofillManager(); void CancelPendingQuery(); Profile* profile(); // Called when a form is submitted (i.e. when the user hits the submit button) // to store the form entries in the profile's sql database. void AutofillFormSubmitted(const AutofillForm& form); // Starts a query into the database for the values corresponding to name. // OnWebDataServiceRequestDone gets called when the query completes. void FetchValuesForName(const std::wstring& name, const std::wstring& prefix, int limit, int64 node_id, int request_id); // WebDataServiceConsumer implementation. virtual void OnWebDataServiceRequestDone(WebDataService::Handle h, const WDTypedResult* result); private: void StoreFormEntriesInWebDatabase(const AutofillForm& form); WebContents* web_contents_; BooleanPrefMember form_autofill_enabled_; // When the manager makes a request from WebDataService, the database // is queried on another thread, we record the query handle until we // get called back. WebDataService::Handle pending_query_handle_; int64 node_id_; int request_id_; DISALLOW_COPY_AND_ASSIGN(AutofillManager); }; #endif // CHROME_BROWSER_AUTOFILL_MANAGER_H_