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

Side by Side Diff: chrome/browser/ui/views/passwords/manage_password_item_view.cc

Issue 534543002: Clean up ManagePasswordsBubbleView and ManagePasswordItemView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/passwords/manage_password_item_view.h" 5 #include "chrome/browser/ui/views/passwords/manage_password_item_view.h"
6 6
7 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" 7 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
8 #include "chrome/grit/generated_resources.h" 8 #include "chrome/grit/generated_resources.h"
9 #include "components/password_manager/core/common/password_manager_ui.h"
10 #include "ui/base/l10n/l10n_util.h" 9 #include "ui/base/l10n/l10n_util.h"
11 #include "ui/base/resource/resource_bundle.h" 10 #include "ui/base/resource/resource_bundle.h"
12 #include "ui/resources/grit/ui_resources.h" 11 #include "ui/resources/grit/ui_resources.h"
12 #include "ui/views/border.h"
13 #include "ui/views/controls/button/button.h" 13 #include "ui/views/controls/button/button.h"
14 #include "ui/views/controls/button/image_button.h" 14 #include "ui/views/controls/button/image_button.h"
15 #include "ui/views/controls/label.h"
16 #include "ui/views/controls/link.h"
17 #include "ui/views/controls/link_listener.h"
15 #include "ui/views/layout/fill_layout.h" 18 #include "ui/views/layout/fill_layout.h"
16 #include "ui/views/layout/grid_layout.h" 19 #include "ui/views/layout/grid_layout.h"
17 #include "ui/views/layout/layout_constants.h" 20 #include "ui/views/layout/layout_constants.h"
18 21
19 namespace { 22 namespace {
20 23
21 int FirstFieldWidth() { 24 int FirstFieldWidth() {
22 return std::max( 25 return std::max(
23 ManagePasswordsBubbleModel::UsernameFieldWidth(), 26 ManagePasswordsBubbleModel::UsernameFieldWidth(),
24 views::Label(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED)) 27 views::Label(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED))
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 views::Label* label = new views::Label(form.password_value); 85 views::Label* label = new views::Label(form.password_value);
83 label->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList( 86 label->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
84 ui::ResourceBundle::SmallFont)); 87 ui::ResourceBundle::SmallFont));
85 label->SetHorizontalAlignment(gfx::ALIGN_LEFT); 88 label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
86 label->SetObscured(true); 89 label->SetObscured(true);
87 return label; 90 return label;
88 } 91 }
89 92
90 } // namespace 93 } // namespace
91 94
92 // Pending View 95 // Render credentials in two columns: username and password.
96 class ManagePasswordItemView::PendingView : public views::View {
97 public:
98 explicit PendingView(ManagePasswordItemView* parent);
99
100 private:
101 virtual ~PendingView();
102 };
103
93 ManagePasswordItemView::PendingView::PendingView( 104 ManagePasswordItemView::PendingView::PendingView(
94 ManagePasswordItemView* parent) { 105 ManagePasswordItemView* parent) {
95 views::GridLayout* layout = new views::GridLayout(this); 106 views::GridLayout* layout = new views::GridLayout(this);
96 SetLayoutManager(layout); 107 SetLayoutManager(layout);
97 108
98 BuildColumnSet(layout, TWO_COLUMN_SET); 109 BuildColumnSet(layout, TWO_COLUMN_SET);
99 layout->StartRowWithPadding( 110 layout->StartRowWithPadding(
100 0, TWO_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing); 111 0, TWO_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing);
101 layout->AddView(GenerateUsernameLabel(parent->password_form_)); 112 layout->AddView(GenerateUsernameLabel(parent->password_form_));
102 layout->AddView(GeneratePasswordLabel(parent->password_form_)); 113 layout->AddView(GeneratePasswordLabel(parent->password_form_));
103 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 114 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
104 } 115 }
105 116
106 ManagePasswordItemView::PendingView::~PendingView() { 117 ManagePasswordItemView::PendingView::~PendingView() {
107 } 118 }
108 119
109 // Manage View 120 // Render credentials in three columns: username, password, and delete.
121 class ManagePasswordItemView::ManageView : public views::View,
122 public views::ButtonListener {
123 public:
124 explicit ManageView(ManagePasswordItemView* parent);
125
126 private:
127 virtual ~ManageView();
128
129 // views::ButtonListener:
130 virtual void ButtonPressed(views::Button* sender,
131 const ui::Event& event) OVERRIDE;
132
133 views::ImageButton* delete_button_;
134 ManagePasswordItemView* parent_;
135 };
136
110 ManagePasswordItemView::ManageView::ManageView(ManagePasswordItemView* parent) 137 ManagePasswordItemView::ManageView::ManageView(ManagePasswordItemView* parent)
111 : parent_(parent) { 138 : parent_(parent) {
112 views::GridLayout* layout = new views::GridLayout(this); 139 views::GridLayout* layout = new views::GridLayout(this);
113 SetLayoutManager(layout); 140 SetLayoutManager(layout);
114 141
115 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); 142 ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
116 delete_button_ = new views::ImageButton(this); 143 delete_button_ = new views::ImageButton(this);
117 delete_button_->SetImage(views::ImageButton::STATE_NORMAL, 144 delete_button_->SetImage(views::ImageButton::STATE_NORMAL,
118 rb->GetImageNamed(IDR_CLOSE_2).ToImageSkia()); 145 rb->GetImageNamed(IDR_CLOSE_2).ToImageSkia());
119 delete_button_->SetImage(views::ImageButton::STATE_HOVERED, 146 delete_button_->SetImage(views::ImageButton::STATE_HOVERED,
120 rb->GetImageNamed(IDR_CLOSE_2_H).ToImageSkia()); 147 rb->GetImageNamed(IDR_CLOSE_2_H).ToImageSkia());
121 delete_button_->SetImage(views::ImageButton::STATE_PRESSED, 148 delete_button_->SetImage(views::ImageButton::STATE_PRESSED,
122 rb->GetImageNamed(IDR_CLOSE_2_P).ToImageSkia()); 149 rb->GetImageNamed(IDR_CLOSE_2_P).ToImageSkia());
123 150
124 BuildColumnSet(layout, THREE_COLUMN_SET); 151 BuildColumnSet(layout, THREE_COLUMN_SET);
125 layout->StartRowWithPadding( 152 layout->StartRowWithPadding(
126 0, THREE_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing); 153 0, THREE_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing);
127 layout->AddView(GenerateUsernameLabel(parent->password_form_)); 154 layout->AddView(GenerateUsernameLabel(parent->password_form_));
128 layout->AddView(GeneratePasswordLabel(parent->password_form_)); 155 layout->AddView(GeneratePasswordLabel(parent->password_form_));
129 layout->AddView(delete_button_); 156 layout->AddView(delete_button_);
130 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 157 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
131 } 158 }
132 159
160 ManagePasswordItemView::ManageView::~ManageView() {
161 }
162
133 void ManagePasswordItemView::ManageView::ButtonPressed(views::Button* sender, 163 void ManagePasswordItemView::ManageView::ButtonPressed(views::Button* sender,
134 const ui::Event& event) { 164 const ui::Event& event) {
135 DCHECK_EQ(delete_button_, sender); 165 DCHECK_EQ(delete_button_, sender);
136 parent_->NotifyClickedDelete(); 166 parent_->NotifyClickedDelete();
137 } 167 }
138 168
139 ManagePasswordItemView::ManageView::~ManageView() { 169 // Render a notification to the user that a password has been removed, and
140 } 170 // offer an undo link.
171 class ManagePasswordItemView::UndoView : public views::View,
172 public views::LinkListener {
173 public:
174 explicit UndoView(ManagePasswordItemView* parent);
141 175
142 // Undo View 176 private:
177 virtual ~UndoView();
178
179 // views::LinkListener:
180 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
181
182 views::Link* undo_link_;
183 ManagePasswordItemView* parent_;
184 };
185
143 ManagePasswordItemView::UndoView::UndoView(ManagePasswordItemView* parent) 186 ManagePasswordItemView::UndoView::UndoView(ManagePasswordItemView* parent)
144 : parent_(parent) { 187 : parent_(parent) {
145 views::GridLayout* layout = new views::GridLayout(this); 188 views::GridLayout* layout = new views::GridLayout(this);
146 SetLayoutManager(layout); 189 SetLayoutManager(layout);
147 190
148 views::Label* text = 191 views::Label* text =
149 new views::Label(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED)); 192 new views::Label(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_DELETED));
150 text->SetHorizontalAlignment(gfx::ALIGN_LEFT); 193 text->SetHorizontalAlignment(gfx::ALIGN_LEFT);
151 text->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList( 194 text->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
152 ui::ResourceBundle::SmallFont)); 195 ui::ResourceBundle::SmallFont));
153 196
154 undo_link_ = 197 undo_link_ =
155 new views::Link(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_UNDO)); 198 new views::Link(l10n_util::GetStringUTF16(IDS_MANAGE_PASSWORDS_UNDO));
156 undo_link_->SetHorizontalAlignment(gfx::ALIGN_RIGHT); 199 undo_link_->SetHorizontalAlignment(gfx::ALIGN_RIGHT);
157 undo_link_->set_listener(this); 200 undo_link_->set_listener(this);
158 undo_link_->SetUnderline(false); 201 undo_link_->SetUnderline(false);
159 undo_link_->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList( 202 undo_link_->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
160 ui::ResourceBundle::SmallFont)); 203 ui::ResourceBundle::SmallFont));
161 204
162 BuildColumnSet(layout, TWO_COLUMN_SET); 205 BuildColumnSet(layout, TWO_COLUMN_SET);
163 layout->StartRowWithPadding( 206 layout->StartRowWithPadding(
164 0, TWO_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing); 207 0, TWO_COLUMN_SET, 0, views::kRelatedControlVerticalSpacing);
165 layout->AddView(text); 208 layout->AddView(text);
166 layout->AddView(undo_link_); 209 layout->AddView(undo_link_);
167 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 210 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
168 } 211 }
169 212
213 ManagePasswordItemView::UndoView::~UndoView() {
214 }
215
170 void ManagePasswordItemView::UndoView::LinkClicked(views::Link* sender, 216 void ManagePasswordItemView::UndoView::LinkClicked(views::Link* sender,
171 int event_flags) { 217 int event_flags) {
172 DCHECK_EQ(undo_link_, sender); 218 DCHECK_EQ(undo_link_, sender);
173 parent_->NotifyClickedUndo(); 219 parent_->NotifyClickedUndo();
174 } 220 }
175 221
176 ManagePasswordItemView::UndoView::~UndoView() {
177 }
178
179 // ManagePasswordItemView 222 // ManagePasswordItemView
180 ManagePasswordItemView::ManagePasswordItemView( 223 ManagePasswordItemView::ManagePasswordItemView(
181 ManagePasswordsBubbleModel* manage_passwords_bubble_model, 224 ManagePasswordsBubbleModel* manage_passwords_bubble_model,
182 autofill::PasswordForm password_form, 225 autofill::PasswordForm password_form,
183 password_manager::ui::PasswordItemPosition position) 226 password_manager::ui::PasswordItemPosition position)
184 : model_(manage_passwords_bubble_model), 227 : model_(manage_passwords_bubble_model),
185 password_form_(password_form), 228 password_form_(password_form),
186 delete_password_(false) { 229 delete_password_(false) {
187 views::FillLayout* layout = new views::FillLayout(); 230 views::FillLayout* layout = new views::FillLayout();
188 SetLayoutManager(layout); 231 SetLayoutManager(layout);
(...skipping 13 matching lines...) Expand all
202 AddChildView(new PendingView(this)); 245 AddChildView(new PendingView(this));
203 } else { 246 } else {
204 AddChildView(new ManageView(this)); 247 AddChildView(new ManageView(this));
205 } 248 }
206 GetLayoutManager()->Layout(this); 249 GetLayoutManager()->Layout(this);
207 } 250 }
208 251
209 ManagePasswordItemView::~ManagePasswordItemView() { 252 ManagePasswordItemView::~ManagePasswordItemView() {
210 } 253 }
211 254
255 void ManagePasswordItemView::NotifyClickedDelete() {
256 delete_password_ = true;
257 Refresh();
258 }
259
260 void ManagePasswordItemView::NotifyClickedUndo() {
261 delete_password_ = false;
262 Refresh();
263 }
264
212 void ManagePasswordItemView::Refresh() { 265 void ManagePasswordItemView::Refresh() {
213 DCHECK(!password_manager::ui::IsPendingState(model_->state())); 266 DCHECK(!password_manager::ui::IsPendingState(model_->state()));
214 267
215 RemoveAllChildViews(true); 268 RemoveAllChildViews(true);
216 if (delete_password_) 269 if (delete_password_)
217 AddChildView(new UndoView(this)); 270 AddChildView(new UndoView(this));
218 else 271 else
219 AddChildView(new ManageView(this)); 272 AddChildView(new ManageView(this));
220 GetLayoutManager()->Layout(this); 273 GetLayoutManager()->Layout(this);
221 274
222 // After the view is consistent, notify the model that the password needs to 275 // After the view is consistent, notify the model that the password needs to
223 // be updated (either removed or put back into the store, as appropriate. 276 // be updated (either removed or put back into the store, as appropriate.
224 model_->OnPasswordAction(password_form_, 277 model_->OnPasswordAction(password_form_,
225 delete_password_ 278 delete_password_
226 ? ManagePasswordsBubbleModel::REMOVE_PASSWORD 279 ? ManagePasswordsBubbleModel::REMOVE_PASSWORD
227 : ManagePasswordsBubbleModel::ADD_PASSWORD); 280 : ManagePasswordsBubbleModel::ADD_PASSWORD);
228 } 281 }
229
230 void ManagePasswordItemView::NotifyClickedDelete() {
231 delete_password_ = true;
232 Refresh();
233 }
234
235 void ManagePasswordItemView::NotifyClickedUndo() {
236 delete_password_ = false;
237 Refresh();
238 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698