1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_SYNC_TEST_INTEGRATION_AUTOFILL_HELPER_H_
#define CHROME_BROWSER_SYNC_TEST_INTEGRATION_AUTOFILL_HELPER_H_
#include <set>
#include <string>
#include <vector>
#include "chrome/browser/sync/test/integration/multi_client_status_change_checker.h"
#include "components/autofill/core/browser/data_manager/addresses/address_data_manager.h"
#include "components/autofill/core/browser/data_manager/personal_data_manager_observer.h"
#include "components/autofill/core/browser/data_model/addresses/autofill_structured_address_component.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace autofill {
class AutocompleteKey;
class AutofillProfile;
class CreditCard;
class PersonalDataManager;
} // namespace autofill
namespace autofill_helper {
enum ProfileType {
PROFILE_MARION,
PROFILE_HOMER,
PROFILE_FRASIER,
PROFILE_NULL
};
// Used to access the personal data manager within a particular sync profile.
[[nodiscard]] autofill::PersonalDataManager* GetPersonalDataManager(int index);
// Adds the form fields in |keys| to the WebDataService of sync profile
// |profile|.
void AddKeys(int profile, const std::set<autofill::AutocompleteKey>& keys);
// Removes the form field in |key| from the WebDataService of sync profile
// |profile|.
void RemoveKey(int profile, const autofill::AutocompleteKey& key);
// Removes all of the keys from the WebDataService of sync profile |profile|.
void RemoveKeys(int profile);
// Gets all the form fields in the WebDataService of sync profile |profile|.
[[nodiscard]] std::set<autofill::AutocompleteKey> GetAllKeys(int profile);
// Compares the form fields in the WebDataServices of sync profiles
// |profile_a| and |profile_b|. Returns true if they match.
[[nodiscard]] bool KeysMatch(int profile_a, int profile_b);
// Replaces the CreditCard profiles in sync profile |profile| with
// |credit_cards|.
void SetCreditCards(int profile,
std::vector<autofill::CreditCard>* credit_cards);
// Adds the autofill profile |autofill_profile| to sync profile |profile|.
void AddProfile(int profile, const autofill::AutofillProfile& autofill_profile);
// Removes the autofill profile with guid |guid| from sync profile
// |profile|.
void RemoveProfile(int profile, const std::string& guid);
// Updates the autofill profile with guid |guid| in sync profile |profile|
// to |type| and |value| with the verification status |status|.
void UpdateProfile(int profile,
const std::string& guid,
autofill::FieldType type,
const std::u16string& value,
autofill::VerificationStatus status =
autofill::VerificationStatus::kObserved);
// Gets all the Autofill profiles in the PersonalDataManager of sync profile
// |profile|.
[[nodiscard]] std::vector<const autofill::AutofillProfile*>
GetAllAutoFillProfiles(int profile);
// Returns the number of autofill profiles contained by sync profile
// |profile|.
size_t GetProfileCount(int profile);
// Returns the number of autofill keys contained by sync profile |profile|.
size_t GetKeyCount(int profile);
// Compares the Autofill profiles in the PersonalDataManagers of sync profiles
// |profile_a| and |profile_b|. Returns true if they match.
[[nodiscard]] bool ProfilesMatch(int profile_a, int profile_b);
// Creates a test autofill profile based on the persona specified in |type|.
autofill::AutofillProfile CreateAutofillProfile(ProfileType type);
// Creates a test autofill profile with a unique GUID
autofill::AutofillProfile CreateUniqueAutofillProfile();
} // namespace autofill_helper
// Checker to block until autocomplete keys match on both profiles.
class AutocompleteKeysChecker : public MultiClientStatusChangeChecker {
public:
AutocompleteKeysChecker(int profile_a, int profile_b);
// StatusChangeChecker implementation.
bool IsExitConditionSatisfied(std::ostream* os) override;
private:
const int profile_a_;
const int profile_b_;
};
// Checker to block until autofill profiles match on both profiles.
class AutofillProfileChecker : public StatusChangeChecker,
public autofill::AddressDataManager::Observer {
public:
AutofillProfileChecker(int profile_a,
int profile_b,
std::optional<unsigned int> expected_count);
~AutofillProfileChecker() override;
// StatusChangeChecker implementation.
bool IsExitConditionSatisfied(std::ostream* os) override;
// autofill::AddressDataManager::Observer implementation.
void OnAddressDataChanged() override;
protected:
// StatusChangeChecker overrides.
void WillStartWaiting() override;
private:
const int profile_a_;
const int profile_b_;
const std::optional<unsigned int> expected_count_;
};
#endif // CHROME_BROWSER_SYNC_TEST_INTEGRATION_AUTOFILL_HELPER_H_
|