| Index: chrome/browser/ui/views/autofill/autofill_dialog_views.cc
|
| diff --git a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
|
| index bd0db6d8cf3db150d24f3aa5ac2b6c825fda5e56..e41ad232668e538402cc1f1bd596b080833b4dcd 100644
|
| --- a/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
|
| +++ b/chrome/browser/ui/views/autofill/autofill_dialog_views.cc
|
| @@ -522,10 +522,12 @@ void AutofillDialogViews::AccountChooser::LinkClicked(views::Link* source,
|
|
|
| // AutofillDialogViews::OverlayView --------------------------------------------
|
|
|
| -AutofillDialogViews::OverlayView::OverlayView(views::ButtonListener* listener)
|
| - : image_view_(new views::ImageView()),
|
| +AutofillDialogViews::OverlayView::OverlayView(
|
| + AutofillDialogViewDelegate* delegate)
|
| + : delegate_(delegate),
|
| + image_view_(new views::ImageView()),
|
| message_stack_(new views::View()),
|
| - button_(new views::BlueButton(listener, base::string16())) {
|
| + refresh_timer_(false, false) {
|
| set_background(views::Background::CreateSolidBackground(GetNativeTheme()->
|
| GetSystemColor(ui::NativeTheme::kColorId_DialogBackground)));
|
|
|
| @@ -537,9 +539,6 @@ AutofillDialogViews::OverlayView::OverlayView(views::ButtonListener* listener)
|
| kOverlayTextInterlineSpacing));
|
| message_stack_->set_border(views::Border::CreateEmptyBorder(
|
| kDialogEdgePadding, kDialogEdgePadding, 0, kDialogEdgePadding));
|
| -
|
| - AddChildView(button_);
|
| - button_->set_focusable(true);
|
| }
|
|
|
| AutofillDialogViews::OverlayView::~OverlayView() {}
|
| @@ -552,14 +551,15 @@ int AutofillDialogViews::OverlayView::GetHeightForContentsForWidth(int width) {
|
| return kOverlayImageBottomMargin +
|
| views::kButtonVEdgeMarginNew +
|
| message_stack_->GetHeightForWidth(width) +
|
| - image_view_->GetHeightForWidth(width) +
|
| - (button_->visible() ? button_->GetHeightForWidth(width) +
|
| - views::kButtonVEdgeMarginNew : 0);
|
| + image_view_->GetHeightForWidth(width);
|
| +}
|
| +
|
| +void AutofillDialogViews::OverlayView::UpdateState() {
|
| + SetState(delegate_->GetDialogOverlay());
|
| }
|
|
|
| void AutofillDialogViews::OverlayView::SetState(
|
| - const DialogOverlayState& state,
|
| - views::ButtonListener* listener) {
|
| + const DialogOverlayState& state) {
|
| // Don't update anything if we're still fading out the old state.
|
| if (fade_out_)
|
| return;
|
| @@ -584,13 +584,19 @@ void AutofillDialogViews::OverlayView::SetState(
|
| }
|
| message_stack_->SetVisible(message_stack_->child_count() > 0);
|
|
|
| - button_->SetVisible(!state.button_text.empty());
|
| - if (!state.button_text.empty())
|
| - button_->SetText(state.button_text);
|
| -
|
| SetVisible(true);
|
| + InvalidateLayout();
|
| if (parent())
|
| parent()->Layout();
|
| +
|
| + if (state.expiry != base::TimeDelta()) {
|
| + refresh_timer_.Start(FROM_HERE,
|
| + state.expiry,
|
| + base::Bind(&OverlayView::UpdateState,
|
| + base::Unretained(this)));
|
| + } else {
|
| + refresh_timer_.Stop();
|
| + }
|
| }
|
|
|
| void AutofillDialogViews::OverlayView::BeginFadeOut() {
|
| @@ -634,17 +640,8 @@ void AutofillDialogViews::OverlayView::Layout() {
|
| return;
|
| }
|
|
|
| - int y = bounds.bottom() - views::kButtonVEdgeMarginNew;
|
| - if (button_->visible()) {
|
| - button_->SizeToPreferredSize();
|
| - y -= button_->height();
|
| - button_->SetPosition(gfx::Point(
|
| - bounds.CenterPoint().x() - button_->width() / 2, y));
|
| - y -= views::kButtonVEdgeMarginNew;
|
| - }
|
| -
|
| int message_height = message_stack_->GetHeightForWidth(bounds.width());
|
| - y -= message_height;
|
| + int y = bounds.bottom() - views::kButtonVEdgeMarginNew - message_height;
|
| message_stack_->SetBounds(bounds.x(), y, bounds.width(), message_height);
|
|
|
| gfx::Size image_size = image_view_->GetPreferredSize();
|
| @@ -1206,7 +1203,7 @@ void AutofillDialogViews::Show() {
|
| if (!splash_image.IsEmpty()) {
|
| DialogOverlayState state;
|
| state.image = splash_image;
|
| - overlay_view_->SetState(state, NULL);
|
| + overlay_view_->SetState(state);
|
| overlay_view_->BeginFadeOut();
|
| }
|
| }
|
| @@ -1267,7 +1264,8 @@ void AutofillDialogViews::UpdateButtonStrip() {
|
| UpdateButtonStripExtraView();
|
| GetDialogClientView()->UpdateDialogButtons();
|
|
|
| - overlay_view_->SetState(delegate_->GetDialogOverlay(), this);
|
| + DialogOverlayState overlay_state = delegate_->GetDialogOverlay();
|
| + overlay_view_->UpdateState();
|
|
|
| ContentsPreferredSizeChanged();
|
| }
|
| @@ -1591,12 +1589,6 @@ views::NonClientFrameView* AutofillDialogViews::CreateNonClientFrameView(
|
| delegate_->GetWebContents()->GetBrowserContext());
|
| }
|
|
|
| -void AutofillDialogViews::ButtonPressed(views::Button* sender,
|
| - const ui::Event& event) {
|
| - DCHECK(sender->GetAncestorWithClassName(kOverlayViewClassName));
|
| - delegate_->OverlayButtonPressed();
|
| -}
|
| -
|
| void AutofillDialogViews::ContentsChanged(views::Textfield* sender,
|
| const base::string16& new_contents) {
|
| TextfieldEditedOrActivated(sender, true);
|
| @@ -1789,7 +1781,7 @@ void AutofillDialogViews::InitChildViews() {
|
| new AutofillDialogSignInDelegate(this,
|
| sign_in_webview_->GetWebContents()));
|
|
|
| - overlay_view_ = new OverlayView(this);
|
| + overlay_view_ = new OverlayView(delegate_);
|
| overlay_view_->SetVisible(false);
|
| }
|
|
|
|
|