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..c1e219eeb455e198b60b6cd2b0ceed66acb72bde 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; |
+ GetOrCreateFullCardRequest()->GetFullCard( |
+ masked_card_, AutofillClient::UNMASK_FOR_AUTOFILL, |
+ weak_ptr_factory_.GetWeakPtr()); |
credit_card_form_event_logger_->OnDidSelectMaskedServerCardSuggestion(); |
return; |
} |
@@ -625,7 +622,8 @@ void AutofillManager::FillOrPreviewCreditCardForm( |
} |
FillOrPreviewDataModelForm(action, query_id, form, field, credit_card, |
- true /* is_credit_card */); |
+ true /* is_credit_card */, |
+ base::string16() /* cvc */); |
} |
void AutofillManager::FillOrPreviewProfileForm( |
@@ -638,7 +636,8 @@ 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() /* cvc */); |
} |
void AutofillManager::FillOrPreviewForm( |
@@ -667,14 +666,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 +822,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(); |
} |
+payments::FullCardRequest* AutofillManager::GetOrCreateFullCardRequest() { |
+ if (!full_card_request_) { |
+ full_card_request_.reset(new payments::FullCardRequest( |
+ client_, payments_client_.get(), personal_data_)); |
+ } |
+ |
+ return full_card_request_.get(); |
+} |
+ |
void AutofillManager::SetTestDelegate(AutofillManagerTestDelegate* delegate) { |
test_delegate_ = delegate; |
} |
@@ -877,49 +886,14 @@ 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); |
+ DCHECK(full_card_request_); |
+ full_card_request_->OnDidGetRealPan(result, real_pan); |
} |
void AutofillManager::OnDidGetUploadDetails( |
@@ -968,12 +942,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 +1238,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 +1362,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 +1438,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) |