| Index: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| index c5295ed9f21c61ff7a76f44f14c2e04b88bdad1d..29ec43f038399a030c68a3941b174ebf680d74b9 100644
|
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc
|
| @@ -532,6 +532,28 @@ base::string16 GenerateRandomCardNumber() {
|
| return ASCIIToUTF16(card_number);
|
| }
|
|
|
| +gfx::Image CreditCardIconForType(const std::string& credit_card_type) {
|
| + const int input_card_idr = CreditCard::IconResourceId(credit_card_type);
|
| + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| + gfx::Image result = rb.GetImageNamed(input_card_idr);
|
| + if (input_card_idr == IDR_AUTOFILL_CC_GENERIC) {
|
| + // When the credit card type is unknown, no image should be shown. However,
|
| + // to simplify the view code on Mac, save space for the credit card image by
|
| + // returning a transparent image of the appropriate size.
|
| + result = gfx::Image(gfx::ImageSkiaOperations::CreateTransparentImage(
|
| + result.AsImageSkia(), 0));
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +gfx::Image CvcIconForCreditCardType(const std::string& credit_card_type) {
|
| + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| + if (credit_card_type == autofill::kAmericanExpressCard)
|
| + return rb.GetImageNamed(IDR_CREDIT_CARD_CVC_HINT_AMEX);
|
| +
|
| + return rb.GetImageNamed(IDR_CREDIT_CARD_CVC_HINT);
|
| +}
|
| +
|
| } // namespace
|
|
|
| AutofillDialogViewDelegate::~AutofillDialogViewDelegate() {}
|
| @@ -1510,13 +1532,20 @@ gfx::Image AutofillDialogControllerImpl::SuggestionIconForSection(
|
| }
|
|
|
| gfx::Image AutofillDialogControllerImpl::ExtraSuggestionIconForSection(
|
| - DialogSection section) const {
|
| - if (section == SECTION_CC || section == SECTION_CC_BILLING)
|
| - return IconForField(CREDIT_CARD_VERIFICATION_CODE, string16());
|
| + DialogSection section) {
|
| + if (section != SECTION_CC && section != SECTION_CC_BILLING)
|
| + return gfx::Image();
|
|
|
| - return gfx::Image();
|
| + scoped_ptr<DataModelWrapper> model = CreateWrapper(section);
|
| + if (!model.get())
|
| + return gfx::Image();
|
| +
|
| + return CvcIconForCreditCardType(
|
| + UTF16ToUTF8(model->GetInfo(AutofillType(CREDIT_CARD_TYPE))));
|
| }
|
|
|
| +// TODO(groby): Remove this deprecated method after Mac starts using
|
| +// IconsForFields. http://crbug.com/292876
|
| gfx::Image AutofillDialogControllerImpl::IconForField(
|
| ServerFieldType type, const string16& user_input) const {
|
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| @@ -1540,6 +1569,33 @@ gfx::Image AutofillDialogControllerImpl::IconForField(
|
| return gfx::Image();
|
| }
|
|
|
| +FieldIconMap AutofillDialogControllerImpl::IconsForFields(
|
| + const FieldValueMap& user_inputs) const {
|
| + FieldIconMap result;
|
| + std::string credit_card_type = autofill::kGenericCard;
|
| +
|
| + FieldValueMap::const_iterator credit_card_iter =
|
| + user_inputs.find(CREDIT_CARD_NUMBER);
|
| + if (credit_card_iter != user_inputs.end()) {
|
| + const string16& credit_card_number = credit_card_iter->second;
|
| + credit_card_type = CreditCard::GetCreditCardType(credit_card_number);
|
| + result[CREDIT_CARD_NUMBER] = CreditCardIconForType(credit_card_type);
|
| + }
|
| +
|
| + if (!user_inputs.count(CREDIT_CARD_VERIFICATION_CODE))
|
| + return result;
|
| +
|
| + result[CREDIT_CARD_VERIFICATION_CODE] =
|
| + CvcIconForCreditCardType(credit_card_type);
|
| +
|
| + return result;
|
| +}
|
| +
|
| +bool AutofillDialogControllerImpl::FieldControlsIcons(
|
| + ServerFieldType type) const {
|
| + return type == CREDIT_CARD_NUMBER;
|
| +}
|
| +
|
| // TODO(estade): Replace all the error messages here with more helpful and
|
| // translateable ones. TODO(groby): Also add tests.
|
| string16 AutofillDialogControllerImpl::InputValidityMessage(
|
|
|