Chromium Code Reviews| 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 19% |
| copy from components/autofill/browser/webdata/autofill_webdata_service.h |
| copy to components/autofill/browser/webdata/autofill_webdata_backend.h |
| index bfa9d5843abdf22e6f3dc8efc71ce309e5f5003a..5d7a06bfc1b366816b8d47e7511b7ea25330834c 100644 |
| --- a/components/autofill/browser/webdata/autofill_webdata_service.h |
| +++ b/components/autofill/browser/webdata/autofill_webdata_backend.h |
| @@ -1,15 +1,8 @@ |
| -// Copyright (c) 2012 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 +10,122 @@ |
| #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); |
|
Ilya Sherman
2013/04/30 23:52:11
nit: Wrap this as
WebDatabase::State AddFormEle
Cait (Slow)
2013/05/01 23:14:20
Done.
|
| + |
| + // Returns a vector of values which have been entered in |
| + // form input fields named |name|. |
|
Ilya Sherman
2013/04/30 23:52:11
nit: Re-wrap to 80-col?
Cait (Slow)
2013/05/01 23:14:20
Done.
|
| + 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( |
| + WebDatabase* db); |
| + |
| + // Removes form elements recorded for Autocomplete from the database. |
| + WebDatabase::State RemoveFormElementsAddedBetween( |
| + const base::Time& delete_begin, |
| + const base::Time& delete_end, |
| + WebDatabase* db); |
| + |
| + // Removes expired form elements recorded for Autocomplete from the database. |
| + WebDatabase::State RemoveExpiredFormElements(WebDatabase* db); |
| + |
| + // Removes the Form-value |value| from the database. |
| + WebDatabase::State 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; |
| + const base::string16& value, |
| + WebDatabase* db); |
|
Ilya Sherman
2013/04/30 23:52:11
nit: Wrap this as
WebDatabase::State RemoveForm
Cait (Slow)
2013/05/01 23:14:20
Done.
Cait (Slow)
2013/05/01 23:14:20
Done.
|
| - void AddObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
| - void RemoveObserver(AutofillWebDataServiceObserverOnDBThread* observer); |
| + // Adds an Autofill profile to the web database. |
| + WebDatabase::State AddAutofillProfile( |
| + const AutofillProfile& profile, |
| + WebDatabase* db); |
| - void AddObserver(AutofillWebDataServiceObserverOnUIThread* observer); |
| - void RemoveObserver(AutofillWebDataServiceObserverOnUIThread* observer); |
| + // Updates an Autofill profile in the web database. |
| + WebDatabase::State UpdateAutofillProfile( |
| + const AutofillProfile& profile, |
| + 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 an Autofill profile from the web database. |
| + WebDatabase::State RemoveAutofillProfile( |
| + const std::string& guid, |
| + WebDatabase* db); |
| - protected: |
| - virtual ~AutofillWebDataService(); |
| + // Returns all Autofill profiles from the web database. |
| + scoped_ptr<WDTypedResult> GetAutofillProfiles(WebDatabase* db); |
| - virtual void ShutdownOnDBThread(); |
| + // Adds a credit card to the web database. |
| + WebDatabase::State AddCreditCard( |
| + const CreditCard& credit_card, |
| + 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, |
| + // Updates a credit card in the web database. |
| + WebDatabase::State UpdateCreditCard( |
| + const CreditCard& credit_card, |
| WebDatabase* db); |
| - WebDatabase::State RemoveFormElementsAddedBetweenImpl( |
| - const base::Time& delete_begin, const base::Time& delete_end, |
| + |
| + // Removes a credit card from the web database. |
| + WebDatabase::State RemoveCreditCard( |
| + const std::string& guid, |
| 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, |
| + |
| + // 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_ |