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) |