Chromium Code Reviews| 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 b7e391748fd6ad4680d62fdfab9bd244d379aaf0..a525d518784d5bb950cd5ca59d4392d4d80f3d53 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), |
|
Ilya Sherman
2013/05/13 23:44:47
nit: Indent each of these three two more spaces.
Cait (Slow)
2013/05/14 22:30:08
Done.
|
| + on_changed_(on_changed) { |
| + } |
|
Ilya Sherman
2013/05/13 23:44:47
nit: De-indent this line two spaces, or move it to
Cait (Slow)
2013/05/14 22:30:08
Done.
|
| + |
| + 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 RemoveExpiredFormElementsWrapper() 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( |
| + &AutofillWebDataService::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,14 @@ 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::CreateForWebDataService(this, backend_.get()); |
| + AutofillProfileSyncableService::CreateForWebDataService( |
| + this, backend_.get(), "en-US"); |
| autocomplete_syncable_service_ = |
| AutocompleteSyncableService::FromWebDataService(this); |
| @@ -281,12 +315,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_; |