Chromium Code Reviews| 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 205b7f6b228553bfd414cc2834e893a84e925557..d5163741512fdb3955e44ddc03b9754c6e490c79 100644 |
| --- a/components/autofill/core/browser/autofill_manager.cc |
| +++ b/components/autofill/core/browser/autofill_manager.cc |
| @@ -608,16 +608,13 @@ void AutofillManager::FillOrPreviewCreditCardForm( |
| if (action == AutofillDriver::FORM_DATA_ACTION_FILL) { |
| if (credit_card.record_type() == CreditCard::MASKED_SERVER_CARD && |
| WillFillCreditCardNumber(form, field)) { |
| - unmask_request_.card = credit_card; |
| unmasking_query_id_ = query_id; |
| unmasking_form_ = form; |
| unmasking_field_ = field; |
| - payments_client_->Prepare(); |
| - client_->ShowUnmaskPrompt(unmask_request_.card, |
| - AutofillClient::UNMASK_FOR_AUTOFILL, |
| - weak_ptr_factory_.GetWeakPtr()); |
| - client_->LoadRiskData(base::Bind(&AutofillManager::OnDidGetUnmaskRiskData, |
| - weak_ptr_factory_.GetWeakPtr())); |
| + masked_card_ = credit_card; |
| + full_card_request()->GetFullCard(masked_card_, |
| + AutofillClient::UNMASK_FOR_AUTOFILL, |
| + weak_ptr_factory_.GetWeakPtr()); |
| credit_card_form_event_logger_->OnDidSelectMaskedServerCardSuggestion(); |
| return; |
| } |
| @@ -625,7 +622,7 @@ void AutofillManager::FillOrPreviewCreditCardForm( |
| } |
| FillOrPreviewDataModelForm(action, query_id, form, field, credit_card, |
| - true /* is_credit_card */); |
| + true /* is_credit_card */, base::string16()); |
|
Mathieu
2016/04/22 17:58:35
nit: I would add /* cvc */ here and below
please use gerrit instead
2016/04/22 20:50:18
Done.
|
| } |
| void AutofillManager::FillOrPreviewProfileForm( |
| @@ -638,7 +635,7 @@ void AutofillManager::FillOrPreviewProfileForm( |
| address_form_event_logger_->OnDidFillSuggestion(profile); |
| FillOrPreviewDataModelForm(action, query_id, form, field, profile, |
| - false /* is_credit_card */); |
| + false /* is_credit_card */, base::string16()); |
| } |
| void AutofillManager::FillOrPreviewForm( |
| @@ -667,14 +664,15 @@ void AutofillManager::FillOrPreviewForm( |
| void AutofillManager::FillCreditCardForm(int query_id, |
| const FormData& form, |
| const FormFieldData& field, |
| - const CreditCard& credit_card) { |
| + const CreditCard& credit_card, |
| + const base::string16& cvc) { |
| if (!IsValidFormData(form) || !IsValidFormFieldData(field) || |
| !driver_->RendererIsAvailable()) { |
| return; |
| } |
| FillOrPreviewDataModelForm(AutofillDriver::FORM_DATA_ACTION_FILL, query_id, |
| - form, field, credit_card, true); |
| + form, field, credit_card, true, cvc); |
| } |
| void AutofillManager::OnFocusNoLongerOnForm() { |
| @@ -822,13 +820,22 @@ void AutofillManager::RemoveAutocompleteEntry(const base::string16& name, |
| } |
| bool AutofillManager::IsShowingUnmaskPrompt() { |
| - return unmask_request_.card.Compare(CreditCard()) != 0; |
| + return full_card_request_ && full_card_request_->IsGettingFullCard(); |
| } |
| const std::vector<FormStructure*>& AutofillManager::GetFormStructures() { |
| return form_structures_.get(); |
| } |
| +FullCardRequest* AutofillManager::full_card_request() { |
|
Mathieu
2016/04/22 17:58:35
nit: A getter with non trivial logic should probab
please use gerrit instead
2016/04/22 20:50:18
Done.
|
| + if (!full_card_request_) { |
| + full_card_request_.reset(new FullCardRequest( |
| + driver_->GetURLRequestContext(), client_, personal_data_)); |
| + } |
| + |
| + return full_card_request_.get(); |
| +} |
| + |
| void AutofillManager::SetTestDelegate(AutofillManagerTestDelegate* delegate) { |
| test_delegate_ = delegate; |
| } |
| @@ -877,49 +884,13 @@ void AutofillManager::OnLoadedServerPredictions( |
| driver_->SendAutofillTypePredictionsToRenderer(queried_forms); |
| } |
| -void AutofillManager::OnUnmaskResponse(const UnmaskResponse& response) { |
| - unmask_request_.user_response = response; |
| - if (!unmask_request_.risk_data.empty()) { |
| - real_pan_request_timestamp_ = base::Time::Now(); |
| - payments_client_->UnmaskCard(unmask_request_); |
| - } |
| -} |
| - |
| -void AutofillManager::OnUnmaskPromptClosed() { |
| - payments_client_->CancelRequest(); |
| - driver_->RendererShouldClearPreviewedForm(); |
| - unmask_request_ = payments::PaymentsClient::UnmaskRequestDetails(); |
| -} |
| - |
| IdentityProvider* AutofillManager::GetIdentityProvider() { |
| return client_->GetIdentityProvider(); |
| } |
| void AutofillManager::OnDidGetRealPan(AutofillClient::PaymentsRpcResult result, |
| const std::string& real_pan) { |
| - AutofillMetrics::LogRealPanDuration( |
| - base::Time::Now() - real_pan_request_timestamp_, result); |
| - if (!real_pan.empty()) { |
| - DCHECK_EQ(AutofillClient::SUCCESS, result); |
| - credit_card_form_event_logger_->OnDidFillSuggestion(unmask_request_.card); |
| - unmask_request_.card.set_record_type(CreditCard::FULL_SERVER_CARD); |
| - unmask_request_.card.SetNumber(base::UTF8ToUTF16(real_pan)); |
| - if (!unmask_request_.user_response.exp_month.empty()) { |
| - unmask_request_.card.SetRawInfo(CREDIT_CARD_EXP_MONTH, |
| - unmask_request_.user_response.exp_month); |
| - } |
| - if (!unmask_request_.user_response.exp_year.empty()) { |
| - unmask_request_.card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, |
| - unmask_request_.user_response.exp_year); |
| - } |
| - if (unmask_request_.user_response.should_store_pan) |
| - personal_data_->UpdateServerCreditCard(unmask_request_.card); |
| - |
| - FillCreditCardForm(unmasking_query_id_, unmasking_form_, unmasking_field_, |
| - unmask_request_.card); |
| - } |
| - |
| - client_->OnUnmaskVerificationResult(result); |
| + NOTREACHED(); |
| } |
| void AutofillManager::OnDidGetUploadDetails( |
| @@ -968,12 +939,16 @@ void AutofillManager::OnDidUploadCard( |
| // TODO(jdonnelly): Log duration. |
| } |
| -void AutofillManager::OnDidGetUnmaskRiskData(const std::string& risk_data) { |
| - unmask_request_.risk_data = risk_data; |
| - if (!unmask_request_.user_response.cvc.empty()) { |
| - real_pan_request_timestamp_ = base::Time::Now(); |
| - payments_client_->UnmaskCard(unmask_request_); |
| - } |
| +void AutofillManager::OnFullCardDetails(const CreditCard& card, |
| + const base::string16& cvc) { |
| + credit_card_form_event_logger_->OnDidFillSuggestion(masked_card_); |
| + FillCreditCardForm(unmasking_query_id_, unmasking_form_, unmasking_field_, |
| + card, cvc); |
| + masked_card_ = CreditCard(); |
| +} |
| + |
| +void AutofillManager::OnFullCardError() { |
| + driver_->RendererShouldClearPreviewedForm(); |
| } |
| void AutofillManager::OnUserDidAcceptUpload() { |
| @@ -1260,7 +1235,7 @@ void AutofillManager::Reset() { |
| user_did_type_ = false; |
| user_did_autofill_ = false; |
| user_did_edit_autofilled_field_ = false; |
| - unmask_request_ = payments::PaymentsClient::UnmaskRequestDetails(); |
| + masked_card_ = CreditCard(); |
| unmasking_query_id_ = -1; |
| unmasking_form_ = FormData(); |
| unmasking_field_ = FormFieldData(); |
| @@ -1384,7 +1359,8 @@ void AutofillManager::FillOrPreviewDataModelForm( |
| const FormData& form, |
| const FormFieldData& field, |
| const AutofillDataModel& data_model, |
| - bool is_credit_card) { |
| + bool is_credit_card, |
| + const base::string16& cvc) { |
| FormStructure* form_structure = NULL; |
| AutofillField* autofill_field = NULL; |
| if (!GetCachedFormAndField(form, field, &form_structure, &autofill_field)) |
| @@ -1459,10 +1435,7 @@ void AutofillManager::FillOrPreviewDataModelForm( |
| if (is_credit_card && |
| cached_field->Type().GetStorableType() == |
| CREDIT_CARD_VERIFICATION_CODE) { |
| - // If this is |unmask_request_.card|, |unmask_request_.user_response.cvc| |
| - // should be non-empty and vice versa. |
| - value = unmask_request_.user_response.cvc; |
| - DCHECK_EQ(&unmask_request_.card == &data_model, !value.empty()); |
| + value = cvc; |
| } else if (is_credit_card && IsCreditCardExpirationType( |
| cached_field->Type().GetStorableType()) && |
| static_cast<const CreditCard*>(&data_model) |