| 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 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 if (identifier < 0) | 670 if (identifier < 0) |
| 671 return false; | 671 return false; |
| 672 | 672 |
| 673 const CreditCard* credit_card = nullptr; | 673 const CreditCard* credit_card = nullptr; |
| 674 const AutofillProfile* profile = nullptr; | 674 const AutofillProfile* profile = nullptr; |
| 675 if (GetCreditCard(identifier, &credit_card)) { | 675 if (GetCreditCard(identifier, &credit_card)) { |
| 676 if (credit_card->record_type() != CreditCard::LOCAL_CARD) | 676 if (credit_card->record_type() != CreditCard::LOCAL_CARD) |
| 677 return false; | 677 return false; |
| 678 | 678 |
| 679 if (title) | 679 if (title) |
| 680 title->assign(credit_card->TypeAndLastFourDigits()); | 680 title->assign(credit_card->TypeAndLastFourDigitsForDisplay()); |
| 681 if (body) { | 681 if (body) { |
| 682 body->assign(l10n_util::GetStringUTF16( | 682 body->assign(l10n_util::GetStringUTF16( |
| 683 IDS_AUTOFILL_DELETE_CREDIT_CARD_SUGGESTION_CONFIRMATION_BODY)); | 683 IDS_AUTOFILL_DELETE_CREDIT_CARD_SUGGESTION_CONFIRMATION_BODY)); |
| 684 } | 684 } |
| 685 | 685 |
| 686 return true; | 686 return true; |
| 687 } else if (GetProfile(identifier, &profile)) { | 687 } else if (GetProfile(identifier, &profile)) { |
| 688 if (profile->record_type() != AutofillProfile::LOCAL_PROFILE) | 688 if (profile->record_type() != AutofillProfile::LOCAL_PROFILE) |
| 689 return false; | 689 return false; |
| 690 | 690 |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 AutofillClient::PaymentsRpcResult result, | 841 AutofillClient::PaymentsRpcResult result, |
| 842 const base::string16& context_token, | 842 const base::string16& context_token, |
| 843 scoped_ptr<base::DictionaryValue> legal_message) { | 843 scoped_ptr<base::DictionaryValue> legal_message) { |
| 844 // TODO(jdonnelly): Log duration. | 844 // TODO(jdonnelly): Log duration. |
| 845 if (result == AutofillClient::SUCCESS) { | 845 if (result == AutofillClient::SUCCESS) { |
| 846 // Do *not* call payments_client_->Prepare() here. We shouldn't send | 846 // Do *not* call payments_client_->Prepare() here. We shouldn't send |
| 847 // credentials until the user has explicitly accepted a prompt to upload. | 847 // credentials until the user has explicitly accepted a prompt to upload. |
| 848 upload_request_.context_token = context_token; | 848 upload_request_.context_token = context_token; |
| 849 user_did_accept_upload_prompt_ = false; | 849 user_did_accept_upload_prompt_ = false; |
| 850 client_->ConfirmSaveCreditCardToCloud( | 850 client_->ConfirmSaveCreditCardToCloud( |
| 851 upload_request_.card, std::move(legal_message), |
| 851 base::Bind(&AutofillManager::OnUserDidAcceptUpload, | 852 base::Bind(&AutofillManager::OnUserDidAcceptUpload, |
| 852 weak_ptr_factory_.GetWeakPtr()), | 853 weak_ptr_factory_.GetWeakPtr())); |
| 853 std::move(legal_message)); | |
| 854 client_->LoadRiskData(base::Bind(&AutofillManager::OnDidGetUploadRiskData, | 854 client_->LoadRiskData(base::Bind(&AutofillManager::OnDidGetUploadRiskData, |
| 855 weak_ptr_factory_.GetWeakPtr())); | 855 weak_ptr_factory_.GetWeakPtr())); |
| 856 AutofillMetrics::LogCardUploadDecisionMetric( | 856 AutofillMetrics::LogCardUploadDecisionMetric( |
| 857 AutofillMetrics::UPLOAD_OFFERED); | 857 AutofillMetrics::UPLOAD_OFFERED); |
| 858 } else { | 858 } else { |
| 859 // If the upload details request failed, fall back to a local save. The | 859 // If the upload details request failed, fall back to a local save. The |
| 860 // reasoning here is as follows: | 860 // reasoning here is as follows: |
| 861 // - This will sometimes fail intermittently, in which case it might be | 861 // - This will sometimes fail intermittently, in which case it might be |
| 862 // better to not fall back, because sometimes offering upload and sometimes | 862 // better to not fall back, because sometimes offering upload and sometimes |
| 863 // offering local save is a poor user experience. | 863 // offering local save is a poor user experience. |
| 864 // - However, in some cases, our local configuration limiting the feature to | 864 // - However, in some cases, our local configuration limiting the feature to |
| 865 // countries that Payments is known to support will not match Payments' own | 865 // countries that Payments is known to support will not match Payments' own |
| 866 // determination of what country the user is located in. In these cases, | 866 // determination of what country the user is located in. In these cases, |
| 867 // the upload details request will consistently fail and if we don't fall | 867 // the upload details request will consistently fail and if we don't fall |
| 868 // back to a local save then the user will never be offered any kind of | 868 // back to a local save then the user will never be offered any kind of |
| 869 // credit card save. | 869 // credit card save. |
| 870 client_->ConfirmSaveCreditCardLocally(base::Bind( | 870 client_->ConfirmSaveCreditCardLocally( |
| 871 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), | 871 upload_request_.card, |
| 872 base::Unretained(personal_data_), upload_request_.card)); | 872 base::Bind( |
| 873 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), |
| 874 base::Unretained(personal_data_), upload_request_.card)); |
| 873 AutofillMetrics::LogCardUploadDecisionMetric( | 875 AutofillMetrics::LogCardUploadDecisionMetric( |
| 874 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED); | 876 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED); |
| 875 } | 877 } |
| 876 } | 878 } |
| 877 | 879 |
| 878 void AutofillManager::OnDidUploadCard( | 880 void AutofillManager::OnDidUploadCard( |
| 879 AutofillClient::PaymentsRpcResult result) { | 881 AutofillClient::PaymentsRpcResult result) { |
| 880 // We don't do anything user-visible if the upload attempt fails. | 882 // We don't do anything user-visible if the upload attempt fails. |
| 881 // TODO(jdonnelly): Log duration. | 883 // TODO(jdonnelly): Log duration. |
| 882 } | 884 } |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 | 961 |
| 960 DumpAutofillData(imported_credit_card); | 962 DumpAutofillData(imported_credit_card); |
| 961 } | 963 } |
| 962 #endif // ENABLE_FORM_DEBUG_DUMP | 964 #endif // ENABLE_FORM_DEBUG_DUMP |
| 963 | 965 |
| 964 // If credit card information was submitted, we need to confirm whether to | 966 // If credit card information was submitted, we need to confirm whether to |
| 965 // save it. | 967 // save it. |
| 966 if (imported_credit_card) { | 968 if (imported_credit_card) { |
| 967 // Don't offer to save any cards that were recently unmasked. | 969 // Don't offer to save any cards that were recently unmasked. |
| 968 for (const CreditCard& unmasked_card : recently_unmasked_cards_) { | 970 for (const CreditCard& unmasked_card : recently_unmasked_cards_) { |
| 969 if (unmasked_card.TypeAndLastFourDigits() == | 971 if (unmasked_card.TypeAndLastFourDigitsForDisplay() == |
| 970 imported_credit_card->TypeAndLastFourDigits()) | 972 imported_credit_card->TypeAndLastFourDigitsForDisplay()) |
| 971 return; | 973 return; |
| 972 } | 974 } |
| 973 | 975 |
| 974 upload_request_ = payments::PaymentsClient::UploadRequestDetails(); | 976 upload_request_ = payments::PaymentsClient::UploadRequestDetails(); |
| 975 if (!IsCreditCardUploadEnabled()) { | 977 if (!IsCreditCardUploadEnabled()) { |
| 976 client_->ConfirmSaveCreditCardLocally(base::Bind( | 978 client_->ConfirmSaveCreditCardLocally( |
| 977 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), | 979 *imported_credit_card, |
| 978 base::Unretained(personal_data_), *imported_credit_card)); | 980 base::Bind( |
| 981 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), |
| 982 base::Unretained(personal_data_), *imported_credit_card)); |
| 979 } else { | 983 } else { |
| 980 // Check for a CVC in order to determine whether we can prompt the user to | 984 // Check for a CVC in order to determine whether we can prompt the user to |
| 981 // upload their card. | 985 // upload their card. |
| 982 for (const auto& field : submitted_form) { | 986 for (const auto& field : submitted_form) { |
| 983 if (field->Type().GetStorableType() == CREDIT_CARD_VERIFICATION_CODE) { | 987 if (field->Type().GetStorableType() == CREDIT_CARD_VERIFICATION_CODE) { |
| 984 upload_request_.cvc = field->value; | 988 upload_request_.cvc = field->value; |
| 985 break; | 989 break; |
| 986 } | 990 } |
| 987 } | 991 } |
| 988 | 992 |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1699 if (i > 0) | 1703 if (i > 0) |
| 1700 fputs("Next oldest form:\n", file); | 1704 fputs("Next oldest form:\n", file); |
| 1701 } | 1705 } |
| 1702 fputs("\n", file); | 1706 fputs("\n", file); |
| 1703 | 1707 |
| 1704 fclose(file); | 1708 fclose(file); |
| 1705 } | 1709 } |
| 1706 #endif // ENABLE_FORM_DEBUG_DUMP | 1710 #endif // ENABLE_FORM_DEBUG_DUMP |
| 1707 | 1711 |
| 1708 } // namespace autofill | 1712 } // namespace autofill |
| OLD | NEW |