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

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

Issue 2960843002: Edit button makes username editable in the password manager bubble. (Closed)
Patch Set: Merge with ToT Created 3 years, 6 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 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

Powered by Google App Engine
This is Rietveld 408576698