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 383c25f0a7970fce44d7be9b0f33c5f2824ef2a0..31e1895b47cc86d0a1f08a6766d9b50dd0aee403 100644 |
--- a/chrome/browser/sync/profile_sync_service_autofill_unittest.cc |
+++ b/chrome/browser/sync/profile_sync_service_autofill_unittest.cc |
@@ -144,6 +144,32 @@ class WebDatabaseFake : public WebDatabase { |
} |
}; |
+class MockAutofillBackend : public autofill::AutofillWebDataBackend { |
+ public: |
+ MockAutofillBackend( |
+ WebDatabase* web_database, |
+ const base::Closure& on_changed) |
+ : web_database_(web_database), |
+ on_changed_(on_changed) { |
+ } |
+ |
+ virtual ~MockAutofillBackend() {} |
+ virtual WebDatabase* GetDatabase() OVERRIDE { return web_database_; } |
+ virtual void AddObserver( |
+ autofill::AutofillWebDataServiceObserverOnDBThread* observer) OVERRIDE {} |
+ virtual void RemoveObserver( |
+ autofill::AutofillWebDataServiceObserverOnDBThread* observer) OVERRIDE {} |
+ virtual void RemoveExpiredFormElements() OVERRIDE {} |
+ virtual void NotifyOfMultipleAutofillChanges() OVERRIDE { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, on_changed_); |
+ } |
+ |
+ private: |
+ WebDatabase* web_database_; |
+ base::Closure on_changed_; |
+}; |
+ |
class ProfileSyncServiceAutofillTest; |
template<class AutofillProfile> |
@@ -206,9 +232,14 @@ class WebDataServiceFake : public AutofillWebDataService { |
void StartSyncableService() { |
// The |autofill_profile_syncable_service_| must be constructed on the DB |
// thread. |
+ const base::Closure& on_changed_callback = base::Bind( |
+ &WebDataServiceFake::NotifyAutofillMultipleChangedOnUIThread, |
+ AsWeakPtr()); |
+ |
BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, |
base::Bind(&WebDataServiceFake::CreateSyncableService, |
- base::Unretained(this))); |
+ base::Unretained(this), |
+ on_changed_callback)); |
syncable_service_created_or_destroyed_.Wait(); |
} |
@@ -262,11 +293,15 @@ class WebDataServiceFake : public AutofillWebDataService { |
private: |
virtual ~WebDataServiceFake() {} |
- void CreateSyncableService() { |
+ void CreateSyncableService(const base::Closure& on_changed_callback) { |
ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
// These services are deleted in DestroySyncableService(). |
- AutocompleteSyncableService::CreateForWebDataService(this); |
- AutofillProfileSyncableService::CreateForWebDataService(this, "en-US"); |
+ backend_.reset(new MockAutofillBackend( |
+ GetDatabase(), on_changed_callback)); |
+ AutocompleteSyncableService::CreateForWebDataServiceAndBackend( |
+ this, backend_.get()); |
+ AutofillProfileSyncableService::CreateForWebDataServiceAndBackend( |
+ this, backend_.get(), "en-US"); |
autocomplete_syncable_service_ = |
AutocompleteSyncableService::FromWebDataService(this); |
@@ -281,12 +316,14 @@ class WebDataServiceFake : public AutofillWebDataService { |
AutofillWebDataService::ShutdownOnDBThread(); |
autocomplete_syncable_service_ = NULL; |
autofill_profile_syncable_service_ = NULL; |
+ backend_.reset(); |
syncable_service_created_or_destroyed_.Signal(); |
} |
WebDatabase* web_database_; |
AutocompleteSyncableService* autocomplete_syncable_service_; |
AutofillProfileSyncableService* autofill_profile_syncable_service_; |
+ scoped_ptr<autofill::AutofillWebDataBackend> backend_; |
WaitableEvent syncable_service_created_or_destroyed_; |