Index: components/autofill/browser/webdata/autofill_webdata_backend.h |
diff --git a/components/autofill/browser/webdata/autofill_webdata_service.h b/components/autofill/browser/webdata/autofill_webdata_backend.h |
similarity index 20% |
copy from components/autofill/browser/webdata/autofill_webdata_service.h |
copy to components/autofill/browser/webdata/autofill_webdata_backend.h |
index bfa9d5843abdf22e6f3dc8efc71ce309e5f5003a..b1ab6d63b089552b6c7f2106f0384181589e0374 100644 |
--- a/components/autofill/browser/webdata/autofill_webdata_service.h |
+++ b/components/autofill/browser/webdata/autofill_webdata_backend.h |
@@ -1,15 +1,12 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Copyright 2013 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 COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ |
-#define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ |
- |
-#include <vector> |
+#ifndef COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_ |
+#define COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_ |
#include "base/memory/ref_counted.h" |
#include "base/observer_list.h" |
-#include "base/supports_user_data.h" |
#include "components/autofill/browser/webdata/autofill_webdata.h" |
#include "components/autofill/common/form_field_data.h" |
#include "components/webdata/common/web_data_results.h" |
@@ -17,149 +14,115 @@ |
#include "components/webdata/common/web_data_service_consumer.h" |
#include "components/webdata/common/web_database.h" |
-class WebDatabaseService; |
- |
-namespace content { |
-class BrowserContext; |
-} |
- |
namespace autofill { |
class AutofillChange; |
class AutofillProfile; |
class AutofillWebDataServiceObserverOnDBThread; |
-class AutofillWebDataServiceObserverOnUIThread; |
class CreditCard; |
-// API for Autofill web data. |
-class AutofillWebDataService : public AutofillWebData, |
- public WebDataServiceBase { |
+// Backend implentation for the AutofillWebDataService. This class runs on the |
+// DB thread, as it handles reads and writes to the WebDatabase, and functions |
+// in it should only be called from that thread. Most functions here are just |
+// the implementations of the corresponding functions in the Autofill |
+// WebDataService. |
+class AutofillWebDataBackend |
+ : public base::RefCountedThreadSafe<AutofillWebDataBackend, |
+ content::BrowserThread::DeleteOnDBThread> { |
public: |
- AutofillWebDataService(); |
- |
- AutofillWebDataService(scoped_refptr<WebDatabaseService> wdbs, |
- const ProfileErrorCallback& callback); |
- |
- // Retrieve an AutofillWebDataService for the given context. |
- // Can return NULL in some contexts. |
- static scoped_refptr<AutofillWebDataService> FromBrowserContext( |
- content::BrowserContext* context); |
- |
- // Notifies listeners on the UI thread that multiple changes have been made to |
- // to Autofill records of the database. |
- // NOTE: This method is intended to be called from the DB thread. It |
- // it asynchronously notifies listeners on the UI thread. |
- // |web_data_service| may be NULL for testing purposes. |
- static void NotifyOfMultipleAutofillChanges( |
- AutofillWebDataService* web_data_service); |
- |
- // WebDataServiceBase implementation. |
- virtual void ShutdownOnUIThread() OVERRIDE; |
- |
- // AutofillWebData implementation. |
- virtual void AddFormFields( |
- const std::vector<FormFieldData>& fields) OVERRIDE; |
- virtual WebDataServiceBase::Handle GetFormValuesForElementName( |
+ AutofillWebDataBackend(); |
+ |
+ // Adds form fields to the web database. |
+ WebDatabase::State AddFormElements(const std::vector<FormFieldData>& fields, |
+ WebDatabase* db); |
+ |
+ // Returns a vector of values which have been entered in form input fields |
+ // named |name|. |
+ scoped_ptr<WDTypedResult> GetFormValuesForElementName( |
const base::string16& name, |
const base::string16& prefix, |
int limit, |
- WebDataServiceConsumer* consumer) OVERRIDE; |
- virtual void RemoveFormElementsAddedBetween( |
- const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE; |
- virtual void RemoveExpiredFormElements() OVERRIDE; |
- virtual void RemoveFormValueForElementName( |
- const base::string16& name, |
- const base::string16& value) OVERRIDE; |
- virtual void AddAutofillProfile(const AutofillProfile& profile) OVERRIDE; |
- virtual void UpdateAutofillProfile(const AutofillProfile& profile) OVERRIDE; |
- virtual void RemoveAutofillProfile(const std::string& guid) OVERRIDE; |
- virtual WebDataServiceBase::Handle GetAutofillProfiles( |
- WebDataServiceConsumer* consumer) OVERRIDE; |
- virtual void AddCreditCard(const CreditCard& credit_card) OVERRIDE; |
- virtual void UpdateCreditCard(const CreditCard& credit_card) OVERRIDE; |
- virtual void RemoveCreditCard(const std::string& guid) OVERRIDE; |
- virtual WebDataServiceBase::Handle GetCreditCards( |
- WebDataServiceConsumer* consumer) OVERRIDE; |
- virtual void RemoveAutofillDataModifiedBetween( |
- const base::Time& delete_begin, const base::Time& delete_end) OVERRIDE; |
+ WebDatabase* db); |
- void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
- void RemoveObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
+ // Removes form elements recorded for Autocomplete from the database. |
+ WebDatabase::State RemoveFormElementsAddedBetween( |
+ const base::Time& delete_begin, |
+ const base::Time& delete_end, |
+ WebDatabase* db); |
- void AddObserver(AutofillWebDataServiceObserverOnUIThread* observer); |
- void RemoveObserver(AutofillWebDataServiceObserverOnUIThread* observer); |
+ // Removes expired form elements recorded for Autocomplete from the database. |
+ WebDatabase::State RemoveExpiredFormElements(WebDatabase* db); |
- // Returns a SupportsUserData objects that may be used to store data |
- // owned by the DB thread on this object. Should be called only from |
- // the DB thread, and will be destroyed on the DB thread soon after |
- // |ShutdownOnUIThread()| is called. |
- base::SupportsUserData* GetDBUserData(); |
+ // Removes the Form-value |value| which has been entered in form input fields |
+ // named |name| from the database. |
+ WebDatabase::State RemoveFormValueForElementName(const base::string16& name, |
+ const base::string16& value, |
+ WebDatabase* db); |
- protected: |
- virtual ~AutofillWebDataService(); |
+ // Adds an Autofill profile to the web database. |
+ WebDatabase::State AddAutofillProfile(const AutofillProfile& profile, |
+ WebDatabase* db); |
- virtual void ShutdownOnDBThread(); |
+ // Updates an Autofill profile in the web database. |
+ WebDatabase::State UpdateAutofillProfile(const AutofillProfile& profile, |
+ WebDatabase* db); |
- private: |
- WebDatabase::State AddFormElementsImpl( |
- const std::vector<FormFieldData>& fields, WebDatabase* db); |
- scoped_ptr<WDTypedResult> GetFormValuesForElementNameImpl( |
- const base::string16& name, const base::string16& prefix, int limit, |
- WebDatabase* db); |
- WebDatabase::State RemoveFormElementsAddedBetweenImpl( |
- const base::Time& delete_begin, const base::Time& delete_end, |
- WebDatabase* db); |
- WebDatabase::State RemoveExpiredFormElementsImpl(WebDatabase* db); |
- WebDatabase::State RemoveFormValueForElementNameImpl( |
- const base::string16& name, const base::string16& value, WebDatabase* db); |
- WebDatabase::State AddAutofillProfileImpl( |
- const AutofillProfile& profile, WebDatabase* db); |
- WebDatabase::State UpdateAutofillProfileImpl( |
- const AutofillProfile& profile, WebDatabase* db); |
- WebDatabase::State RemoveAutofillProfileImpl( |
- const std::string& guid, WebDatabase* db); |
- scoped_ptr<WDTypedResult> GetAutofillProfilesImpl(WebDatabase* db); |
- WebDatabase::State AddCreditCardImpl( |
- const CreditCard& credit_card, WebDatabase* db); |
- WebDatabase::State UpdateCreditCardImpl( |
- const CreditCard& credit_card, WebDatabase* db); |
- WebDatabase::State RemoveCreditCardImpl( |
- const std::string& guid, WebDatabase* db); |
- scoped_ptr<WDTypedResult> GetCreditCardsImpl(WebDatabase* db); |
- WebDatabase::State RemoveAutofillDataModifiedBetweenImpl( |
- const base::Time& delete_begin, const base::Time& delete_end, |
+ // Removes an Autofill profile from the web database. |
+ WebDatabase::State RemoveAutofillProfile(const std::string& guid, |
+ WebDatabase* db); |
+ |
+ // Returns all Autofill profiles from the web database. |
+ scoped_ptr<WDTypedResult> GetAutofillProfiles(WebDatabase* db); |
+ |
+ // Adds a credit card to the web database. |
+ WebDatabase::State AddCreditCard(const CreditCard& credit_card, |
+ WebDatabase* db); |
+ |
+ // Updates a credit card in the web database. |
+ WebDatabase::State UpdateCreditCard(const CreditCard& credit_card, |
+ WebDatabase* db); |
+ |
+ // Removes a credit card from the web database. |
+ WebDatabase::State RemoveCreditCard(const std::string& guid, |
+ WebDatabase* db); |
+ |
+ // Returns a vector of all credit cards from the web database. |
+ scoped_ptr<WDTypedResult> GetCreditCards(WebDatabase* db); |
+ |
+ // Removes Autofill records from the database. |
+ WebDatabase::State RemoveAutofillDataModifiedBetween( |
+ const base::Time& delete_begin, |
+ const base::Time& delete_end, |
WebDatabase* db); |
+ // Add an observer to be notified of changes on the DB thread. |
+ void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
+ |
+ // Remove an observer. |
+ void RemoveObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
+ |
+ protected: |
+ virtual ~AutofillWebDataBackend(); |
+ |
+ private: |
+ friend struct content::BrowserThread::DeleteOnThread< |
+ content::BrowserThread::DB>; |
+ friend class base::DeleteHelper<AutofillWebDataBackend>; |
+ // We have to friend RCTS<> so WIN shared-lib build is happy |
+ // (http://crbug/112250). |
+ friend class base::RefCountedThreadSafe<AutofillWebDataBackend, |
+ content::BrowserThread::DeleteOnDBThread>; |
+ |
// Callbacks to ensure that sensitive info is destroyed if request is |
// cancelled. |
void DestroyAutofillProfileResult(const WDTypedResult* result); |
void DestroyAutofillCreditCardResult(const WDTypedResult* result); |
- void NotifyAutofillMultipleChangedOnUIThread(); |
- |
- // This makes the destructor public, and thus allows us to aggregate |
- // SupportsUserData. It is private by default to prevent incorrect |
- // usage in class hierarchies where it is inherited by |
- // reference-counted objects. |
- class SupportsUserDataAggregatable : public base::SupportsUserData { |
- public: |
- SupportsUserDataAggregatable() {} |
- virtual ~SupportsUserDataAggregatable() {} |
- private: |
- DISALLOW_COPY_AND_ASSIGN(SupportsUserDataAggregatable); |
- }; |
- |
- // Storage for user data to be accessed only on the DB thread. May |
- // be used e.g. for SyncableService subclasses that need to be owned |
- // by this object. Is created on first call to |GetDBUserData()|. |
- scoped_ptr<SupportsUserDataAggregatable> db_thread_user_data_; |
- |
ObserverList<AutofillWebDataServiceObserverOnDBThread> db_observer_list_; |
- ObserverList<AutofillWebDataServiceObserverOnUIThread> ui_observer_list_; |
- DISALLOW_COPY_AND_ASSIGN(AutofillWebDataService); |
+ DISALLOW_COPY_AND_ASSIGN(AutofillWebDataBackend); |
}; |
} // namespace autofill |
-#endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_SERVICE_H_ |
+#endif // COMPONENTS_AUTOFILL_BROWSER_WEBDATA_AUTOFILL_WEBDATA_BACKEND_H_ |