| Index: components/autofill/core/browser/autofill_manager.cc | 
| diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc | 
| index 2f0c2308b0921eab7ff7abee8ce64a0420aee271..f5f2d49352c8297e0dc9b9c2880b62216f380edf 100644 | 
| --- a/components/autofill/core/browser/autofill_manager.cc | 
| +++ b/components/autofill/core/browser/autofill_manager.cc | 
| @@ -1178,10 +1178,11 @@ bool AutofillManager::ShouldUploadForm(const FormStructure& form) { | 
|  | 
| void AutofillManager::ImportFormData(const FormStructure& submitted_form) { | 
| std::unique_ptr<CreditCard> imported_credit_card; | 
| +  bool imported_credit_card_matches_masked_server_credit_card; | 
| if (!personal_data_->ImportFormData( | 
| -          submitted_form, IsCreditCardUploadEnabled(), &imported_credit_card)) { | 
| +          submitted_form, IsCreditCardUploadEnabled(), &imported_credit_card, | 
| +          &imported_credit_card_matches_masked_server_credit_card)) | 
| return; | 
| -  } | 
|  | 
| #ifdef ENABLE_FORM_DEBUG_DUMP | 
| // Debug code for research on what autofill Chrome extracts from the last few | 
| @@ -1217,10 +1218,12 @@ void AutofillManager::ImportFormData(const FormStructure& submitted_form) { | 
| if (!imported_credit_card) | 
| return; | 
|  | 
| -  if (!IsCreditCardUploadEnabled()) { | 
| -    // This block will only be reached if we have observed a new card. In this | 
| -    // case, ImportFormData will return false if the card matches one already | 
| -    // stored. | 
| +  if (!IsCreditCardUploadEnabled() || | 
| +      imported_credit_card_matches_masked_server_credit_card) { | 
| +    // This block will only be reached if we have observed a new card or a card | 
| +    // whose |TypeAndLastFourDigits|  matches a masked server card. | 
| +    // |ImportFormData| will return false if the card matches a full card that | 
| +    // we have already stored. | 
| client_->ConfirmSaveCreditCardLocally( | 
| *imported_credit_card, | 
| base::Bind( | 
| @@ -1229,7 +1232,8 @@ void AutofillManager::ImportFormData(const FormStructure& submitted_form) { | 
| } else { | 
| // Whereas, because we pass IsCreditCardUploadEnabled() to ImportFormData, | 
| // this block can be reached on observing either a new card or one already | 
| -    // stored locally. We will offer to upload either kind. | 
| +    // stored locally and whose |TypeAndLastFourDigits| do not match a masked | 
| +    // server card. We will offer to upload either kind. | 
| upload_request_ = payments::PaymentsClient::UploadRequestDetails(); | 
| upload_request_.card = *imported_credit_card; | 
|  | 
|  |