| OLD | NEW | 
|     1 // Copyright 2013 The Chromium Authors. All rights reserved. |     1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "components/autofill/core/browser/autofill_manager.h" |     5 #include "components/autofill/core/browser/autofill_manager.h" | 
|     6  |     6  | 
|     7 #include <stddef.h> |     7 #include <stddef.h> | 
|     8 #include <stdint.h> |     8 #include <stdint.h> | 
|     9  |     9  | 
|    10 #include <algorithm> |    10 #include <algorithm> | 
| (...skipping 1160 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1171   return IsAutofillEnabled() && !driver_->IsIncognito() && |  1171   return IsAutofillEnabled() && !driver_->IsIncognito() && | 
|  1172          form.ShouldBeParsed() && |  1172          form.ShouldBeParsed() && | 
|  1173          (form.active_field_count() >= kRequiredFieldsForUpload || |  1173          (form.active_field_count() >= kRequiredFieldsForUpload || | 
|  1174           (form.all_fields_are_passwords() && |  1174           (form.all_fields_are_passwords() && | 
|  1175            form.active_field_count() >= |  1175            form.active_field_count() >= | 
|  1176                kRequiredFieldsForFormsWithOnlyPasswordFields)); |  1176                kRequiredFieldsForFormsWithOnlyPasswordFields)); | 
|  1177 } |  1177 } | 
|  1178  |  1178  | 
|  1179 void AutofillManager::ImportFormData(const FormStructure& submitted_form) { |  1179 void AutofillManager::ImportFormData(const FormStructure& submitted_form) { | 
|  1180   std::unique_ptr<CreditCard> imported_credit_card; |  1180   std::unique_ptr<CreditCard> imported_credit_card; | 
 |  1181   bool imported_credit_card_matches_masked_server_credit_card; | 
|  1181   if (!personal_data_->ImportFormData( |  1182   if (!personal_data_->ImportFormData( | 
|  1182           submitted_form, IsCreditCardUploadEnabled(), &imported_credit_card)) { |  1183           submitted_form, IsCreditCardUploadEnabled(), &imported_credit_card, | 
 |  1184           &imported_credit_card_matches_masked_server_credit_card)) | 
|  1183     return; |  1185     return; | 
|  1184   } |  | 
|  1185  |  1186  | 
|  1186 #ifdef ENABLE_FORM_DEBUG_DUMP |  1187 #ifdef ENABLE_FORM_DEBUG_DUMP | 
|  1187   // Debug code for research on what autofill Chrome extracts from the last few |  1188   // Debug code for research on what autofill Chrome extracts from the last few | 
|  1188   // forms when submitting credit card data. See DumpAutofillData(). |  1189   // forms when submitting credit card data. See DumpAutofillData(). | 
|  1189   bool dump_data = base::CommandLine::ForCurrentProcess()->HasSwitch( |  1190   bool dump_data = base::CommandLine::ForCurrentProcess()->HasSwitch( | 
|  1190       "dump-autofill-data"); |  1191       "dump-autofill-data"); | 
|  1191  |  1192  | 
|  1192   // Save the form data for future dumping. |  1193   // Save the form data for future dumping. | 
|  1193   if (dump_data) { |  1194   if (dump_data) { | 
|  1194     if (recently_autofilled_forms_.size() > 5) |  1195     if (recently_autofilled_forms_.size() > 5) | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|  1210     } |  1211     } | 
|  1211  |  1212  | 
|  1212     DumpAutofillData(!!imported_credit_card); |  1213     DumpAutofillData(!!imported_credit_card); | 
|  1213   } |  1214   } | 
|  1214 #endif  // ENABLE_FORM_DEBUG_DUMP |  1215 #endif  // ENABLE_FORM_DEBUG_DUMP | 
|  1215  |  1216  | 
|  1216   // No card available to offer save or upload. |  1217   // No card available to offer save or upload. | 
|  1217   if (!imported_credit_card) |  1218   if (!imported_credit_card) | 
|  1218     return; |  1219     return; | 
|  1219  |  1220  | 
|  1220   if (!IsCreditCardUploadEnabled()) { |  1221   if (!IsCreditCardUploadEnabled() || | 
|  1221     // This block will only be reached if we have observed a new card. In this |  1222       imported_credit_card_matches_masked_server_credit_card) { | 
|  1222     // case, ImportFormData will return false if the card matches one already |  1223     // This block will only be reached if we have observed a new card or a card | 
|  1223     // stored. |  1224     // whose |TypeAndLastFourDigits|  matches a masked server card. | 
 |  1225     // |ImportFormData| will return false if the card matches a full card that | 
 |  1226     // we have already stored. | 
|  1224     client_->ConfirmSaveCreditCardLocally( |  1227     client_->ConfirmSaveCreditCardLocally( | 
|  1225         *imported_credit_card, |  1228         *imported_credit_card, | 
|  1226         base::Bind( |  1229         base::Bind( | 
|  1227             base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), |  1230             base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), | 
|  1228             base::Unretained(personal_data_), *imported_credit_card)); |  1231             base::Unretained(personal_data_), *imported_credit_card)); | 
|  1229   } else { |  1232   } else { | 
|  1230     // Whereas, because we pass IsCreditCardUploadEnabled() to ImportFormData, |  1233     // Whereas, because we pass IsCreditCardUploadEnabled() to ImportFormData, | 
|  1231     // this block can be reached on observing either a new card or one already |  1234     // this block can be reached on observing either a new card or one already | 
|  1232     // stored locally. We will offer to upload either kind. |  1235     // stored locally and whose |TypeAndLastFourDigits| do not match a masked | 
 |  1236     // server card. We will offer to upload either kind. | 
|  1233     upload_request_ = payments::PaymentsClient::UploadRequestDetails(); |  1237     upload_request_ = payments::PaymentsClient::UploadRequestDetails(); | 
|  1234     upload_request_.card = *imported_credit_card; |  1238     upload_request_.card = *imported_credit_card; | 
|  1235  |  1239  | 
|  1236     // In order to prompt the user to upload their card, we must have both: |  1240     // In order to prompt the user to upload their card, we must have both: | 
|  1237     //  1) Card with CVC |  1241     //  1) Card with CVC | 
|  1238     //  2) 1+ recently-used or modified addresses that meet the client-side |  1242     //  2) 1+ recently-used or modified addresses that meet the client-side | 
|  1239     //     validation rules |  1243     //     validation rules | 
|  1240     // Here we perform both checks before returning or logging anything, |  1244     // Here we perform both checks before returning or logging anything, | 
|  1241     // because if only one of the two is missing, it may be fixable. |  1245     // because if only one of the two is missing, it may be fixable. | 
|  1242  |  1246  | 
| (...skipping 1019 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2262 } |  2266 } | 
|  2263 #endif  // ENABLE_FORM_DEBUG_DUMP |  2267 #endif  // ENABLE_FORM_DEBUG_DUMP | 
|  2264  |  2268  | 
|  2265 void AutofillManager::LogCardUploadDecisionUkm( |  2269 void AutofillManager::LogCardUploadDecisionUkm( | 
|  2266     AutofillMetrics::CardUploadDecisionMetric upload_decision) { |  2270     AutofillMetrics::CardUploadDecisionMetric upload_decision) { | 
|  2267   AutofillMetrics::LogCardUploadDecisionUkm( |  2271   AutofillMetrics::LogCardUploadDecisionUkm( | 
|  2268       client_->GetUkmService(), pending_upload_request_url_, upload_decision); |  2272       client_->GetUkmService(), pending_upload_request_url_, upload_decision); | 
|  2269 } |  2273 } | 
|  2270  |  2274  | 
|  2271 }  // namespace autofill |  2275 }  // namespace autofill | 
| OLD | NEW |