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

Unified Diff: chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc

Issue 1132933004: Handle re-issued cards in unmasking prompt. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sky review Created 5 years, 7 months 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
« no previous file with comments | « chrome/browser/ui/views/autofill/card_unmask_prompt_views.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
diff --git a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
index 1d9f307a1688c879005be781a31ea7817e42c97c..0952195da30e5eb6241d865fa7f5b57d9908bd0a 100644
--- a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
+++ b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
@@ -27,6 +27,7 @@
#include "ui/views/controls/combobox/combobox.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
+#include "ui/views/controls/link.h"
#include "ui/views/controls/throbber.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/widget/widget.h"
@@ -57,6 +58,7 @@ CardUnmaskPromptViews::CardUnmaskPromptViews(
cvc_input_(nullptr),
month_input_(nullptr),
year_input_(nullptr),
+ new_card_link_(nullptr),
error_icon_(nullptr),
error_label_(nullptr),
storage_row_(nullptr),
@@ -116,11 +118,16 @@ void CardUnmaskPromptViews::GotVerificationResult(
if (allow_retry) {
SetInputsEnabled(true);
- // If there is more than one input showing, don't mark anything as
- // invalid since we don't know the location of the problem.
- if (!controller_->ShouldRequestExpirationDate())
+ if (!controller_->ShouldRequestExpirationDate()) {
+ // If there is more than one input showing, don't mark anything as
+ // invalid since we don't know the location of the problem.
cvc_input_->SetInvalid(true);
+ // Show a "New card?" link, which when clicked will cause us to ask
+ // for expiration date.
+ ShowNewCardLink();
+ }
+
// TODO(estade): When do we hide |error_label_|?
SetRetriableErrorMessage(error_message);
} else {
@@ -134,6 +141,21 @@ void CardUnmaskPromptViews::GotVerificationResult(
Layout();
}
+void CardUnmaskPromptViews::LinkClicked(views::Link* source, int event_flags) {
+ DCHECK_EQ(source, new_card_link_);
+ controller_->NewCardLinkClicked();
+ for (int i = 0; i < input_row_->child_count(); ++i)
+ input_row_->child_at(i)->SetVisible(true);
+
+ new_card_link_->SetVisible(false);
+ input_row_->InvalidateLayout();
+ cvc_input_->SetInvalid(false);
+ cvc_input_->SetText(base::string16());
+ GetDialogClientView()->UpdateDialogButtons();
+ GetWidget()->UpdateWindowTitle();
+ SetRetriableErrorMessage(base::string16());
+}
+
void CardUnmaskPromptViews::SetRetriableErrorMessage(
const base::string16& message) {
if (message.empty()) {
@@ -162,10 +184,20 @@ void CardUnmaskPromptViews::SetInputsEnabled(bool enabled) {
cvc_input_->SetEnabled(enabled);
if (storage_checkbox_)
storage_checkbox_->SetEnabled(enabled);
- if (month_input_)
- month_input_->SetEnabled(enabled);
- if (year_input_)
- year_input_->SetEnabled(enabled);
+ month_input_->SetEnabled(enabled);
+ year_input_->SetEnabled(enabled);
+}
+
+void CardUnmaskPromptViews::ShowNewCardLink() {
+ if (new_card_link_)
+ return;
+
+ new_card_link_ = new views::Link(
+ l10n_util::GetStringUTF16(IDS_AUTOFILL_CARD_UNMASK_NEW_CARD_LINK));
+ new_card_link_->SetBorder(views::Border::CreateEmptyBorder(0, 7, 0, 0));
+ new_card_link_->SetUnderline(false);
+ new_card_link_->set_listener(this);
+ input_row_->AddChildView(new_card_link_);
}
views::View* CardUnmaskPromptViews::GetContentsView() {
@@ -290,10 +322,12 @@ bool CardUnmaskPromptViews::Accept() {
controller_->OnUnmaskResponse(
cvc_input_->text(),
- month_input_ ? month_input_->GetTextForRow(month_input_->selected_index())
- : base::string16(),
- year_input_ ? year_input_->GetTextForRow(year_input_->selected_index())
- : base::string16(),
+ month_input_->visible()
+ ? month_input_->GetTextForRow(month_input_->selected_index())
+ : base::string16(),
+ year_input_->visible()
+ ? year_input_->GetTextForRow(year_input_->selected_index())
+ : base::string16(),
storage_checkbox_ ? storage_checkbox_->checked() : false);
return false;
}
@@ -377,18 +411,21 @@ void CardUnmaskPromptViews::InitIfNecessary() {
new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 5));
controls_container->AddChildView(input_row_);
- if (controller_->ShouldRequestExpirationDate()) {
- month_input_ = new views::Combobox(&month_combobox_model_);
- month_input_->set_listener(this);
- input_row_->AddChildView(month_input_);
- views::Label* separator = new views::Label(l10n_util::GetStringUTF16(
- IDS_AUTOFILL_CARD_UNMASK_EXPIRATION_DATE_SEPARATOR));
- separator->SetEnabledColor(kGreyTextColor);
- input_row_->AddChildView(separator);
- year_input_ = new views::Combobox(&year_combobox_model_);
- year_input_->set_listener(this);
- input_row_->AddChildView(year_input_);
- input_row_->AddChildView(new views::Label(base::ASCIIToUTF16(" ")));
+ month_input_ = new views::Combobox(&month_combobox_model_);
+ month_input_->set_listener(this);
+ input_row_->AddChildView(month_input_);
+ views::Label* separator = new views::Label(l10n_util::GetStringUTF16(
+ IDS_AUTOFILL_CARD_UNMASK_EXPIRATION_DATE_SEPARATOR));
+ separator->SetEnabledColor(kGreyTextColor);
+ input_row_->AddChildView(separator);
+ year_input_ = new views::Combobox(&year_combobox_model_);
+ year_input_->set_listener(this);
+ input_row_->AddChildView(year_input_);
+ input_row_->AddChildView(new views::Label(base::ASCIIToUTF16(" ")));
+ // Hide all of the above as appropriate.
+ if (!controller_->ShouldRequestExpirationDate()) {
+ for (int i = 0; i < input_row_->child_count(); ++i)
+ input_row_->child_at(i)->SetVisible(false);
}
cvc_input_ = new DecoratedTextfield(
« no previous file with comments | « chrome/browser/ui/views/autofill/card_unmask_prompt_views.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698