| 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 80aebd94c8fe9f2d40fc66105ad2a597b9be660c..e56787231e832efd177c5db4e0d0028f7651b576 100644
|
| --- a/chrome/browser/sync/profile_sync_service_autofill_unittest.cc
|
| +++ b/chrome/browser/sync/profile_sync_service_autofill_unittest.cc
|
| @@ -44,10 +44,8 @@
|
| #include "chrome/browser/webdata/web_data_service_factory.h"
|
| #include "chrome/browser/webdata/web_data_service_test_util.h"
|
| #include "chrome/browser/webdata/web_database.h"
|
| -#include "chrome/common/chrome_notification_types.h"
|
| #include "components/autofill/browser/autofill_common_test.h"
|
| #include "components/autofill/browser/personal_data_manager.h"
|
| -#include "content/public/browser/notification_source.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "google_apis/gaia/gaia_constants.h"
|
| #include "sync/internal_api/public/base/model_type.h"
|
| @@ -93,6 +91,15 @@ class Id;
|
|
|
| class HistoryService;
|
|
|
| +namespace {
|
| +
|
| +void RunAndSignal(const base::Closure& cb, WaitableEvent* event) {
|
| + cb.Run();
|
| + event->Signal();
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| class AutofillTableMock : public AutofillTable {
|
| public:
|
| AutofillTableMock() : AutofillTable() {}
|
| @@ -175,9 +182,11 @@ class TokenWebDataServiceFake : public WebDataService {
|
| class WebDataServiceFake : public AutofillWebDataService {
|
| public:
|
| WebDataServiceFake()
|
| - : AutofillWebDataService(
|
| - NULL, WebDataServiceBase::ProfileErrorCallback()),
|
| + : AutofillWebDataService(NULL,
|
| + WebDataServiceBase::ProfileErrorCallback()),
|
| web_database_(NULL),
|
| + autocomplete_syncable_service_(NULL),
|
| + autofill_profile_syncable_service_(NULL),
|
| syncable_service_created_or_destroyed_(false, false) {
|
| }
|
|
|
| @@ -213,6 +222,34 @@ class WebDataServiceFake : public AutofillWebDataService {
|
|
|
| virtual void ShutdownOnUIThread() OVERRIDE {}
|
|
|
| + void OnAutofillEntriesChanged(const AutofillChangeList& changes) {
|
| + WaitableEvent event(true, false);
|
| +
|
| + base::Closure notify_cb =
|
| + base::Bind(&AutocompleteSyncableService::AutofillEntriesChanged,
|
| + base::Unretained(autocomplete_syncable_service_),
|
| + changes);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::DB,
|
| + FROM_HERE,
|
| + base::Bind(&RunAndSignal, notify_cb, &event));
|
| + event.Wait();
|
| + }
|
| +
|
| + void OnAutofillProfileChanged(const AutofillProfileChange& changes) {
|
| + WaitableEvent event(true, false);
|
| +
|
| + base::Closure notify_cb =
|
| + base::Bind(&AutocompleteSyncableService::AutofillProfileChanged,
|
| + base::Unretained(autofill_profile_syncable_service_),
|
| + changes);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::DB,
|
| + FROM_HERE,
|
| + base::Bind(&RunAndSignal, notify_cb, &event));
|
| + event.Wait();
|
| + }
|
| +
|
| private:
|
| virtual ~WebDataServiceFake() {}
|
|
|
| @@ -221,16 +258,26 @@ class WebDataServiceFake : public AutofillWebDataService {
|
| // These services are deleted in DestroySyncableService().
|
| AutocompleteSyncableService::CreateForWebDataService(this);
|
| AutofillProfileSyncableService::CreateForWebDataService(this);
|
| +
|
| + autocomplete_syncable_service_ =
|
| + AutocompleteSyncableService::FromWebDataService(this);
|
| + autofill_profile_syncable_service_ =
|
| + AutofillProfileSyncableService::FromWebDataService(this);
|
| +
|
| syncable_service_created_or_destroyed_.Signal();
|
| }
|
|
|
| void DestroySyncableService() {
|
| ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::DB));
|
| WebDataServiceBase::ShutdownOnDBThread();
|
| + autocomplete_syncable_service_ = NULL;
|
| + autofill_profile_syncable_service_ = NULL;
|
| syncable_service_created_or_destroyed_.Signal();
|
| }
|
|
|
| WebDatabase* web_database_;
|
| + AutocompleteSyncableService* autocomplete_syncable_service_;
|
| + AutofillProfileSyncableService* autofill_profile_syncable_service_;
|
|
|
| WaitableEvent syncable_service_created_or_destroyed_;
|
|
|
| @@ -351,15 +398,21 @@ class MockPersonalDataManagerService : public PersonalDataManagerService {
|
| return new MockPersonalDataManagerService();
|
| }
|
|
|
| - MockPersonalDataManagerService() {}
|
| + MockPersonalDataManagerService() {
|
| + personal_data_manager_.reset(new MockPersonalDataManager());
|
| + }
|
| virtual ~MockPersonalDataManagerService() {}
|
|
|
| + virtual void Shutdown() OVERRIDE {
|
| + personal_data_manager_.reset();
|
| + }
|
| +
|
| virtual MockPersonalDataManager* GetPersonalDataManager() OVERRIDE {
|
| - return &personal_data_manager_;
|
| + return personal_data_manager_.get();
|
| }
|
|
|
| private:
|
| - MockPersonalDataManager personal_data_manager_;
|
| + scoped_ptr<MockPersonalDataManager> personal_data_manager_;
|
| DISALLOW_COPY_AND_ASSIGN(MockPersonalDataManagerService);
|
| };
|
|
|
| @@ -427,7 +480,6 @@ class ProfileSyncServiceAutofillTest
|
|
|
| personal_data_manager_->Init(profile_.get());
|
|
|
| - // Note: This must be called *after* the notification service is created.
|
| web_data_service_->StartSyncableService();
|
| }
|
|
|
| @@ -1129,12 +1181,8 @@ TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeAddEntry) {
|
|
|
| AutofillChangeList changes;
|
| changes.push_back(AutofillChange(AutofillChange::ADD, added_entry.key()));
|
| - scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(
|
| - db_thread_.DeprecatedGetThreadObject()));
|
| - notifier->Notify(chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
|
| - content::Source<AutofillWebDataService>(
|
| - web_data_service_.get()),
|
| - content::Details<AutofillChangeList>(&changes));
|
| +
|
| + web_data_service_->OnAutofillEntriesChanged(changes);
|
|
|
| std::vector<AutofillEntry> new_sync_entries;
|
| std::vector<AutofillProfile> new_sync_profiles;
|
| @@ -1158,14 +1206,9 @@ TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeAddProfile) {
|
| "joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL",
|
| "32801", "US", "19482937549");
|
|
|
| - AutofillProfileChange change(AutofillProfileChange::ADD,
|
| - added_profile.guid(), &added_profile);
|
| - scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(
|
| - db_thread_.DeprecatedGetThreadObject()));
|
| - notifier->Notify(chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
|
| - content::Source<AutofillWebDataService>(
|
| - web_data_service_.get()),
|
| - content::Details<AutofillProfileChange>(&change));
|
| + AutofillProfileChange change(
|
| + AutofillProfileChange::ADD, added_profile.guid(), &added_profile);
|
| + web_data_service_->OnAutofillProfileChanged(change);
|
|
|
| std::vector<AutofillProfile> new_sync_profiles;
|
| ASSERT_TRUE(GetAutofillProfilesFromSyncDBUnderProfileNode(
|
| @@ -1195,12 +1238,7 @@ TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeUpdateEntry) {
|
| AutofillChangeList changes;
|
| changes.push_back(AutofillChange(AutofillChange::UPDATE,
|
| updated_entry.key()));
|
| - scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(
|
| - db_thread_.DeprecatedGetThreadObject()));
|
| - notifier->Notify(chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
|
| - content::Source<AutofillWebDataService>(
|
| - web_data_service_.get()),
|
| - content::Details<AutofillChangeList>(&changes));
|
| + web_data_service_->OnAutofillEntriesChanged(changes);
|
|
|
| std::vector<AutofillEntry> new_sync_entries;
|
| std::vector<AutofillProfile> new_sync_profiles;
|
| @@ -1226,12 +1264,7 @@ TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeRemoveEntry) {
|
| AutofillChangeList changes;
|
| changes.push_back(AutofillChange(AutofillChange::REMOVE,
|
| original_entry.key()));
|
| - scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(
|
| - db_thread_.DeprecatedGetThreadObject()));
|
| - notifier->Notify(chrome::NOTIFICATION_AUTOFILL_ENTRIES_CHANGED,
|
| - content::Source<AutofillWebDataService>(
|
| - web_data_service_.get()),
|
| - content::Details<AutofillChangeList>(&changes));
|
| + web_data_service_->OnAutofillEntriesChanged(changes);
|
|
|
| std::vector<AutofillEntry> new_sync_entries;
|
| std::vector<AutofillProfile> new_sync_profiles;
|
| @@ -1264,14 +1297,9 @@ TEST_F(ProfileSyncServiceAutofillTest, ProcessUserChangeRemoveProfile) {
|
| StartSyncService(add_autofill.callback(), false, syncer::AUTOFILL_PROFILE);
|
| ASSERT_TRUE(add_autofill.success());
|
|
|
| - AutofillProfileChange change(AutofillProfileChange::REMOVE,
|
| - sync_profile.guid(), NULL);
|
| - scoped_refptr<ThreadNotifier> notifier(new ThreadNotifier(
|
| - db_thread_.DeprecatedGetThreadObject()));
|
| - notifier->Notify(chrome::NOTIFICATION_AUTOFILL_PROFILE_CHANGED,
|
| - content::Source<AutofillWebDataService>(
|
| - web_data_service_.get()),
|
| - content::Details<AutofillProfileChange>(&change));
|
| + AutofillProfileChange change(
|
| + AutofillProfileChange::REMOVE, sync_profile.guid(), NULL);
|
| + web_data_service_->OnAutofillProfileChanged(change);
|
|
|
| std::vector<AutofillProfile> new_sync_profiles;
|
| ASSERT_TRUE(GetAutofillProfilesFromSyncDBUnderProfileNode(
|
|
|