| Index: chrome/browser/sync/test/integration/autofill_helper.cc
 | 
| diff --git a/chrome/browser/sync/test/integration/autofill_helper.cc b/chrome/browser/sync/test/integration/autofill_helper.cc
 | 
| index 7d717c4efc4ac14ce44f89f907523feef17f46a1..9e885e412a41734144c29c4a54add24a16d9b5ac 100644
 | 
| --- a/chrome/browser/sync/test/integration/autofill_helper.cc
 | 
| +++ b/chrome/browser/sync/test/integration/autofill_helper.cc
 | 
| @@ -6,20 +6,21 @@
 | 
|  
 | 
|  #include <stddef.h>
 | 
|  
 | 
| +#include <map>
 | 
| +
 | 
|  #include "base/guid.h"
 | 
|  #include "base/run_loop.h"
 | 
|  #include "chrome/browser/autofill/personal_data_manager_factory.h"
 | 
|  #include "chrome/browser/chrome_notification_types.h"
 | 
|  #include "chrome/browser/profiles/profile.h"
 | 
|  #include "chrome/browser/sync/profile_sync_test_util.h"
 | 
| -#include "chrome/browser/sync/test/integration/multi_client_status_change_checker.h"
 | 
| +#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
 | 
|  #include "chrome/browser/sync/test/integration/sync_test.h"
 | 
|  #include "chrome/browser/web_data_service_factory.h"
 | 
|  #include "components/autofill/core/browser/autofill_profile.h"
 | 
|  #include "components/autofill/core/browser/autofill_test_utils.h"
 | 
|  #include "components/autofill/core/browser/autofill_type.h"
 | 
|  #include "components/autofill/core/browser/personal_data_manager.h"
 | 
| -#include "components/autofill/core/browser/personal_data_manager_observer.h"
 | 
|  #include "components/autofill/core/browser/webdata/autofill_entry.h"
 | 
|  #include "components/autofill/core/browser/webdata/autofill_table.h"
 | 
|  #include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
 | 
| @@ -254,47 +255,6 @@ bool KeysMatch(int profile_a, int profile_b) {
 | 
|    return GetAllKeys(profile_a) == GetAllKeys(profile_b);
 | 
|  }
 | 
|  
 | 
| -namespace {
 | 
| -
 | 
| -class KeysMatchStatusChecker : public MultiClientStatusChangeChecker {
 | 
| - public:
 | 
| -  KeysMatchStatusChecker(int profile_a, int profile_b);
 | 
| -  ~KeysMatchStatusChecker() override;
 | 
| -
 | 
| -  bool IsExitConditionSatisfied() override;
 | 
| -  std::string GetDebugMessage() const override;
 | 
| -
 | 
| - private:
 | 
| -  const int profile_a_;
 | 
| -  const int profile_b_;
 | 
| -};
 | 
| -
 | 
| -KeysMatchStatusChecker::KeysMatchStatusChecker(int profile_a, int profile_b)
 | 
| -    : MultiClientStatusChangeChecker(
 | 
| -          sync_datatype_helper::test()->GetSyncServices()),
 | 
| -      profile_a_(profile_a),
 | 
| -      profile_b_(profile_b) {
 | 
| -}
 | 
| -
 | 
| -KeysMatchStatusChecker::~KeysMatchStatusChecker() {
 | 
| -}
 | 
| -
 | 
| -bool KeysMatchStatusChecker::IsExitConditionSatisfied() {
 | 
| -  return KeysMatch(profile_a_, profile_b_);
 | 
| -}
 | 
| -
 | 
| -std::string KeysMatchStatusChecker::GetDebugMessage() const {
 | 
| -  return "Waiting for matching autofill keys";
 | 
| -}
 | 
| -
 | 
| -}  // namespace
 | 
| -
 | 
| -bool AwaitKeysMatch(int a, int b) {
 | 
| -  KeysMatchStatusChecker checker(a, b);
 | 
| -  checker.Wait();
 | 
| -  return !checker.TimedOut();
 | 
| -}
 | 
| -
 | 
|  void SetProfiles(int profile, std::vector<AutofillProfile>* autofill_profiles) {
 | 
|    MockPersonalDataManagerObserver observer;
 | 
|    EXPECT_CALL(observer, OnPersonalDataChanged()).
 | 
| @@ -433,86 +393,52 @@ bool AllProfilesMatch() {
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| -namespace {
 | 
| -
 | 
| -class ProfilesMatchStatusChecker : public StatusChangeChecker,
 | 
| -                                   public PersonalDataManagerObserver {
 | 
| - public:
 | 
| -  ProfilesMatchStatusChecker(int profile_a, int profile_b);
 | 
| -  ~ProfilesMatchStatusChecker() override;
 | 
| -
 | 
| -  // StatusChangeChecker implementation.
 | 
| -  bool IsExitConditionSatisfied() override;
 | 
| -  std::string GetDebugMessage() const override;
 | 
| +}  // namespace autofill_helper
 | 
|  
 | 
| -  // PersonalDataManager implementation.
 | 
| -  void OnPersonalDataChanged() override;
 | 
| +AutofillKeysChecker::AutofillKeysChecker(int profile_a, int profile_b)
 | 
| +    : MultiClientStatusChangeChecker(
 | 
| +          sync_datatype_helper::test()->GetSyncServices()),
 | 
| +      profile_a_(profile_a),
 | 
| +      profile_b_(profile_b) {}
 | 
|  
 | 
| -  // Wait for conidtion to beome true.
 | 
| -  void Wait();
 | 
| +bool AutofillKeysChecker::IsExitConditionSatisfied() {
 | 
| +  return autofill_helper::KeysMatch(profile_a_, profile_b_);
 | 
| +}
 | 
|  
 | 
| - private:
 | 
| -  const int profile_a_;
 | 
| -  const int profile_b_;
 | 
| -  bool registered_;
 | 
| -};
 | 
| +std::string AutofillKeysChecker::GetDebugMessage() const {
 | 
| +  return "Waiting for matching autofill keys";
 | 
| +}
 | 
|  
 | 
| -ProfilesMatchStatusChecker::ProfilesMatchStatusChecker(int profile_a,
 | 
| -                                                       int profile_b)
 | 
| -    : profile_a_(profile_a), profile_b_(profile_b), registered_(false) {
 | 
| +AutofillProfileChecker::AutofillProfileChecker(int profile_a, int profile_b)
 | 
| +    : profile_a_(profile_a), profile_b_(profile_b) {
 | 
| +  autofill_helper::GetPersonalDataManager(profile_a_)->AddObserver(this);
 | 
| +  autofill_helper::GetPersonalDataManager(profile_b_)->AddObserver(this);
 | 
|  }
 | 
|  
 | 
| -ProfilesMatchStatusChecker::~ProfilesMatchStatusChecker() {
 | 
| -  PersonalDataManager* pdm_a = GetPersonalDataManager(profile_a_);
 | 
| -  PersonalDataManager* pdm_b = GetPersonalDataManager(profile_b_);
 | 
| -  if (registered_) {
 | 
| -    pdm_a->RemoveObserver(this);
 | 
| -    pdm_b->RemoveObserver(this);
 | 
| -  }
 | 
| +AutofillProfileChecker::~AutofillProfileChecker() {
 | 
| +  autofill_helper::GetPersonalDataManager(profile_a_)->RemoveObserver(this);
 | 
| +  autofill_helper::GetPersonalDataManager(profile_b_)->RemoveObserver(this);
 | 
|  }
 | 
|  
 | 
| -bool ProfilesMatchStatusChecker::IsExitConditionSatisfied() {
 | 
| -  PersonalDataManager* pdm_a = GetPersonalDataManager(profile_a_);
 | 
| -  PersonalDataManager* pdm_b = GetPersonalDataManager(profile_b_);
 | 
| +bool AutofillProfileChecker::Wait() {
 | 
| +  autofill_helper::GetPersonalDataManager(profile_a_)->Refresh();
 | 
| +  autofill_helper::GetPersonalDataManager(profile_b_)->Refresh();
 | 
| +  return StatusChangeChecker::Wait();
 | 
| +}
 | 
|  
 | 
| +bool AutofillProfileChecker::IsExitConditionSatisfied() {
 | 
|    const std::vector<AutofillProfile*>& autofill_profiles_a =
 | 
| -      pdm_a->web_profiles();
 | 
| +      autofill_helper::GetPersonalDataManager(profile_a_)->web_profiles();
 | 
|    const std::vector<AutofillProfile*>& autofill_profiles_b =
 | 
| -      pdm_b->web_profiles();
 | 
| -
 | 
| -  return ProfilesMatchImpl(
 | 
| -      profile_a_, autofill_profiles_a, profile_b_, autofill_profiles_b);
 | 
| -}
 | 
| -
 | 
| -void ProfilesMatchStatusChecker::Wait() {
 | 
| -  PersonalDataManager* pdm_a = GetPersonalDataManager(profile_a_);
 | 
| -  PersonalDataManager* pdm_b = GetPersonalDataManager(profile_b_);
 | 
| -
 | 
| -  pdm_a->AddObserver(this);
 | 
| -  pdm_b->AddObserver(this);
 | 
| -
 | 
| -  pdm_a->Refresh();
 | 
| -  pdm_b->Refresh();
 | 
| -
 | 
| -  registered_ = true;
 | 
| -
 | 
| -  StartBlockingWait();
 | 
| +      autofill_helper::GetPersonalDataManager(profile_b_)->web_profiles();
 | 
| +  return autofill_helper::ProfilesMatchImpl(profile_a_, autofill_profiles_a,
 | 
| +                                            profile_b_, autofill_profiles_b);
 | 
|  }
 | 
|  
 | 
| -std::string ProfilesMatchStatusChecker::GetDebugMessage() const {
 | 
| +std::string AutofillProfileChecker::GetDebugMessage() const {
 | 
|    return "Waiting for matching autofill profiles";
 | 
|  }
 | 
|  
 | 
| -void ProfilesMatchStatusChecker::OnPersonalDataChanged() {
 | 
| +void AutofillProfileChecker::OnPersonalDataChanged() {
 | 
|    CheckExitCondition();
 | 
|  }
 | 
| -
 | 
| -}  // namespace
 | 
| -
 | 
| -bool AwaitProfilesMatch(int a, int b) {
 | 
| -  ProfilesMatchStatusChecker checker(a, b);
 | 
| -  checker.Wait();
 | 
| -  return !checker.TimedOut();
 | 
| -}
 | 
| -
 | 
| -}  // namespace autofill_helper
 | 
| 
 |