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

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

Issue 1021913004: views - fade out more cvc prompt elements during verification process (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 9 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 638e300915628d9b498a5bababf0aade211a44b4..ad879ef60b13af616678e13aa8179880d3ecbff9 100644
--- a/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
+++ b/chrome/browser/ui/views/autofill/card_unmask_prompt_views.cc
@@ -19,6 +19,7 @@
#include "third_party/skia/include/core/SkColor.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/canvas.h"
#include "ui/views/background.h"
#include "ui/views/controls/button/checkbox.h"
#include "ui/views/controls/combobox/combobox.h"
@@ -51,13 +52,16 @@ CardUnmaskPromptViews::CardUnmaskPromptViews(
: controller_(controller),
main_contents_(nullptr),
permanent_error_label_(nullptr),
+ input_row_(nullptr),
cvc_input_(nullptr),
month_input_(nullptr),
year_input_(nullptr),
error_label_(nullptr),
+ storage_row_(nullptr),
storage_checkbox_(nullptr),
progress_overlay_(nullptr),
progress_label_(nullptr),
+ overlay_animation_(this),
weak_ptr_factory_(this) {
}
@@ -78,7 +82,9 @@ void CardUnmaskPromptViews::ControllerGone() {
void CardUnmaskPromptViews::DisableAndWaitForVerification() {
SetInputsEnabled(false);
+ progress_overlay_->SetOpacity(0.0);
progress_overlay_->SetVisible(true);
+ overlay_animation_.Show();
GetDialogClientView()->UpdateDialogButtons();
Layout();
}
@@ -96,6 +102,8 @@ void CardUnmaskPromptViews::GotVerificationResult(
} else {
// TODO(estade): it's somewhat jarring when the error comes back too
// quickly.
+ overlay_animation_.Reset();
+ storage_row_->SetOpacity(1.0);
progress_overlay_->SetVisible(false);
if (allow_retry) {
@@ -156,25 +164,25 @@ views::View* CardUnmaskPromptViews::GetContentsView() {
views::View* CardUnmaskPromptViews::CreateFootnoteView() {
// Local storage checkbox and (?) tooltip.
- views::View* storage_row = new views::View();
+ storage_row_ = new FadeOutView();
views::BoxLayout* storage_row_layout = new views::BoxLayout(
views::BoxLayout::kHorizontal, kEdgePadding, kEdgePadding, 0);
- storage_row->SetLayoutManager(storage_row_layout);
- storage_row->SetBorder(
+ storage_row_->SetLayoutManager(storage_row_layout);
+ storage_row_->SetBorder(
views::Border::CreateSolidSidedBorder(1, 0, 0, 0, kSubtleBorderColor));
- storage_row->set_background(
+ storage_row_->set_background(
views::Background::CreateSolidBackground(kShadingColor));
storage_checkbox_ = new views::Checkbox(l10n_util::GetStringUTF16(
IDS_AUTOFILL_CARD_UNMASK_PROMPT_STORAGE_CHECKBOX));
storage_checkbox_->SetChecked(controller_->GetStoreLocallyStartState());
- storage_row->AddChildView(storage_checkbox_);
+ storage_row_->AddChildView(storage_checkbox_);
storage_row_layout->SetFlexForView(storage_checkbox_, 1);
- storage_row->AddChildView(new TooltipIcon(l10n_util::GetStringUTF16(
+ storage_row_->AddChildView(new TooltipIcon(l10n_util::GetStringUTF16(
IDS_AUTOFILL_CARD_UNMASK_PROMPT_STORAGE_TOOLTIP)));
- return storage_row;
+ return storage_row_;
}
gfx::Size CardUnmaskPromptViews::GetPreferredSize() const {
@@ -186,9 +194,16 @@ gfx::Size CardUnmaskPromptViews::GetPreferredSize() const {
}
void CardUnmaskPromptViews::Layout() {
- for (int i = 0; i < child_count(); ++i) {
- child_at(i)->SetBoundsRect(GetContentsBounds());
- }
+ gfx::Rect contents_bounds = GetContentsBounds();
+ main_contents_->SetBoundsRect(contents_bounds);
+
+ // The progress overlay extends from the top of the input row
+ // to the bottom of the content area.
+ gfx::RectF input_rect = input_row_->GetContentsBounds();
+ View::ConvertRectToTarget(input_row_, this, &input_rect);
+ input_rect.set_height(contents_bounds.height());
+ contents_bounds.Intersect(gfx::ToNearestRect(input_rect));
+ progress_overlay_->SetBoundsRect(contents_bounds);
}
int CardUnmaskPromptViews::GetHeightForWidth(int width) const {
@@ -202,7 +217,6 @@ int CardUnmaskPromptViews::GetHeightForWidth(int width) const {
void CardUnmaskPromptViews::OnNativeThemeChanged(const ui::NativeTheme* theme) {
SkColor bg_color =
theme->GetSystemColor(ui::NativeTheme::kColorId_DialogBackground);
- bg_color = SkColorSetA(bg_color, 0xDD);
progress_overlay_->set_background(
views::Background::CreateSolidBackground(bg_color));
}
@@ -300,6 +314,12 @@ void CardUnmaskPromptViews::OnPerformAction(views::Combobox* combobox) {
GetDialogClientView()->UpdateDialogButtons();
}
+void CardUnmaskPromptViews::AnimationProgressed(
+ const gfx::Animation* animation) {
+ progress_overlay_->SetOpacity(animation->GetCurrentValue());
+ storage_row_->SetOpacity(1.0 - animation->GetCurrentValue());
+}
+
void CardUnmaskPromptViews::InitIfNecessary() {
if (has_children())
return;
@@ -335,33 +355,33 @@ void CardUnmaskPromptViews::InitIfNecessary() {
instructions->SetBorder(views::Border::CreateEmptyBorder(0, 0, 15, 0));
controls_container->AddChildView(instructions);
- views::View* input_row = new views::View();
- input_row->SetLayoutManager(
+ input_row_ = new views::View();
+ input_row_->SetLayoutManager(
new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 5));
- controls_container->AddChildView(input_row);
+ 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_);
- input_row->AddChildView(new views::Label(l10n_util::GetStringUTF16(
+ input_row_->AddChildView(month_input_);
+ input_row_->AddChildView(new views::Label(l10n_util::GetStringUTF16(
IDS_AUTOFILL_CARD_UNMASK_EXPIRATION_DATE_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(" ")));
+ input_row_->AddChildView(year_input_);
+ input_row_->AddChildView(new views::Label(base::ASCIIToUTF16(" ")));
}
cvc_input_ = new DecoratedTextfield(
base::string16(),
l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_PLACEHOLDER_CVC), this);
cvc_input_->set_default_width_in_chars(8);
- input_row->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()));
- input_row->AddChildView(cvc_image);
+ input_row_->AddChildView(cvc_image);
// Reserve vertical space for the error label, assuming it's one line.
error_label_ = new views::Label(base::ASCIIToUTF16(" "));
@@ -370,7 +390,8 @@ void CardUnmaskPromptViews::InitIfNecessary() {
error_label_->SetBorder(views::Border::CreateEmptyBorder(3, 0, 5, 0));
controls_container->AddChildView(error_label_);
- progress_overlay_ = new views::View();
+ progress_overlay_ = new FadeOutView();
+ progress_overlay_->set_fade_everything(true);
views::BoxLayout* progress_layout =
new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0);
progress_layout->set_main_axis_alignment(
@@ -400,4 +421,35 @@ void CardUnmaskPromptViews::ClosePrompt() {
GetWidget()->Close();
}
+CardUnmaskPromptViews::FadeOutView::FadeOutView()
+ : fade_everything_(false), opacity_(1.0) {
+}
+CardUnmaskPromptViews::FadeOutView::~FadeOutView() {
+}
+
+void CardUnmaskPromptViews::FadeOutView::PaintChildren(
+ gfx::Canvas* canvas,
+ const views::CullSet& cull_set) {
+ if (opacity_ > 0.99)
+ return views::View::PaintChildren(canvas, cull_set);
+
+ canvas->SaveLayerAlpha(0xff * opacity_);
+ views::View::PaintChildren(canvas, cull_set);
+ canvas->Restore();
+}
+
+void CardUnmaskPromptViews::FadeOutView::OnPaint(gfx::Canvas* canvas) {
+ if (!fade_everything_ || opacity_ > 0.99)
+ return views::View::OnPaint(canvas);
+
+ canvas->SaveLayerAlpha(0xff * opacity_);
+ views::View::OnPaint(canvas);
+ canvas->Restore();
+}
+
+void CardUnmaskPromptViews::FadeOutView::SetOpacity(double opacity) {
+ opacity_ = opacity;
+ SchedulePaint();
+}
+
} // namespace autofill
« 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