| 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 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 AutofillClient::PaymentsRpcResult result, | 844 AutofillClient::PaymentsRpcResult result, |
| 845 const base::string16& context_token, | 845 const base::string16& context_token, |
| 846 scoped_ptr<base::DictionaryValue> legal_message) { | 846 scoped_ptr<base::DictionaryValue> legal_message) { |
| 847 // TODO(jdonnelly): Log duration. | 847 // TODO(jdonnelly): Log duration. |
| 848 if (result == AutofillClient::SUCCESS) { | 848 if (result == AutofillClient::SUCCESS) { |
| 849 // Do *not* call payments_client_->Prepare() here. We shouldn't send | 849 // Do *not* call payments_client_->Prepare() here. We shouldn't send |
| 850 // credentials until the user has explicitly accepted a prompt to upload. | 850 // credentials until the user has explicitly accepted a prompt to upload. |
| 851 upload_request_.context_token = context_token; | 851 upload_request_.context_token = context_token; |
| 852 user_did_accept_upload_prompt_ = false; | 852 user_did_accept_upload_prompt_ = false; |
| 853 client_->ConfirmSaveCreditCardToCloud( | 853 client_->ConfirmSaveCreditCardToCloud( |
| 854 upload_request_.card, std::move(legal_message), |
| 854 base::Bind(&AutofillManager::OnUserDidAcceptUpload, | 855 base::Bind(&AutofillManager::OnUserDidAcceptUpload, |
| 855 weak_ptr_factory_.GetWeakPtr()), | 856 weak_ptr_factory_.GetWeakPtr())); |
| 856 std::move(legal_message)); | |
| 857 client_->LoadRiskData(base::Bind(&AutofillManager::OnDidGetUploadRiskData, | 857 client_->LoadRiskData(base::Bind(&AutofillManager::OnDidGetUploadRiskData, |
| 858 weak_ptr_factory_.GetWeakPtr())); | 858 weak_ptr_factory_.GetWeakPtr())); |
| 859 AutofillMetrics::LogCardUploadDecisionMetric( | 859 AutofillMetrics::LogCardUploadDecisionMetric( |
| 860 AutofillMetrics::UPLOAD_OFFERED); | 860 AutofillMetrics::UPLOAD_OFFERED); |
| 861 } else { | 861 } else { |
| 862 // If the upload details request failed, fall back to a local save. The | 862 // If the upload details request failed, fall back to a local save. The |
| 863 // reasoning here is as follows: | 863 // reasoning here is as follows: |
| 864 // - This will sometimes fail intermittently, in which case it might be | 864 // - This will sometimes fail intermittently, in which case it might be |
| 865 // better to not fall back, because sometimes offering upload and sometimes | 865 // better to not fall back, because sometimes offering upload and sometimes |
| 866 // offering local save is a poor user experience. | 866 // offering local save is a poor user experience. |
| 867 // - However, in some cases, our local configuration limiting the feature to | 867 // - However, in some cases, our local configuration limiting the feature to |
| 868 // countries that Payments is known to support will not match Payments' own | 868 // countries that Payments is known to support will not match Payments' own |
| 869 // determination of what country the user is located in. In these cases, | 869 // determination of what country the user is located in. In these cases, |
| 870 // the upload details request will consistently fail and if we don't fall | 870 // the upload details request will consistently fail and if we don't fall |
| 871 // back to a local save then the user will never be offered any kind of | 871 // back to a local save then the user will never be offered any kind of |
| 872 // credit card save. | 872 // credit card save. |
| 873 client_->ConfirmSaveCreditCardLocally(base::Bind( | 873 client_->ConfirmSaveCreditCardLocally( |
| 874 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), | 874 upload_request_.card, |
| 875 base::Unretained(personal_data_), upload_request_.card)); | 875 base::Bind( |
| 876 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), |
| 877 base::Unretained(personal_data_), upload_request_.card)); |
| 876 AutofillMetrics::LogCardUploadDecisionMetric( | 878 AutofillMetrics::LogCardUploadDecisionMetric( |
| 877 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED); | 879 AutofillMetrics::UPLOAD_NOT_OFFERED_GET_UPLOAD_DETAILS_FAILED); |
| 878 } | 880 } |
| 879 } | 881 } |
| 880 | 882 |
| 881 void AutofillManager::OnDidUploadCard( | 883 void AutofillManager::OnDidUploadCard( |
| 882 AutofillClient::PaymentsRpcResult result) { | 884 AutofillClient::PaymentsRpcResult result) { |
| 883 // We don't do anything user-visible if the upload attempt fails. | 885 // We don't do anything user-visible if the upload attempt fails. |
| 884 // TODO(jdonnelly): Log duration. | 886 // TODO(jdonnelly): Log duration. |
| 885 } | 887 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 969 if (imported_credit_card) { | 971 if (imported_credit_card) { |
| 970 // Don't offer to save any cards that were recently unmasked. | 972 // Don't offer to save any cards that were recently unmasked. |
| 971 for (const CreditCard& unmasked_card : recently_unmasked_cards_) { | 973 for (const CreditCard& unmasked_card : recently_unmasked_cards_) { |
| 972 if (unmasked_card.TypeAndLastFourDigits() == | 974 if (unmasked_card.TypeAndLastFourDigits() == |
| 973 imported_credit_card->TypeAndLastFourDigits()) | 975 imported_credit_card->TypeAndLastFourDigits()) |
| 974 return; | 976 return; |
| 975 } | 977 } |
| 976 | 978 |
| 977 upload_request_ = payments::PaymentsClient::UploadRequestDetails(); | 979 upload_request_ = payments::PaymentsClient::UploadRequestDetails(); |
| 978 if (!IsCreditCardUploadEnabled()) { | 980 if (!IsCreditCardUploadEnabled()) { |
| 979 client_->ConfirmSaveCreditCardLocally(base::Bind( | 981 client_->ConfirmSaveCreditCardLocally( |
| 980 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), | 982 *imported_credit_card, |
| 981 base::Unretained(personal_data_), *imported_credit_card)); | 983 base::Bind( |
| 984 base::IgnoreResult(&PersonalDataManager::SaveImportedCreditCard), |
| 985 base::Unretained(personal_data_), *imported_credit_card)); |
| 982 } else { | 986 } else { |
| 983 // Check for a CVC in order to determine whether we can prompt the user to | 987 // Check for a CVC in order to determine whether we can prompt the user to |
| 984 // upload their card. | 988 // upload their card. |
| 985 for (const auto& field : submitted_form) { | 989 for (const auto& field : submitted_form) { |
| 986 if (field->Type().GetStorableType() == CREDIT_CARD_VERIFICATION_CODE) { | 990 if (field->Type().GetStorableType() == CREDIT_CARD_VERIFICATION_CODE) { |
| 987 upload_request_.cvc = field->value; | 991 upload_request_.cvc = field->value; |
| 988 break; | 992 break; |
| 989 } | 993 } |
| 990 } | 994 } |
| 991 | 995 |
| (...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1702 if (i > 0) | 1706 if (i > 0) |
| 1703 fputs("Next oldest form:\n", file); | 1707 fputs("Next oldest form:\n", file); |
| 1704 } | 1708 } |
| 1705 fputs("\n", file); | 1709 fputs("\n", file); |
| 1706 | 1710 |
| 1707 fclose(file); | 1711 fclose(file); |
| 1708 } | 1712 } |
| 1709 #endif // ENABLE_FORM_DEBUG_DUMP | 1713 #endif // ENABLE_FORM_DEBUG_DUMP |
| 1710 | 1714 |
| 1711 } // namespace autofill | 1715 } // namespace autofill |
| OLD | NEW |