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

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

Issue 873403004: Autofill - show expiration date in CVC prompt when card is expired. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 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
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 cf21a1881c1e93c175595f9b23a0cea6bdfe2b64..8d84fc980d8eb2860d3a1ce50b30db66b1b9c45e 100644
--- a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
+++ b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
@@ -4,6 +4,7 @@
#include "base/basictypes.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/ui/autofill/autofill_dialog_models.h"
#include "chrome/browser/ui/autofill/card_unmask_prompt_controller.h"
#include "chrome/browser/ui/autofill/card_unmask_prompt_view.h"
#include "chrome/grit/generated_resources.h"
@@ -11,6 +12,8 @@
#include "grit/theme_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
+#include "ui/views/controls/combobox/combobox.h"
+#include "ui/views/controls/combobox/combobox_listener.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/textfield/textfield.h"
@@ -25,11 +28,16 @@ namespace autofill {
namespace {
class CardUnmaskPromptViews : public CardUnmaskPromptView,
+ views::ComboboxListener,
views::DialogDelegateView,
views::TextfieldController {
public:
explicit CardUnmaskPromptViews(CardUnmaskPromptController* controller)
- : controller_(controller), cvc_input_(nullptr), message_label_(nullptr) {}
+ : controller_(controller),
+ cvc_input_(nullptr),
+ month_input_(nullptr),
+ year_input_(nullptr),
+ message_label_(nullptr) {}
~CardUnmaskPromptViews() override {
if (controller_)
@@ -48,7 +56,7 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
}
void DisableAndWaitForVerification() override {
- cvc_input_->SetEnabled(false);
+ SetInputsEnabled(false);
message_label_->SetText(base::ASCIIToUTF16("Verifying..."));
message_label_->SetVisible(true);
GetDialogClientView()->UpdateDialogButtons();
@@ -63,13 +71,22 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
base::Unretained(this)),
base::TimeDelta::FromSeconds(1));
} else {
- cvc_input_->SetEnabled(true);
+ SetInputsEnabled(true);
message_label_->SetText(base::ASCIIToUTF16("Verification error."));
GetDialogClientView()->UpdateDialogButtons();
}
Layout();
}
+ void SetInputsEnabled(bool enabled) {
+ cvc_input_->SetEnabled(enabled);
+
+ if (month_input_)
+ month_input_->SetEnabled(enabled);
+ if (year_input_)
+ year_input_->SetEnabled(enabled);
+ }
+
// views::DialogDelegateView
View* GetContentsView() override {
InitIfNecessary();
@@ -114,7 +131,13 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
DCHECK_EQ(ui::DIALOG_BUTTON_OK, button);
return cvc_input_->enabled() &&
- controller_->InputTextIsValid(cvc_input_->text());
+ controller_->InputTextIsValid(cvc_input_->text()) &&
+ (!month_input_ ||
+ month_input_->selected_index() !=
+ month_combobox_model_.GetDefaultIndex()) &&
+ (year_input_ ||
brettw 2015/01/27 00:12:37 Did you mean !year_input_ here?
Evan Stade 2015/01/27 00:14:42 yes good catch.
+ year_input_->selected_index() !=
+ year_combobox_model_.GetDefaultIndex());
}
views::View* GetInitiallyFocusedView() override { return cvc_input_; }
@@ -127,7 +150,14 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
if (!controller_)
return true;
- controller_->OnUnmaskResponse(cvc_input_->text());
+ controller_->OnUnmaskResponse(
+ cvc_input_->text(),
+ month_input_
+ ? month_combobox_model_.GetItemAt(month_input_->selected_index())
+ : base::string16(),
+ year_input_
+ ? year_combobox_model_.GetItemAt(year_input_->selected_index())
+ : base::string16());
return false;
}
@@ -137,6 +167,11 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
GetDialogClientView()->UpdateDialogButtons();
}
+ // views::ComboboxListener
+ void OnPerformAction(views::Combobox* combobox) override {
+ GetDialogClientView()->UpdateDialogButtons();
+ }
+
private:
void InitIfNecessary() {
if (has_children())
@@ -151,27 +186,36 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
instructions->SetHorizontalAlignment(gfx::ALIGN_LEFT);
AddChildView(instructions);
- views::View* cvc_container = new views::View();
- cvc_container->SetLayoutManager(
+ views::View* input_row = new views::View();
+ input_row->SetLayoutManager(
new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 5));
- AddChildView(cvc_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_);
+ year_input_ = new views::Combobox(&year_combobox_model_);
+ year_input_->set_listener(this);
+ input_row->AddChildView(year_input_);
+ }
cvc_input_ = new views::Textfield();
cvc_input_->set_controller(this);
cvc_input_->set_placeholder_text(
l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PLACEHOLDER_CVC));
cvc_input_->set_default_width_in_chars(10);
- cvc_container->AddChildView(cvc_input_);
+ input_row->AddChildView(cvc_input_);
views::ImageView* cvc_image = new views::ImageView();
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
cvc_image->SetImage(rb.GetImageSkiaNamed(controller_->GetCvcImageRid()));
- cvc_container->AddChildView(cvc_image);
+ input_row->AddChildView(cvc_image);
message_label_ = new views::Label();
- cvc_container->AddChildView(message_label_);
+ input_row->AddChildView(message_label_);
message_label_->SetVisible(false);
}
@@ -181,6 +225,13 @@ class CardUnmaskPromptViews : public CardUnmaskPromptView,
views::Textfield* cvc_input_;
+ // These will be null when expiration date is not required.
+ views::Combobox* month_input_;
+ views::Combobox* year_input_;
+
+ MonthComboboxModel month_combobox_model_;
+ YearComboboxModel year_combobox_model_;
+
// TODO(estade): this is a temporary standin in place of some spinner UI
// as well as a better error message.
views::Label* message_label_;
« no previous file with comments | « chrome/browser/ui/autofill/card_unmask_prompt_controller_impl.cc ('k') | components/autofill/core/browser/autofill_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698