Chromium Code Reviews| 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 5fa6f306ca69d4440ff04aba49a7ea65ee3c3ac6..d93e38f23d54e09cb9a259c2c67d8b78ac8737e8 100644 |
| --- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc |
| +++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view.cc |
| @@ -269,8 +269,10 @@ void ManagePasswordsBubbleView::AutoSigninView::OnTimer() { |
| // A view offering the user the ability to save credentials. Contains a |
| // single ManagePasswordItemsView, along with a "Save Passwords" button, |
| // a "Never" button and an "Edit" button to edit username field. |
| -class ManagePasswordsBubbleView::PendingView : public views::View, |
| - public views::ButtonListener { |
| +class ManagePasswordsBubbleView::PendingView |
| + : public views::View, |
| + public views::ButtonListener, |
| + public ManagePasswordItemsView::ManagePasswordItemsDelegate { |
| public: |
| explicit PendingView(ManagePasswordsBubbleView* parent); |
| ~PendingView() override; |
| @@ -279,27 +281,39 @@ class ManagePasswordsBubbleView::PendingView : public views::View, |
| // views::ButtonListener: |
| void ButtonPressed(views::Button* sender, const ui::Event& event) override; |
| + // ManagePasswordItemsView::ManagePasswordItemsDelegate: |
| + void FocusedOnEditable() override; |
| + void FocusLostOnEditable() override; |
| + |
| ManagePasswordsBubbleView* parent_; |
| views::Button* edit_button_; |
| views::Button* save_button_; |
| views::Button* never_button_; |
| + ManagePasswordItemsView* manage_password_items_view_; |
| DISALLOW_COPY_AND_ASSIGN(PendingView); |
| }; |
| ManagePasswordsBubbleView::PendingView::PendingView( |
| ManagePasswordsBubbleView* parent) |
| - : parent_(parent), edit_button_(nullptr) { |
| + : parent_(parent), |
| + edit_button_(nullptr), |
| + manage_password_items_view_(nullptr) { |
| views::GridLayout* layout = new views::GridLayout(this); |
| layout->set_minimum_size(gfx::Size(kDesiredBubbleWidth, 0)); |
| SetLayoutManager(layout); |
| - // Create the pending credential item, save button and refusal combobox. |
| - ManagePasswordItemsView* item = nullptr; |
| + // Create the pending credential item, edit button, save button and refusal |
| + // combobox. |
| if (!parent->model()->pending_password().username_value.empty()) { |
|
vasilii
2017/06/30 15:28:07
Actually if it's empty then we should allow to edi
|
| - item = new ManagePasswordItemsView(parent_->model(), |
| - &parent->model()->pending_password()); |
| + manage_password_items_view_ = new ManagePasswordItemsView( |
| + parent_->model(), &parent->model()->pending_password(), this); |
| + } |
| + if (base::FeatureList::IsEnabled( |
| + password_manager::features::kEnableUsernameCorrection)) { |
| + edit_button_ = views::MdTextButton::CreateSecondaryUiButton( |
|
vasilii
2017/06/30 15:28:07
Broken merge?
irmakk
2017/07/03 14:56:54
Broken merge.
|
| + this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EDIT_BUTTON)); |
| } |
| if (base::FeatureList::IsEnabled( |
| password_manager::features::kEnableUsernameCorrection)) { |
| @@ -315,9 +329,9 @@ ManagePasswordsBubbleView::PendingView::PendingView( |
| BuildColumnSet(layout, SINGLE_VIEW_COLUMN_SET); |
| // Credential row. |
| - if (item) { |
| + if (manage_password_items_view_) { |
| layout->StartRow(0, SINGLE_VIEW_COLUMN_SET); |
| - layout->AddView(item); |
| + layout->AddView(manage_password_items_view_); |
| layout->AddPaddingRow(0, |
| ChromeLayoutProvider::Get() |
| ->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS) |
| @@ -346,6 +360,9 @@ void ManagePasswordsBubbleView::PendingView::ButtonPressed( |
| const ui::Event& event) { |
| // TODO(https://crbug.com/734965): Implement edit button logic. |
| if (sender == edit_button_) { |
| + manage_password_items_view_->SetRowStatusForPendingViewRow( |
| + ManagePasswordItemsView::RowStatus::EDITING); |
| + edit_button_->SetEnabled(false); |
| return; |
| } else if (sender == save_button_) { |
| parent_->model()->OnSaveClicked(); |
| @@ -362,6 +379,15 @@ void ManagePasswordsBubbleView::PendingView::ButtonPressed( |
| parent_->CloseBubble(); |
| } |
| +void ManagePasswordsBubbleView::PendingView::FocusedOnEditable() { |
|
vasilii
2017/06/30 15:28:07
We don't need this method. We can call SizeToConte
|
| + parent_->SizeToContents(); |
| +} |
| + |
| +void ManagePasswordsBubbleView::PendingView::FocusLostOnEditable() { |
| + edit_button_->SetEnabled(true); |
| + GetFocusManager()->SetFocusedView(save_button_); |
|
vasilii
2017/06/30 15:28:07
What happens if you click something outside of the
|
| +} |
| + |
| // ManagePasswordsBubbleView::ManageView -------------------------------------- |
| // A view offering the user a list of their currently saved credentials |