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

Unified Diff: chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc

Issue 2033713002: Implement the Chrome Sign-in promo bubble for password manager on Views. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 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
Index: chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
index 01c00a6b190044efd4ec72c6817047c252a06bc7..dc7dc5c23cd0097130fbd25af5e283eb8533f6ba 100644
--- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
+++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
@@ -352,12 +352,17 @@ ManagePasswordsBubbleView::PendingView::~PendingView() {
void ManagePasswordsBubbleView::PendingView::ButtonPressed(
views::Button* sender,
const ui::Event& event) {
- if (sender == save_button_)
+ if (sender == save_button_) {
parent_->model()->OnSaveClicked();
- else if (sender == never_button_)
+ if (parent_->model()->ReplaceToShowSignInPromoIfNeeded()) {
+ parent_->Refresh();
+ return;
+ }
+ } else if (sender == never_button_) {
parent_->model()->OnNeverForThisSiteClicked();
- else
+ } else {
NOTREACHED();
+ }
parent_->CloseBubble();
}
@@ -548,6 +553,63 @@ void ManagePasswordsBubbleView::SaveConfirmationView::ButtonPressed(
parent_->CloseBubble();
}
+// ManagePasswordsBubbleView::SignInPromoView ---------------------------------
+
+// A view that offers user to sign in to Chrome.
+class ManagePasswordsBubbleView::SignInPromoView
+ : public views::View,
+ public views::ButtonListener {
+ public:
+ explicit SignInPromoView(ManagePasswordsBubbleView* parent);
+
+ private:
+ // views::ButtonListener:
+ void ButtonPressed(views::Button* sender, const ui::Event& event) override;
+
+ ManagePasswordsBubbleView* parent_;
+
+ views::Button* signin_button_;
+ views::Button* no_button_;
+
+ DISALLOW_COPY_AND_ASSIGN(SignInPromoView);
+};
+
+ManagePasswordsBubbleView::SignInPromoView::SignInPromoView(
+ ManagePasswordsBubbleView* parent)
+ : parent_(parent) {
+ views::GridLayout* layout = new views::GridLayout(this);
+ layout->set_minimum_size(gfx::Size(kDesiredBubbleWidth, 0));
+ SetLayoutManager(layout);
+
+ signin_button_ = views::MdTextButton::CreateSecondaryUiBlueButton(
+ this,
+ l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_SIGN_IN));
+ no_button_ = views::MdTextButton::CreateSecondaryUiButton(
+ this,
+ l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SIGNIN_PROMO_NO_THANKS));
+
+ // Button row.
+ BuildColumnSet(layout, DOUBLE_BUTTON_COLUMN_SET);
+ layout->StartRow(0, DOUBLE_BUTTON_COLUMN_SET);
+ layout->AddView(signin_button_);
+ layout->AddView(no_button_);
+
+ parent_->set_initially_focused_view(signin_button_);
+}
+
+void ManagePasswordsBubbleView::SignInPromoView::ButtonPressed(
+ views::Button* sender,
+ const ui::Event& event) {
+ if (sender == signin_button_)
+ parent_->model()->OnSignInToChromeClicked();
+ else if (sender == no_button_)
+ parent_->model()->OnSkipSignInClicked();
+ else
+ NOTREACHED();
+
+ parent_->CloseBubble();
+}
+
// ManagePasswordsBubbleView::WebContentMouseHandler --------------------------
// The class listens for WebContentsView events and notifies the bubble if the
@@ -783,10 +845,9 @@ views::View* ManagePasswordsBubbleView::GetInitiallyFocusedView() {
}
void ManagePasswordsBubbleView::Init() {
- views::FillLayout* layout = new views::FillLayout();
- SetLayoutManager(layout);
+ SetLayoutManager(new views::FillLayout);
- Refresh();
+ CreateChild();
}
void ManagePasswordsBubbleView::CloseBubble() {
@@ -812,19 +873,28 @@ bool ManagePasswordsBubbleView::ShouldShowCloseButton() const {
void ManagePasswordsBubbleView::Refresh() {
RemoveAllChildViews(true);
initially_focused_view_ = NULL;
+ CreateChild();
+
+ // Show/hide the close button.
+ GetWidget()->non_client_view()->ResetWindowControls();
+ GetWidget()->UpdateWindowTitle();
+ SizeToContents();
+}
+
+void ManagePasswordsBubbleView::CreateChild() {
if (model_.state() == password_manager::ui::PENDING_PASSWORD_STATE) {
AddChildView(new PendingView(this));
} else if (model_.state() ==
- password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
+ password_manager::ui::PENDING_PASSWORD_UPDATE_STATE) {
AddChildView(new UpdatePendingView(this));
} else if (model_.state() == password_manager::ui::CONFIRMATION_STATE) {
AddChildView(new SaveConfirmationView(this));
} else if (model_.state() == password_manager::ui::AUTO_SIGNIN_STATE) {
AddChildView(new AutoSigninView(this));
+ } else if (model_.state() ==
+ password_manager::ui::CHROME_SIGN_IN_PROMO_STATE) {
+ AddChildView(new SignInPromoView(this));
} else {
AddChildView(new ManageView(this));
}
- if (GetWidget())
- GetWidget()->UpdateWindowTitle();
- GetLayoutManager()->Layout(this);
}

Powered by Google App Engine
This is Rietveld 408576698