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

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

Issue 1151373006: Update Confirmation UI for saved password change (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Browser test fixed Created 5 years, 5 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/credentials_selection_view.cc
diff --git a/chrome/browser/ui/views/passwords/credentials_selection_view.cc b/chrome/browser/ui/views/passwords/credentials_selection_view.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d7fb9e2840dfaa2f67e9e8d41b85d92789091bbe
--- /dev/null
+++ b/chrome/browser/ui/views/passwords/credentials_selection_view.cc
@@ -0,0 +1,97 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/views/passwords/credentials_selection_view.h"
+
+#include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h"
+#include "ui/base/models/simple_combobox_model.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/views/controls/button/button.h"
+#include "ui/views/controls/combobox/combobox.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/layout/fill_layout.h"
+#include "ui/views/layout/grid_layout.h"
+#include "ui/views/layout/layout_constants.h"
+
+namespace {
+
+views::Label* GeneratePasswordLabel(const autofill::PasswordForm& form) {
+ views::Label* label = new views::Label(form.password_value);
+ label->SetFontList(ui::ResourceBundle::GetSharedInstance().GetFontList(
+ ui::ResourceBundle::SmallFont));
+ label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ label->SetObscured(true);
+ return label;
+}
+
+views::Combobox* GenerateUsernameCombobox(
+ const std::vector<const autofill::PasswordForm*>& forms,
+ const base::string16& best_matched_username) {
+ std::vector<base::string16> usernames;
+ int best_matched_username_index = -1;
vabr (Chromium) 2015/07/31 12:48:13 To avoid issues with int type conversion, use size
dvadym 2015/08/03 15:44:07 Done.
+ for (size_t index = 0; index < forms.size(); ++index) {
+ usernames.push_back(forms[index]->username_value);
+ if (forms[index]->username_value == best_matched_username) {
+ best_matched_username_index = index;
+ }
+ }
+
+ views::Combobox* combobox =
+ new views::Combobox(new ui::SimpleComboboxModel(usernames));
+
+ if (best_matched_username_index >= 0) {
+ combobox->SetSelectedIndex(best_matched_username_index);
+ }
+ return combobox;
+}
+
+} // namespace
+
+CredentialsSelectionView::CredentialsSelectionView(
+ ManagePasswordsBubbleModel* manage_passwords_bubble_model,
+ const std::vector<const autofill::PasswordForm*>& password_forms,
+ const base::string16& best_matched_username)
+ : password_forms_(password_forms) {
+ DCHECK(!password_forms.empty());
+
+ // Layout.
+ views::GridLayout* layout = new views::GridLayout(this);
+ SetLayoutManager(layout);
+
+ // ColumnSet.
+ int column_set_id = 0;
+ views::ColumnSet* column_set = layout->AddColumnSet(column_set_id);
+ column_set->AddPaddingColumn(0, views::kItemLabelSpacing);
+ column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
+ views::GridLayout::USE_PREF, 0, 0);
+ column_set->AddPaddingColumn(0,
+ views::kUnrelatedControlLargeHorizontalSpacing);
+ column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
+ views::GridLayout::USE_PREF, 0, 0);
+ column_set->AddPaddingColumn(0, views::kItemLabelSpacing);
+
+ // The username combobox and password label.
+ layout->StartRowWithPadding(0, column_set_id, 0,
+ views::kRelatedControlVerticalSpacing);
+ combobox_ = GenerateUsernameCombobox(
+ manage_passwords_bubble_model->local_credentials().get(),
+ best_matched_username);
+ combobox_->set_listener(this);
+ layout->AddView(combobox_);
+ label_ = GeneratePasswordLabel(*GetSelectedCredentials());
+ layout->AddView(label_);
+
+ GetLayoutManager()->Layout(this);
+}
+
+const autofill::PasswordForm*
+CredentialsSelectionView::GetSelectedCredentials() {
+ DCHECK_EQ(password_forms_.size(),
+ static_cast<size_t>(combobox_->model()->GetItemCount()));
+ return password_forms_[combobox_->selected_index()];
+}
+
+void CredentialsSelectionView::OnPerformAction(views::Combobox* source) {
+ label_->SetText(GetSelectedCredentials()->password_value);
+}

Powered by Google App Engine
This is Rietveld 408576698