| 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 217f2651e9c105d7b24d829160564ef98e3b3521..c2a5550c6ba76949c7a3abce54882588c4e98591 100644
|
| --- a/components/autofill/browser/webdata/autofill_webdata_service.cc
|
| +++ b/components/autofill/browser/webdata/autofill_webdata_service.cc
|
| @@ -15,6 +15,7 @@
|
| #include "components/autofill/browser/webdata/autofill_webdata_backend.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 AutofillWebDataBackend(
|
| + wdbs_->GetBackend(),
|
| + on_changed_callback);
|
| }
|
|
|
| AutofillWebDataService::AutofillWebDataService()
|
| : WebDataServiceBase(NULL,
|
| WebDataServiceBase::ProfileErrorCallback()),
|
| - autofill_backend_(new AutofillWebDataBackend()) {
|
| + weak_ptr_factory_(this),
|
| + autofill_backend_(new AutofillWebDataBackend(NULL, base::Closure())) {
|
| }
|
|
|
| void AutofillWebDataService::ShutdownOnUIThread() {
|
| + weak_ptr_factory_.InvalidateWeakPtrs();
|
| BrowserThread::PostTask(
|
| BrowserThread::DB, FROM_HERE,
|
| base::Bind(&AutofillWebDataService::ShutdownOnDBThread, this));
|
| @@ -190,6 +202,13 @@ base::SupportsUserData* AutofillWebDataService::GetDBUserData() {
|
| return db_thread_user_data_.get();
|
| }
|
|
|
| +void AutofillWebDataService::GetSyncableBackend(
|
| + const base::Callback<void(SyncableServiceBackend*)>& 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();
|
|
|