| 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 3def416d48442c3957d405a10ff44a1c96e9091b..dd6ac315f1fdf9fd087f89b266d9f76eca257772 100644
|
| --- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
|
| +++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc
|
| @@ -300,8 +300,6 @@ ManagePasswordsBubbleView::AutoSigninView::AutoSigninView(
|
| CredentialsItemView::AUTO_SIGNIN,
|
| parent_->model()->GetProfile()->GetRequestContext());
|
| AddChildView(credential);
|
| - // TODO(vasilii): enable the button to switch to the "Managed" state.
|
| - credential->SetEnabled(false);
|
| parent_->set_initially_focused_view(credential);
|
|
|
| timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(kAutoSigninToastTimeout),
|
| @@ -310,7 +308,8 @@ ManagePasswordsBubbleView::AutoSigninView::AutoSigninView(
|
|
|
| void ManagePasswordsBubbleView::AutoSigninView::ButtonPressed(
|
| views::Button* sender, const ui::Event& event) {
|
| - // TODO(vasilii): close the toast and switch to the "Managed" state.
|
| + parent_->model()->OnAutoSignInClicked();
|
| + parent_->Close();
|
| }
|
|
|
| void ManagePasswordsBubbleView::AutoSigninView::OnTimer() {
|
| @@ -632,14 +631,14 @@ ManagePasswordsBubbleView::ManageView::ManageView(
|
| // them to the user for management. Otherwise, render a "No passwords for
|
| // this site" message.
|
| if (!parent_->model()->best_matches().empty()) {
|
| - std::vector<const autofill::PasswordForm*> password_forms;
|
| - for (auto password_form : parent_->model()->best_matches()) {
|
| - password_forms.push_back(password_form.second);
|
| - }
|
| - ManagePasswordItemsView* item = new ManagePasswordItemsView(
|
| - parent_->model(), password_forms);
|
| - layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
|
| - layout->AddView(item);
|
| + std::vector<const autofill::PasswordForm*> password_forms;
|
| + for (auto password_form : parent_->model()->best_matches()) {
|
| + password_forms.push_back(password_form.second);
|
| + }
|
| + ManagePasswordItemsView* item = new ManagePasswordItemsView(
|
| + parent_->model(), password_forms);
|
| + layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
|
| + layout->AddView(item);
|
| } else {
|
| views::Label* empty_label = new views::Label(
|
| l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_NO_PASSWORDS));
|
| @@ -702,12 +701,19 @@ void ManagePasswordsBubbleView::ManageView::LinkClicked(views::Link* source,
|
|
|
| // A view offering the user a list of his currently saved through the Credential
|
| // Manager API accounts for the current page.
|
| -class ManagePasswordsBubbleView::ManageAccountsView : public views::View {
|
| +class ManagePasswordsBubbleView::ManageAccountsView
|
| + : public views::View,
|
| + public views::ButtonListener {
|
| public:
|
| - explicit ManageAccountsView(ManagePasswordsBubbleView* parent);
|
| + explicit ManageAccountsView(ManagePasswordsBubbleView* parent);
|
|
|
| private:
|
| - ManagePasswordsBubbleView* parent_;
|
| + // views::ButtonListener:
|
| + void ButtonPressed(views::Button* sender, const ui::Event& event) override;
|
| +
|
| + ManagePasswordsBubbleView* parent_;
|
| +
|
| + views::LabelButton* done_button_;
|
| };
|
|
|
| ManagePasswordsBubbleView::ManageAccountsView::ManageAccountsView(
|
| @@ -721,15 +727,46 @@ ManagePasswordsBubbleView::ManageAccountsView::ManageAccountsView(
|
| BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET);
|
| AddTitleRow(layout, parent_->model());
|
|
|
| - for (const autofill::PasswordForm* form :
|
| - parent_->model()->local_pending_credentials()) {
|
| - // Add the title to the layout with appropriate padding.
|
| + if (!parent_->model()->local_pending_credentials().empty()) {
|
| + for (const autofill::PasswordForm* form :
|
| + parent_->model()->local_pending_credentials()) {
|
| + layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
|
| + layout->AddView(new ManageCredentialItemView(parent_->model(), form));
|
| + }
|
| + } else {
|
| + views::Label* empty_label = new views::Label(
|
| + l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_NO_PASSWORDS),
|
| + ui::ResourceBundle::GetSharedInstance().GetFontList(
|
| + ui::ResourceBundle::SmallFont));
|
| + empty_label->SetMultiLine(true);
|
| + empty_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| +
|
| layout->StartRow(0, SINGLE_VIEW_COLUMN_SET);
|
| - layout->AddView(new ManageCredentialItemView(parent_->model(), form));
|
| + layout->AddView(empty_label);
|
| + layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing);
|
| }
|
|
|
| + done_button_ =
|
| + new views::LabelButton(this, l10n_util::GetStringUTF16(IDS_DONE));
|
| + done_button_->SetStyle(views::Button::STYLE_BUTTON);
|
| + done_button_->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
|
| + ui::ResourceBundle::SmallFont));
|
| + BuildColumnSet(layout, SINGLE_BUTTON_COLUMN_SET);
|
| + layout->StartRowWithPadding(
|
| + 0, SINGLE_BUTTON_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing);
|
| + layout->AddView(done_button_);
|
| +
|
| // Extra padding for visual awesomeness.
|
| layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
|
| +
|
| + parent_->set_initially_focused_view(done_button_);
|
| +}
|
| +
|
| +void ManagePasswordsBubbleView::ManageAccountsView::ButtonPressed(
|
| + views::Button* sender, const ui::Event& event) {
|
| + DCHECK(sender == done_button_);
|
| + parent_->model()->OnDoneClicked();
|
| + parent_->Close();
|
| }
|
|
|
| // ManagePasswordsBubbleView::BlacklistedView ---------------------------------
|
| @@ -1017,8 +1054,8 @@ ManagePasswordsBubbleView::ManagePasswordsBubbleView(
|
| }
|
|
|
| ManagePasswordsBubbleView::~ManagePasswordsBubbleView() {
|
| - if (anchor_view_)
|
| - anchor_view_->SetActive(false);
|
| + if (manage_passwords_bubble_ == this)
|
| + manage_passwords_bubble_ = NULL;
|
| }
|
|
|
| views::View* ManagePasswordsBubbleView::GetInitiallyFocusedView() {
|
| @@ -1032,18 +1069,16 @@ void ManagePasswordsBubbleView::Init() {
|
| Refresh();
|
| }
|
|
|
| -void ManagePasswordsBubbleView::WindowClosing() {
|
| - // Close() closes the window asynchronously, so by the time we reach here,
|
| - // |manage_passwords_bubble_| may have already been reset.
|
| - if (manage_passwords_bubble_ == this)
|
| - manage_passwords_bubble_ = NULL;
|
| -}
|
| -
|
| void ManagePasswordsBubbleView::Close() {
|
| mouse_handler_.reset();
|
| ManagedFullScreenBubbleDelegateView::Close();
|
| }
|
|
|
| +void ManagePasswordsBubbleView::OnWidgetClosing(views::Widget* /*widget*/) {
|
| + if (anchor_view_)
|
| + anchor_view_->SetActive(false);
|
| +}
|
| +
|
| void ManagePasswordsBubbleView::Refresh() {
|
| RemoveAllChildViews(true);
|
| initially_focused_view_ = NULL;
|
| @@ -1063,6 +1098,8 @@ void ManagePasswordsBubbleView::Refresh() {
|
| AddChildView(new AccountChooserView(this));
|
| } else if (model()->state() == password_manager::ui::AUTO_SIGNIN_STATE) {
|
| AddChildView(new AutoSigninView(this));
|
| + } else if (model()->state() == password_manager::ui::MANAGE_ACCOUNTS_STATE) {
|
| + AddChildView(new ManageAccountsView(this));
|
| } else {
|
| AddChildView(new ManageView(this));
|
| }
|
|
|