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) { |
Peter Kasting
2016/01/08 00:34:31
Nit: {} unnecessary
please use gerrit instead
2016/01/12 00:47:25
Done.
|
+ LegalMessageLine::Parse(*legal_message, &legal_messages_); |
+ } |
-AutofillCCInfoBarDelegate::~AutofillCCInfoBarDelegate() { |
- if (!had_user_interaction_) |
- LogUserAction(AutofillMetrics::INFOBAR_IGNORED); |
+ AutofillMetrics::LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN); |
} |
void AutofillCCInfoBarDelegate::LogUserAction( |