| Index: components/autofill/core/browser/autofill_manager_unittest.cc | 
| diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc | 
| index 1b47591e27cbbd4fbd6c8d4de7868e50063a5eb1..4ff82db170fdd0b542c850b632a8edea4fc7f4a4 100644 | 
| --- a/components/autofill/core/browser/autofill_manager_unittest.cc | 
| +++ b/components/autofill/core/browser/autofill_manager_unittest.cc | 
| @@ -184,10 +184,7 @@ class TestPersonalDataManager : public PersonalDataManager { | 
| } | 
|  | 
| void AddFullServerCreditCard(const CreditCard& credit_card) override { | 
| -    std::unique_ptr<CreditCard> server_credit_card = | 
| -        base::MakeUnique<CreditCard>(credit_card); | 
| -    server_credit_card->set_modification_date(base::Time::Now()); | 
| -    server_credit_cards_.push_back(std::move(server_credit_card)); | 
| +    AddServerCreditCard(credit_card); | 
| } | 
|  | 
| void RecordUseOf(const AutofillDataModel& data_model) override { | 
| @@ -227,6 +224,13 @@ class TestPersonalDataManager : public PersonalDataManager { | 
| server_credit_cards_.clear(); | 
| } | 
|  | 
| +  void AddServerCreditCard(const CreditCard& credit_card) { | 
| +    std::unique_ptr<CreditCard> server_credit_card = | 
| +        base::MakeUnique<CreditCard>(credit_card); | 
| +    server_credit_card->set_modification_date(base::Time::Now()); | 
| +    server_credit_cards_.push_back(std::move(server_credit_card)); | 
| +  } | 
| + | 
| // Create Elvis card with whitespace in the credit card number. | 
| void CreateTestCreditCardWithWhitespace() { | 
| ClearCreditCards(); | 
| @@ -4636,6 +4640,7 @@ TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard) { | 
|  | 
| base::HistogramTester histogram_tester; | 
|  | 
| +  EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)).Times(0); | 
| FormSubmitted(credit_card_form); | 
| EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded()); | 
|  | 
| @@ -5581,6 +5586,50 @@ TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard_UploadDetailsFails) { | 
| AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED); | 
| } | 
|  | 
| +// TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot. | 
| +#if defined(OS_ANDROID) | 
| +#define MAYBE_DuplicateMaskedCreditCard DISABLED_DuplicatedMaskedCreditCard | 
| +#else | 
| +#define MAYBE_DuplicateMaskedCreditCard DuplicateMaskedCreditCard | 
| +#endif | 
| +TEST_F(AutofillManagerTest, MAYBE_DuplicateMaskedCreditCard) { | 
| +  personal_data_.ClearAutofillProfiles(); | 
| +  autofill_manager_->set_credit_card_upload_enabled(true); | 
| +  autofill_manager_->set_app_locale("en-US"); | 
| + | 
| +  // Create, fill and submit an address form in order to establish a recent | 
| +  // profile which can be selected for the upload request. | 
| +  FormData address_form; | 
| +  test::CreateTestAddressFormData(&address_form); | 
| +  FormsSeen(std::vector<FormData>(1, address_form)); | 
| +  ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form); | 
| +  FormSubmitted(address_form); | 
| + | 
| +  // Add a masked credit card whose |TypeAndLastFourDigits| matches what we will | 
| +  // below. | 
| +  CreditCard credit_card(CreditCard::MASKED_SERVER_CARD, "a123"); | 
| +  test::SetCreditCardInfo(&credit_card, "Flo Master", "1111", "11", "2017"); | 
| +  credit_card.SetNetworkForMaskedCard(kVisaCard); | 
| +  personal_data_.AddServerCreditCard(credit_card); | 
| + | 
| +  // Set up our credit card form data. | 
| +  FormData credit_card_form; | 
| +  CreateTestCreditCardFormData(&credit_card_form, true, false); | 
| +  FormsSeen(std::vector<FormData>(1, credit_card_form)); | 
| + | 
| +  // Edit the data, and submit. | 
| +  credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master"); | 
| +  credit_card_form.fields[1].value = ASCIIToUTF16("4111111111111111"); | 
| +  credit_card_form.fields[2].value = ASCIIToUTF16("11"); | 
| +  credit_card_form.fields[3].value = ASCIIToUTF16("2017"); | 
| +  credit_card_form.fields[4].value = ASCIIToUTF16("123"); | 
| + | 
| +  // The save prompt should be shown. | 
| +  EXPECT_CALL(autofill_client_, ConfirmSaveCreditCardLocally(_, _)); | 
| +  FormSubmitted(credit_card_form); | 
| +  EXPECT_FALSE(autofill_manager_->credit_card_was_uploaded()); | 
| +} | 
| + | 
| // Verify that typing "gmail" will match "theking@gmail.com" and | 
| // "buddy@gmail.com" when substring matching is enabled. | 
| TEST_F(AutofillManagerTest, DisplaySuggestionsWithMatchingTokens) { | 
|  |