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 | 8 |
9 #include <limits> | 9 #include <limits> |
10 #include <map> | 10 #include <map> |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 return; | 554 return; |
555 } | 555 } |
556 | 556 |
557 if (is_credit_card && action == AutofillDriver::FORM_DATA_ACTION_FILL) { | 557 if (is_credit_card && action == AutofillDriver::FORM_DATA_ACTION_FILL) { |
558 const CreditCard* card = static_cast<const CreditCard*>(data_model); | 558 const CreditCard* card = static_cast<const CreditCard*>(data_model); |
559 if (card->record_type() == CreditCard::MASKED_SERVER_CARD) { | 559 if (card->record_type() == CreditCard::MASKED_SERVER_CARD) { |
560 unmasking_card_ = *card; | 560 unmasking_card_ = *card; |
561 unmasking_query_id_ = query_id; | 561 unmasking_query_id_ = query_id; |
562 unmasking_form_ = form; | 562 unmasking_form_ = form; |
563 unmasking_field_ = field; | 563 unmasking_field_ = field; |
564 // TODO(estade): uncomment this after the demo. | 564 real_pan_client_.Prepare(); |
565 // real_pan_client_.Prepare(); | |
566 client()->ShowUnmaskPrompt(unmasking_card_, | 565 client()->ShowUnmaskPrompt(unmasking_card_, |
567 weak_ptr_factory_.GetWeakPtr()); | 566 weak_ptr_factory_.GetWeakPtr()); |
568 return; | 567 return; |
569 } | 568 } |
570 } | 569 } |
571 | 570 |
572 FillOrPreviewDataModelForm(action, query_id, form, field, data_model, variant, | 571 FillOrPreviewDataModelForm(action, query_id, form, field, data_model, variant, |
573 is_credit_card); | 572 is_credit_card); |
574 } | 573 } |
575 | 574 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 // account creation forms. | 682 // account creation forms. |
684 driver_->DetectAccountCreationForms(form_structures_.get()); | 683 driver_->DetectAccountCreationForms(form_structures_.get()); |
685 | 684 |
686 // If the corresponding flag is set, annotate forms with the predicted types. | 685 // If the corresponding flag is set, annotate forms with the predicted types. |
687 driver_->SendAutofillTypePredictionsToRenderer(form_structures_.get()); | 686 driver_->SendAutofillTypePredictionsToRenderer(form_structures_.get()); |
688 } | 687 } |
689 | 688 |
690 void AutofillManager::OnUnmaskResponse(const base::string16& cvc, | 689 void AutofillManager::OnUnmaskResponse(const base::string16& cvc, |
691 const base::string16& exp_month, | 690 const base::string16& exp_month, |
692 const base::string16& exp_year) { | 691 const base::string16& exp_year) { |
693 // Most of this function is demo code. The real code should look something | |
694 // like: | |
695 // real_pan_client_.UnmaskCard(unmasking_card_, cvc, exp_month, exp_year); | |
696 | |
697 unmasking_cvc_ = cvc; | 692 unmasking_cvc_ = cvc; |
698 // TODO(estade): fake verification: assume 123/1234 is the correct cvc. | 693 // TODO(estade): use month/year. |
699 if (StartsWithASCII(base::UTF16ToASCII(cvc), "123", true)) { | 694 real_pan_client_.UnmaskCard(unmasking_card_, base::UTF16ToASCII(cvc)); |
700 base::MessageLoop::current()->PostDelayedTask( | |
701 FROM_HERE, base::Bind(&AutofillManager::OnUnmaskVerificationResult, | |
702 base::Unretained(this), true), | |
703 base::TimeDelta::FromSeconds(2)); | |
704 } else { | |
705 base::MessageLoop::current()->PostDelayedTask( | |
706 FROM_HERE, base::Bind(&AutofillManager::OnUnmaskVerificationResult, | |
707 base::Unretained(this), false), | |
708 base::TimeDelta::FromSeconds(2)); | |
709 } | |
710 } | 695 } |
711 | 696 |
712 void AutofillManager::OnUnmaskPromptClosed() { | 697 void AutofillManager::OnUnmaskPromptClosed() { |
713 real_pan_client_.CancelRequest(); | 698 real_pan_client_.CancelRequest(); |
714 driver_->RendererShouldClearPreviewedForm(); | 699 driver_->RendererShouldClearPreviewedForm(); |
715 unmasking_card_ = CreditCard(); | 700 unmasking_card_ = CreditCard(); |
716 unmasking_cvc_.clear(); | 701 unmasking_cvc_.clear(); |
717 } | 702 } |
718 | 703 |
719 IdentityProvider* AutofillManager::GetIdentityProvider() { | 704 IdentityProvider* AutofillManager::GetIdentityProvider() { |
720 return client()->GetIdentityProvider(); | 705 return client()->GetIdentityProvider(); |
721 } | 706 } |
722 | 707 |
723 void AutofillManager::OnDidGetRealPan(const std::string& real_pan) { | 708 void AutofillManager::OnDidGetRealPan(const std::string& real_pan) { |
724 NOTIMPLEMENTED(); | 709 if (!real_pan.empty()) { |
725 } | |
726 | |
727 void AutofillManager::OnUnmaskVerificationResult(bool success) { | |
728 if (success) { | |
729 unmasking_card_.set_record_type(CreditCard::FULL_SERVER_CARD); | 710 unmasking_card_.set_record_type(CreditCard::FULL_SERVER_CARD); |
730 if (unmasking_card_.type() == kAmericanExpressCard) { | 711 unmasking_card_.SetNumber(base::UTF8ToUTF16(real_pan)); |
731 unmasking_card_.SetNumber(base::ASCIIToUTF16("371449635398431")); | |
732 } else if (unmasking_card_.type() == kVisaCard) { | |
733 unmasking_card_.SetNumber(base::ASCIIToUTF16("4012888888881881")); | |
734 } else { | |
735 DCHECK_EQ(kDiscoverCard, unmasking_card_.type()); | |
736 unmasking_card_.SetNumber(base::ASCIIToUTF16("6011000990139424")); | |
737 } | |
738 personal_data_->UpdateServerCreditCard(unmasking_card_); | 712 personal_data_->UpdateServerCreditCard(unmasking_card_); |
739 FillCreditCardForm(unmasking_query_id_, unmasking_form_, unmasking_field_, | 713 FillCreditCardForm(unmasking_query_id_, unmasking_form_, unmasking_field_, |
740 unmasking_card_); | 714 unmasking_card_); |
741 } | 715 } |
742 client()->OnUnmaskVerificationResult(success); | 716 |
| 717 client()->OnUnmaskVerificationResult(!real_pan.empty()); |
743 } | 718 } |
744 | 719 |
745 void AutofillManager::OnDidEndTextFieldEditing() { | 720 void AutofillManager::OnDidEndTextFieldEditing() { |
746 external_delegate_->DidEndTextFieldEditing(); | 721 external_delegate_->DidEndTextFieldEditing(); |
747 } | 722 } |
748 | 723 |
749 bool AutofillManager::IsAutofillEnabled() const { | 724 bool AutofillManager::IsAutofillEnabled() const { |
750 return client_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled); | 725 return client_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled); |
751 } | 726 } |
752 | 727 |
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1350 return false; | 1325 return false; |
1351 | 1326 |
1352 // Disregard forms that we wouldn't ever autofill in the first place. | 1327 // Disregard forms that we wouldn't ever autofill in the first place. |
1353 if (!form.ShouldBeParsed()) | 1328 if (!form.ShouldBeParsed()) |
1354 return false; | 1329 return false; |
1355 | 1330 |
1356 return true; | 1331 return true; |
1357 } | 1332 } |
1358 | 1333 |
1359 } // namespace autofill | 1334 } // namespace autofill |
OLD | NEW |