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. |