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

Side by Side Diff: chrome/browser/ui/crypto_module_password_dialog_view.cc

Issue 8115020: add crypto module password dialog view and test. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: fix window's dependencies Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/crypto_module_password_dialog_view.h"
6
7 #include "base/basictypes.h"
8 #include "base/bind.h"
9 #include "base/utf_string_conversions.h"
10 #include "googleurl/src/gurl.h"
11 #include "grit/generated_resources.h"
12 #include "ui/base/l10n/l10n_util.h"
13 #include "views/controls/button/text_button.h"
14 #include "views/controls/label.h"
15 #include "views/controls/textfield/textfield.h"
16 #include "views/layout/grid_layout.h"
17 #include "views/layout/layout_constants.h"
18
19 namespace browser {
20 // CryptoModulePasswordDialogView
21 ////////////////////////////////////////////////////////////////////////////////
22 CryptoModulePasswordDialogView::CryptoModulePasswordDialogView(
23 const std::string& slot_name,
24 browser::CryptoModulePasswordReason reason,
25 const std::string& server,
26 const base::Callback<void(const char*)>& callback)
27 : callback_(callback) {
28 Init(server, slot_name, reason);
29 }
30
31 void CryptoModulePasswordDialogView::Init(
32 const std::string& server,
33 const std::string& slot_name,
34 browser::CryptoModulePasswordReason reason) {
35
36 // Select an appropriate text for the reason.
37 std::string text;
38 const string16& server16 = UTF8ToUTF16(server);
39 const string16& slot16 = UTF8ToUTF16(slot_name);
40 switch (reason) {
41 case browser::kCryptoModulePasswordKeygen:
42 text = l10n_util::GetStringFUTF8(
43 IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_KEYGEN, slot16, server16);
44 break;
45 case browser::kCryptoModulePasswordCertEnrollment:
46 text = l10n_util::GetStringFUTF8(
47 IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_ENROLLMENT, slot16, server16);
48 break;
49 case browser::kCryptoModulePasswordClientAuth:
50 text = l10n_util::GetStringFUTF8(
51 IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CLIENT_AUTH, slot16, server16);
52 break;
53 case browser::kCryptoModulePasswordListCerts:
54 text = l10n_util::GetStringFUTF8(
55 IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_LIST_CERTS, slot16);
56 break;
57 case browser::kCryptoModulePasswordCertImport:
58 text = l10n_util::GetStringFUTF8(
59 IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_IMPORT, slot16);
60 break;
61 case browser::kCryptoModulePasswordCertExport:
62 text = l10n_util::GetStringFUTF8(
63 IDS_CRYPTO_MODULE_AUTH_DIALOG_TEXT_CERT_EXPORT, slot16);
64 break;
65 default:
66 NOTREACHED();
67 }
68 reason_label_ = new views::Label();
69 reason_label_->SetText(UTF8ToWide(text));
70 reason_label_->SetMultiLine(true);
71 reason_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
72
73 password_label_ = new views::Label();
74 password_label_->SetText(UTF8ToWide(
75 l10n_util::GetStringUTF8(
76 IDS_CRYPTO_MODULE_AUTH_DIALOG_PASSWORD_FIELD)));
77 password_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
78
79 password_entry_ = new views::Textfield(views::Textfield::STYLE_PASSWORD);
80 password_entry_->SetController(this);
81
82 views::GridLayout* layout = views::GridLayout::CreatePanel(this);
83 SetLayoutManager(layout);
84
85 views::ColumnSet* column_set = layout->AddColumnSet(0);
86 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1,
87 views::GridLayout::USE_PREF, 0, 0);
88 column_set->AddPaddingColumn(
89 0, views::kUnrelatedControlLargeHorizontalSpacing);
90 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1,
91 views::GridLayout::USE_PREF, 0, 0);
92
93 layout->StartRow(0, 0);
94 layout->AddView(reason_label_);
95 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
96
97 layout->StartRow(0, 0);
98 layout->AddView(password_label_);
99 layout->AddView(password_entry_);
100 layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
101 }
102
103 views::View* CryptoModulePasswordDialogView::GetInitiallyFocusedView() {
104 return password_entry_;
105 }
106 bool CryptoModulePasswordDialogView::IsModal() const {
107 return true;
108 }
109 views::View* CryptoModulePasswordDialogView::GetContentsView() {
110 return this;
111 }
112
113 std::wstring CryptoModulePasswordDialogView::GetDialogButtonLabel(
114 ui::MessageBoxFlags::DialogButton button) const {
115 if (button == ui::MessageBoxFlags::DIALOGBUTTON_OK)
116 return UTF8ToWide(l10n_util::GetStringUTF8(
117 IDS_CRYPTO_MODULE_AUTH_DIALOG_OK_BUTTON_LABEL));
118 else if (button == ui::MessageBoxFlags::DIALOGBUTTON_CANCEL)
Greg Spencer (Chromium) 2011/10/05 23:41:16 remove extra space after the "=="
alicet1 2011/10/06 22:04:08 Done.
119 return UTF8ToWide(l10n_util::GetStringUTF8(IDS_CANCEL));
120 return L"";
121 }
122
123 bool CryptoModulePasswordDialogView::Accept() {
124 callback_.Run(UTF16ToUTF8(password_entry_->text()).c_str());
125 string16 empty;
Greg Spencer (Chromium) 2011/10/05 23:41:16 probably can be const.
alicet1 2011/10/06 22:04:08 Done.
126 password_entry_->SetText(empty);
127 return true;
128 }
129
130 bool CryptoModulePasswordDialogView::Cancel() {
131 callback_.Run(static_cast<const char*>(NULL));
132 string16 empty;
133 password_entry_->SetText(empty);
134 return true;
135 }
136
137 bool CryptoModulePasswordDialogView::HandleKeyEvent(
138 views::Textfield* sender,
139 const views::KeyEvent& keystroke) {
140 return false;
141 }
142
143 string16 CryptoModulePasswordDialogView::GetWindowTitle() const {
144 return UTF8ToUTF16(l10n_util::GetStringUTF8(
145 IDS_CRYPTO_MODULE_AUTH_DIALOG_TITLE));
146 }
147 } // namespace browser
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698