| Index: chrome/browser/sync/profile_sync_service_autofill_unittest.cc
|
| diff --git a/chrome/browser/sync/profile_sync_service_autofill_unittest.cc b/chrome/browser/sync/profile_sync_service_autofill_unittest.cc
|
| index e89d06ec480384be3ab7695c3aefe2f1d28668a7..ca7764d04869509dfc0377e9eee5e7268b83c2cb 100644
|
| --- a/chrome/browser/sync/profile_sync_service_autofill_unittest.cc
|
| +++ b/chrome/browser/sync/profile_sync_service_autofill_unittest.cc
|
| @@ -40,9 +40,11 @@
|
| #include "chrome/browser/webdata/web_data_service_factory.h"
|
| #include "components/autofill/browser/autofill_common_test.h"
|
| #include "components/autofill/browser/personal_data_manager.h"
|
| +#include "components/autofill/browser/webdata/autofill_backend_delegate.h"
|
| #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_service.h"
|
| #include "components/webdata/common/web_data_service_test_util.h"
|
| #include "components/webdata/common/web_database.h"
|
| @@ -142,6 +144,11 @@ class WebDatabaseFake : public WebDatabase {
|
| explicit WebDatabaseFake(AutofillTable* autofill_table) {
|
| AddTable(autofill_table);
|
| }
|
| +
|
| + void DetachFromThread() {
|
| + weak_ptr_factory_.DetachFromThread();
|
| + }
|
| +
|
| };
|
|
|
| class ProfileSyncServiceAutofillTest;
|
| @@ -226,7 +233,7 @@ class WebDataServiceFake : public AutofillWebDataService {
|
| return true;
|
| }
|
|
|
| - virtual WebDatabase* GetDatabase() OVERRIDE {
|
| + WebDatabase* GetDatabase() {
|
| return web_database_;
|
| }
|
|
|
| @@ -266,8 +273,12 @@ class WebDataServiceFake : public AutofillWebDataService {
|
| void CreateSyncableService() {
|
| ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| // These services are deleted in DestroySyncableService().
|
| - AutocompleteSyncableService::CreateForWebDataService(this);
|
| - AutofillProfileSyncableService::CreateForWebDataService(this, "en-US");
|
| + delegate_.reset(new autofill::AutofillBackendDelegate(
|
| + GetDatabase()->AsWeakPtr(),
|
| + base::WeakPtr<autofill::AutofillWebDataBackend>()));
|
| + AutocompleteSyncableService::CreateForWebDataService(this, delegate_.get());
|
| + AutofillProfileSyncableService::CreateForWebDataService(
|
| + this, delegate_.get(), "en-US");
|
|
|
| autocomplete_syncable_service_ =
|
| AutocompleteSyncableService::FromWebDataService(this);
|
| @@ -282,13 +293,14 @@ class WebDataServiceFake : public AutofillWebDataService {
|
| AutofillWebDataService::ShutdownOnDBThread();
|
| autocomplete_syncable_service_ = NULL;
|
| autofill_profile_syncable_service_ = NULL;
|
| + delegate_.reset();
|
| syncable_service_created_or_destroyed_.Signal();
|
| }
|
|
|
| WebDatabase* web_database_;
|
| AutocompleteSyncableService* autocomplete_syncable_service_;
|
| AutofillProfileSyncableService* autofill_profile_syncable_service_;
|
| -
|
| + scoped_ptr<autofill::AutofillBackendDelegate> delegate_;
|
| WaitableEvent syncable_service_created_or_destroyed_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WebDataServiceFake);
|
| @@ -502,6 +514,7 @@ class ProfileSyncServiceAutofillTest
|
| profile_.get(), NULL);
|
| web_data_service_->ShutdownSyncableService();
|
| web_data_service_ = NULL;
|
| + web_database_->DetachFromThread();
|
| profile_->ResetRequestContext();
|
| // To prevent a leak, fully release TestURLRequestContext to ensure its
|
| // destruction on the IO message loop.
|
|
|