| Index: components/autofill/browser/webdata/autofill_webdata_service.cc
|
| diff --git a/components/autofill/browser/webdata/autofill_webdata_service.cc b/components/autofill/browser/webdata/autofill_webdata_service.cc
|
| index 1f7e158fe8421f8738099369d84ca7e427f80304..b965b197e27966dd59d17c49b5ce28f530ddeee4 100644
|
| --- a/components/autofill/browser/webdata/autofill_webdata_service.cc
|
| +++ b/components/autofill/browser/webdata/autofill_webdata_service.cc
|
| @@ -12,9 +12,10 @@
|
| #include "components/autofill/browser/webdata/autofill_change.h"
|
| #include "components/autofill/browser/webdata/autofill_entry.h"
|
| #include "components/autofill/browser/webdata/autofill_table.h"
|
| -#include "components/autofill/browser/webdata/autofill_webdata_backend.h"
|
| +#include "components/autofill/browser/webdata/autofill_webdata_backend_impl.h"
|
| #include "components/autofill/browser/webdata/autofill_webdata_service_observer.h"
|
| #include "components/autofill/common/form_field_data.h"
|
| +#include "components/webdata/common/web_data_service_backend.h"
|
| #include "components/webdata/common/web_database_service.h"
|
|
|
| using base::Bind;
|
| @@ -41,16 +42,27 @@ AutofillWebDataService::AutofillWebDataService(
|
| scoped_refptr<WebDatabaseService> wdbs,
|
| const ProfileErrorCallback& callback)
|
| : WebDataServiceBase(wdbs, callback),
|
| - autofill_backend_(new AutofillWebDataBackend()) {
|
| + weak_ptr_factory_(this),
|
| + autofill_backend_(NULL) {
|
| +
|
| + base::Closure on_changed_callback = Bind(
|
| + &AutofillWebDataService::NotifyAutofillMultipleChangedOnUIThread,
|
| + weak_ptr_factory_.GetWeakPtr());
|
| +
|
| + autofill_backend_ = new AutofillWebDataBackendImpl(
|
| + wdbs_->GetBackend(),
|
| + on_changed_callback);
|
| }
|
|
|
| AutofillWebDataService::AutofillWebDataService()
|
| : WebDataServiceBase(NULL,
|
| WebDataServiceBase::ProfileErrorCallback()),
|
| - autofill_backend_(new AutofillWebDataBackend()) {
|
| + weak_ptr_factory_(this),
|
| + autofill_backend_(new AutofillWebDataBackendImpl(NULL, base::Closure())) {
|
| }
|
|
|
| void AutofillWebDataService::ShutdownOnUIThread() {
|
| + weak_ptr_factory_.InvalidateWeakPtrs();
|
| BrowserThread::PostTask(
|
| BrowserThread::DB, FROM_HERE,
|
| base::Bind(&AutofillWebDataService::ShutdownOnDBThread, this));
|
| @@ -60,7 +72,7 @@ void AutofillWebDataService::ShutdownOnUIThread() {
|
| void AutofillWebDataService::AddFormFields(
|
| const std::vector<FormFieldData>& fields) {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::AddFormElements,
|
| + Bind(&AutofillWebDataBackendImpl::AddFormElements,
|
| autofill_backend_, fields));
|
| }
|
|
|
| @@ -68,69 +80,69 @@ WebDataServiceBase::Handle AutofillWebDataService::GetFormValuesForElementName(
|
| const base::string16& name, const base::string16& prefix, int limit,
|
| WebDataServiceConsumer* consumer) {
|
| return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::GetFormValuesForElementName,
|
| + Bind(&AutofillWebDataBackendImpl::GetFormValuesForElementName,
|
| autofill_backend_, name, prefix, limit), consumer);
|
| }
|
|
|
| WebDataServiceBase::Handle AutofillWebDataService::HasFormElements(
|
| WebDataServiceConsumer* consumer) {
|
| return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::HasFormElements, autofill_backend_),
|
| + Bind(&AutofillWebDataBackendImpl::HasFormElements, autofill_backend_),
|
| consumer);
|
| }
|
|
|
| void AutofillWebDataService::RemoveFormElementsAddedBetween(
|
| const Time& delete_begin, const Time& delete_end) {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::RemoveFormElementsAddedBetween,
|
| + Bind(&AutofillWebDataBackendImpl::RemoveFormElementsAddedBetween,
|
| autofill_backend_, delete_begin, delete_end));
|
| }
|
|
|
| void AutofillWebDataService::RemoveExpiredFormElements() {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::RemoveExpiredFormElements,
|
| + Bind(&AutofillWebDataBackendImpl::RemoveExpiredFormElements,
|
| autofill_backend_));
|
| }
|
|
|
| void AutofillWebDataService::RemoveFormValueForElementName(
|
| const base::string16& name, const base::string16& value) {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::RemoveFormValueForElementName,
|
| + Bind(&AutofillWebDataBackendImpl::RemoveFormValueForElementName,
|
| autofill_backend_, name, value));
|
| }
|
|
|
| void AutofillWebDataService::AddAutofillProfile(
|
| const AutofillProfile& profile) {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::AddAutofillProfile,
|
| + Bind(&AutofillWebDataBackendImpl::AddAutofillProfile,
|
| autofill_backend_, profile));
|
| }
|
|
|
| void AutofillWebDataService::UpdateAutofillProfile(
|
| const AutofillProfile& profile) {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::UpdateAutofillProfile,
|
| + Bind(&AutofillWebDataBackendImpl::UpdateAutofillProfile,
|
| autofill_backend_, profile));
|
| }
|
|
|
| void AutofillWebDataService::RemoveAutofillProfile(
|
| const std::string& guid) {
|
| wdbs_->ScheduleDBTask(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::RemoveAutofillProfile,
|
| + Bind(&AutofillWebDataBackendImpl::RemoveAutofillProfile,
|
| autofill_backend_, guid));
|
| }
|
|
|
| WebDataServiceBase::Handle AutofillWebDataService::GetAutofillProfiles(
|
| WebDataServiceConsumer* consumer) {
|
| return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::GetAutofillProfiles, autofill_backend_),
|
| + Bind(&AutofillWebDataBackendImpl::GetAutofillProfiles, autofill_backend_),
|
| consumer);
|
| }
|
|
|
| void AutofillWebDataService::AddCreditCard(const CreditCard& credit_card) {
|
| wdbs_->ScheduleDBTask(
|
| FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::AddCreditCard,
|
| + Bind(&AutofillWebDataBackendImpl::AddCreditCard,
|
| autofill_backend_, credit_card));
|
| }
|
|
|
| @@ -138,20 +150,21 @@ void AutofillWebDataService::UpdateCreditCard(
|
| const CreditCard& credit_card) {
|
| wdbs_->ScheduleDBTask(
|
| FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::UpdateCreditCard,
|
| + Bind(&AutofillWebDataBackendImpl::UpdateCreditCard,
|
| autofill_backend_, credit_card));
|
| }
|
|
|
| void AutofillWebDataService::RemoveCreditCard(const std::string& guid) {
|
| wdbs_->ScheduleDBTask(
|
| FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::RemoveCreditCard, autofill_backend_, guid));
|
| + Bind(&AutofillWebDataBackendImpl::RemoveCreditCard,
|
| + autofill_backend_, guid));
|
| }
|
|
|
| WebDataServiceBase::Handle AutofillWebDataService::GetCreditCards(
|
| WebDataServiceConsumer* consumer) {
|
| return wdbs_->ScheduleDBTaskWithResult(FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::GetCreditCards, autofill_backend_),
|
| + Bind(&AutofillWebDataBackendImpl::GetCreditCards, autofill_backend_),
|
| consumer);
|
| }
|
|
|
| @@ -160,7 +173,7 @@ void AutofillWebDataService::RemoveAutofillDataModifiedBetween(
|
| const Time& delete_end) {
|
| wdbs_->ScheduleDBTask(
|
| FROM_HERE,
|
| - Bind(&AutofillWebDataBackend::RemoveAutofillDataModifiedBetween,
|
| + Bind(&AutofillWebDataBackendImpl::RemoveAutofillDataModifiedBetween,
|
| autofill_backend_, delete_begin, delete_end));
|
| }
|
|
|
| @@ -197,6 +210,13 @@ base::SupportsUserData* AutofillWebDataService::GetDBUserData() {
|
| return db_thread_user_data_.get();
|
| }
|
|
|
| +void AutofillWebDataService::GetAutofillBackend(
|
| + const base::Callback<void(AutofillWebDataBackend*)>& callback) {
|
| + BrowserThread::PostTask(BrowserThread::DB,
|
| + FROM_HERE,
|
| + base::Bind(callback, autofill_backend_));
|
| +}
|
| +
|
| void AutofillWebDataService::ShutdownOnDBThread() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| db_thread_user_data_.reset();
|
|
|