Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Unified Diff: components/autofill/core/browser/autofill_cc_infobar_delegate.cc

Issue 1540423004: Add card details and legal message to Android save credit card infobar. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Initial draft Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 69f2955d80e818f83b3ff6555e5b146b4391b2de..5af268d19ea19c70482c64e5a3840e5341307f8c 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"
@@ -18,32 +22,70 @@
#include "url/gurl.h"
namespace autofill {
+namespace {
+
+// Number of card details to show in the details section of the infobar.
+const int kNumberOfCards = 1;
+
+} // namespace
// static
void AutofillCCInfoBarDelegate::CreateForLocalSave(
infobars::InfoBarManager* infobar_manager,
- const base::Closure& save_card_callback) {
- infobar_manager->AddInfoBar(
- infobar_manager->CreateConfirmInfoBar(scoped_ptr<ConfirmInfoBarDelegate>(
- new AutofillCCInfoBarDelegate(false, save_card_callback))));
+ const base::Closure& save_card_callback,
+ const CreditCard& card) {
+ scoped_ptr<base::DictionaryValue> no_legal_message;
+ infobar_manager->AddInfoBar(infobar_manager->CreateConfirmInfoBar(
+ scoped_ptr<ConfirmInfoBarDelegate>(new AutofillCCInfoBarDelegate(
+ false, save_card_callback, card, std::move(no_legal_message)))));
}
// static
void AutofillCCInfoBarDelegate::CreateForUpload(
infobars::InfoBarManager* infobar_manager,
- const base::Closure& save_card_callback) {
- infobar_manager->AddInfoBar(
- infobar_manager->CreateConfirmInfoBar(scoped_ptr<ConfirmInfoBarDelegate>(
- new AutofillCCInfoBarDelegate(true, save_card_callback))));
+ const base::Closure& save_card_callback,
+ const CreditCard& card,
+ scoped_ptr<base::DictionaryValue> legal_message) {
+ infobar_manager->AddInfoBar(infobar_manager->CreateConfirmInfoBar(
+ scoped_ptr<ConfirmInfoBarDelegate>(new AutofillCCInfoBarDelegate(
+ true, save_card_callback, card, std::move(legal_message)))));
}
AutofillCCInfoBarDelegate::AutofillCCInfoBarDelegate(
bool upload,
- const base::Closure& save_card_callback)
+ const base::Closure& save_card_callback,
+ const CreditCard& card,
+ scoped_ptr<base::DictionaryValue> legal_message)
: ConfirmInfoBarDelegate(),
upload_(upload),
save_card_callback_(save_card_callback),
+ card_details_(kNumberOfCards),
had_user_interaction_(false) {
+#if !defined(OS_IOS)
+ // TODO(rouslan): Use credit card issuer images on iOS.
+ // http://crbug.com/535784
+ card_details_.front().icon_id = CreditCard::IconResourceId(
+ CreditCard::GetCreditCardType(card.GetRawInfo(CREDIT_CARD_NUMBER)));
+#endif
+
+ card_details_.front().label = card.LastFourDigitsForDisplay();
+ card_details_.front().sub_label = card.AbbreviatedExpirationDateForDisplay();
+
+ if (legal_message) {
+ LegalMessageLines parsed_legal_message;
+ LegalMessageLine::Parse(*legal_message, &parsed_legal_message);
+ for (const auto& line : parsed_legal_message) {
+ legal_messages_.push_back(Description());
+ legal_messages_.back().text = line.text();
Justin Donnelly 2015/12/30 18:06:37 When we discussed copying LegalMessage into anothe
please use gerrit instead 2016/01/07 01:39:25 Done.
+ for (const auto& link : line.links()) {
+ legal_messages_.back().links.push_back(Description::Link());
+ legal_messages_.back().links.back().start = link.range.start();
+ legal_messages_.back().links.back().end = link.range.end();
+ legal_messages_.back().links.back().url = link.url;
+ }
+ }
+ }
+
AutofillMetrics::LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN);
}
@@ -77,6 +119,16 @@ gfx::VectorIconId AutofillCCInfoBarDelegate::GetVectorIconId() const {
#endif
}
+const std::vector<infobars::InfoBarDelegate::Detail>&
+AutofillCCInfoBarDelegate::GetDetails() const {
+ return card_details_;
+}
+
+const std::vector<infobars::InfoBarDelegate::Description>&
+AutofillCCInfoBarDelegate::GetDescriptions() const {
+ return legal_messages_;
+}
+
bool AutofillCCInfoBarDelegate::ShouldExpire(
const NavigationDetails& details) const {
// The user has submitted a form, causing the page to navigate elsewhere. We

Powered by Google App Engine
This is Rietveld 408576698