| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/chromeos/options/wifi_config_view.h" | 5 #include "chrome/browser/chromeos/options/wifi_config_view.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 | 188 |
| 189 void WifiConfigView::FocusFirstField() { | 189 void WifiConfigView::FocusFirstField() { |
| 190 if (ssid_textfield_) | 190 if (ssid_textfield_) |
| 191 ssid_textfield_->RequestFocus(); | 191 ssid_textfield_->RequestFocus(); |
| 192 else if (identity_textfield_) | 192 else if (identity_textfield_) |
| 193 identity_textfield_->RequestFocus(); | 193 identity_textfield_->RequestFocus(); |
| 194 else if (passphrase_textfield_) | 194 else if (passphrase_textfield_) |
| 195 passphrase_textfield_->RequestFocus(); | 195 passphrase_textfield_->RequestFocus(); |
| 196 } | 196 } |
| 197 | 197 |
| 198 // Parse 'path' to determine if the certificate is stored in a pkcs#11 device. | |
| 199 // flimflam recognizes the string "SETTINGS:" to specify authentication | |
| 200 // parameters. 'key_id=' indicates that the certificate is stored in a pkcs#11 | |
| 201 // device. See src/third_party/flimflam/files/doc/service-api.txt. | |
| 202 static bool is_certificate_in_pkcs11(const std::string& path) { | |
| 203 static const std::string settings_string("SETTINGS:"); | |
| 204 static const std::string pkcs11_key("key_id"); | |
| 205 if (path.find(settings_string) == 0) { | |
| 206 std::string::size_type idx = path.find(pkcs11_key); | |
| 207 if (idx != std::string::npos) | |
| 208 idx = path.find_first_not_of(kWhitespaceASCII, idx + pkcs11_key.length()); | |
| 209 if (idx != std::string::npos && path[idx] == '=') | |
| 210 return true; | |
| 211 } | |
| 212 return false; | |
| 213 } | |
| 214 | |
| 215 void WifiConfigView::Init() { | 198 void WifiConfigView::Init() { |
| 216 views::GridLayout* layout = CreatePanelGridLayout(this); | 199 views::GridLayout* layout = CreatePanelGridLayout(this); |
| 217 SetLayoutManager(layout); | 200 SetLayoutManager(layout); |
| 218 | 201 |
| 219 int column_view_set_id = 0; | 202 int column_view_set_id = 0; |
| 220 views::ColumnSet* column_set = layout->AddColumnSet(column_view_set_id); | 203 views::ColumnSet* column_set = layout->AddColumnSet(column_view_set_id); |
| 221 // Label | 204 // Label |
| 222 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, | 205 column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, |
| 223 views::GridLayout::USE_PREF, 0, 0); | 206 views::GridLayout::USE_PREF, 0, 0); |
| 224 // Textfield | 207 // Textfield |
| (...skipping 10 matching lines...) Expand all Loading... |
| 235 ssid_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT); | 218 ssid_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT); |
| 236 ssid_textfield_->SetController(this); | 219 ssid_textfield_->SetController(this); |
| 237 layout->AddView(ssid_textfield_); | 220 layout->AddView(ssid_textfield_); |
| 238 } else { | 221 } else { |
| 239 views::Label* label = new views::Label(ASCIIToWide(wifi_.name())); | 222 views::Label* label = new views::Label(ASCIIToWide(wifi_.name())); |
| 240 label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 223 label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
| 241 layout->AddView(label); | 224 layout->AddView(label); |
| 242 } | 225 } |
| 243 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 226 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| 244 | 227 |
| 245 // Certificates stored in a pkcs11 device can not be browsed | 228 // Loaded certificates (i.e. stored in a pkcs11 device) do not require |
| 246 // and do not require a passphrase. | 229 // a passphrase. |
| 247 bool certificate_in_pkcs11 = false; | 230 bool certificate_loaded = false; |
| 248 | 231 |
| 249 // Add ID and cert password if we're using 802.1x | 232 // Add ID and cert password if we're using 802.1x |
| 250 // XXX we're cheating and assuming 802.1x means EAP-TLS - not true | 233 // XXX we're cheating and assuming 802.1x means EAP-TLS - not true |
| 251 // in general, but very common. WPA Supplicant doesn't report the | 234 // in general, but very common. WPA Supplicant doesn't report the |
| 252 // EAP type because it's unknown until the process begins, and we'd | 235 // EAP type because it's unknown until the process begins, and we'd |
| 253 // need some kind of callback. | 236 // need some kind of callback. |
| 254 if (wifi_.encrypted() && wifi_.encryption() == SECURITY_8021X) { | 237 if (wifi_.encrypted() && wifi_.encryption() == SECURITY_8021X) { |
| 255 layout->StartRow(0, column_view_set_id); | 238 layout->StartRow(0, column_view_set_id); |
| 256 layout->AddView(new views::Label(l10n_util::GetString( | 239 layout->AddView(new views::Label(l10n_util::GetString( |
| 257 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_IDENTITY))); | 240 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_IDENTITY))); |
| 258 identity_textfield_ = new views::Textfield( | 241 identity_textfield_ = new views::Textfield( |
| 259 views::Textfield::STYLE_DEFAULT); | 242 views::Textfield::STYLE_DEFAULT); |
| 260 identity_textfield_->SetController(this); | 243 identity_textfield_->SetController(this); |
| 261 if (!wifi_.identity().empty()) | 244 if (!wifi_.identity().empty()) |
| 262 identity_textfield_->SetText(UTF8ToUTF16(wifi_.identity())); | 245 identity_textfield_->SetText(UTF8ToUTF16(wifi_.identity())); |
| 263 layout->AddView(identity_textfield_); | 246 layout->AddView(identity_textfield_); |
| 264 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 247 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| 265 layout->StartRow(0, column_view_set_id); | 248 layout->StartRow(0, column_view_set_id); |
| 266 layout->AddView(new views::Label(l10n_util::GetString( | 249 layout->AddView(new views::Label(l10n_util::GetString( |
| 267 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT))); | 250 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT))); |
| 268 if (!wifi_.cert_path().empty()) { | 251 if (!wifi_.cert_path().empty()) { |
| 269 certificate_path_ = wifi_.cert_path(); | 252 certificate_path_ = wifi_.cert_path(); |
| 270 certificate_in_pkcs11 = is_certificate_in_pkcs11(certificate_path_); | 253 certificate_loaded = wifi_.IsCertificateLoaded(); |
| 271 } | 254 } |
| 272 if (certificate_in_pkcs11) { | 255 if (certificate_loaded) { |
| 273 std::wstring label = l10n_util::GetString( | 256 std::wstring label = l10n_util::GetString( |
| 274 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_INSTALLED); | 257 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_INSTALLED); |
| 275 views::Label* cert_text = new views::Label(label); | 258 views::Label* cert_text = new views::Label(label); |
| 276 cert_text->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 259 cert_text->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
| 277 layout->AddView(cert_text); | 260 layout->AddView(cert_text); |
| 278 } else { | 261 } else { |
| 279 std::wstring label; | 262 std::wstring label; |
| 280 if (!certificate_path_.empty()) | 263 if (!certificate_path_.empty()) |
| 281 label = UTF8ToWide(certificate_path_); | 264 label = UTF8ToWide(certificate_path_); |
| 282 else | 265 else |
| 283 label = l10n_util::GetString( | 266 label = l10n_util::GetString( |
| 284 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_BUTTON); | 267 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_BUTTON); |
| 285 certificate_browse_button_ = new views::NativeButton(this, label); | 268 certificate_browse_button_ = new views::NativeButton(this, label); |
| 286 layout->AddView(certificate_browse_button_); | 269 layout->AddView(certificate_browse_button_); |
| 287 } | 270 } |
| 288 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 271 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| 289 } | 272 } |
| 290 | 273 |
| 291 // Add passphrase if other_network or wifi is encrypted. | 274 // Add passphrase if other_network or wifi is encrypted. |
| 292 if (other_network_ || (wifi_.encrypted() && !certificate_in_pkcs11)) { | 275 if (other_network_ || (wifi_.encrypted() && !certificate_loaded)) { |
| 293 layout->StartRow(0, column_view_set_id); | 276 layout->StartRow(0, column_view_set_id); |
| 294 int label_text_id; | 277 int label_text_id; |
| 295 if (wifi_.encryption() == SECURITY_8021X) | 278 if (wifi_.encryption() == SECURITY_8021X) |
| 296 label_text_id = | 279 label_text_id = |
| 297 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PRIVATE_KEY_PASSWORD; | 280 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PRIVATE_KEY_PASSWORD; |
| 298 else | 281 else |
| 299 label_text_id = IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE; | 282 label_text_id = IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE; |
| 300 layout->AddView(new views::Label(l10n_util::GetString(label_text_id))); | 283 layout->AddView(new views::Label(l10n_util::GetString(label_text_id))); |
| 301 passphrase_textfield_ = new views::Textfield( | 284 passphrase_textfield_ = new views::Textfield( |
| 302 views::Textfield::STYLE_PASSWORD); | 285 views::Textfield::STYLE_PASSWORD); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 // For other network, default to autoconnect. | 322 // For other network, default to autoconnect. |
| 340 bool autoconnect = other_network_ || wifi_.auto_connect(); | 323 bool autoconnect = other_network_ || wifi_.auto_connect(); |
| 341 autoconnect_checkbox_->SetChecked(autoconnect); | 324 autoconnect_checkbox_->SetChecked(autoconnect); |
| 342 layout->StartRow(0, column_view_set_id); | 325 layout->StartRow(0, column_view_set_id); |
| 343 layout->AddView(autoconnect_checkbox_, 3, 1); | 326 layout->AddView(autoconnect_checkbox_, 3, 1); |
| 344 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 327 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| 345 } | 328 } |
| 346 } | 329 } |
| 347 | 330 |
| 348 } // namespace chromeos | 331 } // namespace chromeos |
| OLD | NEW |