| Index: components/autofill/core/browser/autofill_cc_infobar_delegate.cc
|
| diff --git a/components/autofill/core/browser/autofill_cc_infobar_delegate.cc b/components/autofill/core/browser/autofill_cc_infobar_delegate.cc
|
| index 97703b27c946f9ae13c1dc7779d9b723b876f47e..b36994aba172a129e01eaa42b64a9ceb84b553de 100644
|
| --- a/components/autofill/core/browser/autofill_cc_infobar_delegate.cc
|
| +++ b/components/autofill/core/browser/autofill_cc_infobar_delegate.cc
|
| @@ -4,9 +4,13 @@
|
|
|
| #include "components/autofill/core/browser/autofill_cc_infobar_delegate.h"
|
|
|
| +#include <utility>
|
| +
|
| #include "base/logging.h"
|
| +#include "base/values.h"
|
| #include "build/build_config.h"
|
| #include "components/autofill/core/browser/credit_card.h"
|
| +#include "components/autofill/core/browser/legal_message_line.h"
|
| #include "components/autofill/core/browser/personal_data_manager.h"
|
| #include "components/autofill/core/common/autofill_constants.h"
|
| #include "components/infobars/core/infobar.h"
|
| @@ -14,6 +18,7 @@
|
| #include "grit/components_scaled_resources.h"
|
| #include "grit/components_strings.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| +#include "ui/base/window_open_disposition.h"
|
| #include "ui/gfx/vector_icons_public.h"
|
| #include "url/gurl.h"
|
|
|
| @@ -22,34 +27,58 @@ namespace autofill {
|
| // static
|
| void AutofillCCInfoBarDelegate::CreateForLocalSave(
|
| infobars::InfoBarManager* infobar_manager,
|
| + const CreditCard& card,
|
| const base::Closure& save_card_callback) {
|
| - infobar_manager->AddInfoBar(
|
| - infobar_manager->CreateConfirmInfoBar(scoped_ptr<ConfirmInfoBarDelegate>(
|
| - new AutofillCCInfoBarDelegate(false, save_card_callback))));
|
| + infobar_manager->AddInfoBar(infobar_manager->CreateAutofillCCInfoBar(
|
| + make_scoped_ptr(new AutofillCCInfoBarDelegate(
|
| + false, card, scoped_ptr<base::DictionaryValue>(nullptr),
|
| + save_card_callback))));
|
| }
|
|
|
| // static
|
| void AutofillCCInfoBarDelegate::CreateForUpload(
|
| infobars::InfoBarManager* infobar_manager,
|
| + const CreditCard& card,
|
| + scoped_ptr<base::DictionaryValue> legal_message,
|
| const base::Closure& save_card_callback) {
|
| - infobar_manager->AddInfoBar(
|
| - infobar_manager->CreateConfirmInfoBar(scoped_ptr<ConfirmInfoBarDelegate>(
|
| - new AutofillCCInfoBarDelegate(true, save_card_callback))));
|
| + infobar_manager->AddInfoBar(infobar_manager->CreateAutofillCCInfoBar(
|
| + make_scoped_ptr(new AutofillCCInfoBarDelegate(
|
| + true, card, std::move(legal_message), save_card_callback))));
|
| +}
|
| +
|
| +AutofillCCInfoBarDelegate::~AutofillCCInfoBarDelegate() {
|
| + if (!had_user_interaction_)
|
| + LogUserAction(AutofillMetrics::INFOBAR_IGNORED);
|
| +}
|
| +
|
| +void AutofillCCInfoBarDelegate::OnLegalMessageLinkClicked(GURL url) {
|
| + infobar()->owner()->OpenURL(url, NEW_FOREGROUND_TAB);
|
| }
|
|
|
| AutofillCCInfoBarDelegate::AutofillCCInfoBarDelegate(
|
| bool upload,
|
| + const CreditCard& card,
|
| + scoped_ptr<base::DictionaryValue> legal_message,
|
| const base::Closure& save_card_callback)
|
| : ConfirmInfoBarDelegate(),
|
| upload_(upload),
|
| +#if defined(OS_IOS)
|
| + // TODO(rouslan): Use credit card issuer images on iOS.
|
| + // http://crbug.com/535784
|
| + issuer_icon_id_(kNoIconID),
|
| +#else
|
| + issuer_icon_id_(CreditCard::IconResourceId(
|
| + CreditCard::GetCreditCardType(card.GetRawInfo(CREDIT_CARD_NUMBER)))),
|
| +#endif // defined(OS_IOS)
|
| + card_label_(card.LastFourDigitsForDisplay()),
|
| + card_sub_label_(card.AbbreviatedExpirationDateForDisplay()),
|
| save_card_callback_(save_card_callback),
|
| had_user_interaction_(false) {
|
| - AutofillMetrics::LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN);
|
| -}
|
| + if (legal_message) {
|
| + LegalMessageLine::Parse(*legal_message, &legal_messages_);
|
| + }
|
|
|
| -AutofillCCInfoBarDelegate::~AutofillCCInfoBarDelegate() {
|
| - if (!had_user_interaction_)
|
| - LogUserAction(AutofillMetrics::INFOBAR_IGNORED);
|
| + AutofillMetrics::LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN);
|
| }
|
|
|
| void AutofillCCInfoBarDelegate::LogUserAction(
|
|
|