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

Side by Side Diff: chrome/browser/chromeos/options/vpn_config_view.cc

Issue 7453051: This factors out all of the parsing code from the network library (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reducing friends to minimal set. Created 9 years, 4 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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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/vpn_config_view.h" 5 #include "chrome/browser/chromeos/options/vpn_config_view.h"
6 6
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/chromeos/cros/cros_library.h" 9 #include "chrome/browser/chromeos/cros/cros_library.h"
10 #include "chrome/browser/chromeos/login/user_manager.h" 10 #include "chrome/browser/chromeos/login/user_manager.h"
(...skipping 10 matching lines...) Expand all
21 #include "views/controls/label.h" 21 #include "views/controls/label.h"
22 #include "views/controls/textfield/textfield.h" 22 #include "views/controls/textfield/textfield.h"
23 #include "views/layout/grid_layout.h" 23 #include "views/layout/grid_layout.h"
24 #include "views/layout/layout_constants.h" 24 #include "views/layout/layout_constants.h"
25 25
26 namespace { 26 namespace {
27 27
28 // Root CA certificates that are built into Chrome use this token name. 28 // Root CA certificates that are built into Chrome use this token name.
29 const char* const kRootCertificateTokenName = "Builtin Object Token"; 29 const char* const kRootCertificateTokenName = "Builtin Object Token";
30 30
31 string16 ProviderTypeToString(chromeos::VirtualNetwork::ProviderType type) { 31 string16 ProviderTypeToString(chromeos::ProviderType type) {
32 switch (type) { 32 switch (type) {
33 case chromeos::VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK: 33 case chromeos::PROVIDER_TYPE_L2TP_IPSEC_PSK:
34 return l10n_util::GetStringUTF16( 34 return l10n_util::GetStringUTF16(
35 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_L2TP_IPSEC_PSK); 35 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_L2TP_IPSEC_PSK);
36 case chromeos::VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: 36 case chromeos::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT:
37 return l10n_util::GetStringUTF16( 37 return l10n_util::GetStringUTF16(
38 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_L2TP_IPSEC_USER_CERT); 38 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_L2TP_IPSEC_USER_CERT);
39 case chromeos::VirtualNetwork::PROVIDER_TYPE_OPEN_VPN: 39 case chromeos::PROVIDER_TYPE_OPEN_VPN:
40 return l10n_util::GetStringUTF16( 40 return l10n_util::GetStringUTF16(
41 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_OPEN_VPN); 41 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_OPEN_VPN);
42 case chromeos::VirtualNetwork::PROVIDER_TYPE_MAX: 42 case chromeos::PROVIDER_TYPE_MAX:
43 break; 43 break;
44 } 44 }
45 NOTREACHED(); 45 NOTREACHED();
46 return string16(); 46 return string16();
47 } 47 }
48 48
49 } // namespace 49 } // namespace
50 50
51 namespace chromeos { 51 namespace chromeos {
52 52
53 class ProviderTypeComboboxModel : public ui::ComboboxModel { 53 class ProviderTypeComboboxModel : public ui::ComboboxModel {
54 public: 54 public:
55 ProviderTypeComboboxModel() {} 55 ProviderTypeComboboxModel() {}
56 virtual ~ProviderTypeComboboxModel() {} 56 virtual ~ProviderTypeComboboxModel() {}
57 virtual int GetItemCount() { 57 virtual int GetItemCount() {
58 // TODO(stevenjb): Include OpenVPN option once enabled. 58 // TODO(stevenjb): Include OpenVPN option once enabled.
59 return VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT + 1; 59 return PROVIDER_TYPE_L2TP_IPSEC_USER_CERT + 1;
60 // return VirtualNetwork::PROVIDER_TYPE_MAX; 60 // return VirtualNetwork::PROVIDER_TYPE_MAX;
61 } 61 }
62 virtual string16 GetItemAt(int index) { 62 virtual string16 GetItemAt(int index) {
63 VirtualNetwork::ProviderType type = 63 ProviderType type = static_cast<ProviderType>(index);
64 static_cast<VirtualNetwork::ProviderType>(index);
65 return ProviderTypeToString(type); 64 return ProviderTypeToString(type);
66 } 65 }
67 private: 66 private:
68 DISALLOW_COPY_AND_ASSIGN(ProviderTypeComboboxModel); 67 DISALLOW_COPY_AND_ASSIGN(ProviderTypeComboboxModel);
69 }; 68 };
70 69
71 class ServerCACertComboboxModel : public ui::ComboboxModel { 70 class ServerCACertComboboxModel : public ui::ComboboxModel {
72 public: 71 public:
73 explicit ServerCACertComboboxModel(CertLibrary* cert_library) 72 explicit ServerCACertComboboxModel(CertLibrary* cert_library)
74 : cert_library_(cert_library) { 73 : cert_library_(cert_library) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 191
193 void VPNConfigView::ButtonPressed(views::Button* sender, 192 void VPNConfigView::ButtonPressed(views::Button* sender,
194 const views::Event& event) { 193 const views::Event& event) {
195 } 194 }
196 195
197 void VPNConfigView::ItemChanged(views::Combobox* combo_box, 196 void VPNConfigView::ItemChanged(views::Combobox* combo_box,
198 int prev_index, int new_index) { 197 int prev_index, int new_index) {
199 if (prev_index == new_index) 198 if (prev_index == new_index)
200 return; 199 return;
201 if (combo_box == provider_type_combobox_) { 200 if (combo_box == provider_type_combobox_) {
202 provider_type_ = static_cast<VirtualNetwork::ProviderType>(new_index); 201 provider_type_ = static_cast<ProviderType>(new_index);
203 UpdateControls(); 202 UpdateControls();
204 } else if (combo_box == user_cert_combobox_) { 203 } else if (combo_box == user_cert_combobox_ ||
205 } else if (combo_box == server_ca_cert_combobox_) { 204 combo_box == server_ca_cert_combobox_) {
205 // Do nothing.
206 } else { 206 } else {
207 NOTREACHED(); 207 NOTREACHED();
208 } 208 }
209 UpdateErrorLabel(); 209 UpdateErrorLabel();
210 UpdateCanLogin(); 210 UpdateCanLogin();
211 } 211 }
212 212
213 void VPNConfigView::OnCertificatesLoaded(bool initial_load) { 213 void VPNConfigView::OnCertificatesLoaded(bool initial_load) {
214 Refresh(); 214 Refresh();
215 } 215 }
216 216
217 bool VPNConfigView::Login() { 217 bool VPNConfigView::Login() {
218 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); 218 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
219 if (service_path_.empty()) { 219 if (service_path_.empty()) {
220 switch (provider_type_) { 220 switch (provider_type_) {
221 case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK: 221 case PROVIDER_TYPE_L2TP_IPSEC_PSK:
222 cros->ConnectToVirtualNetworkPSK(GetService(), 222 cros->ConnectToVirtualNetworkPSK(GetService(),
223 GetServer(), 223 GetServer(),
224 GetPSKPassphrase(), 224 GetPSKPassphrase(),
225 GetUsername(), 225 GetUsername(),
226 GetUserPassphrase()); 226 GetUserPassphrase());
227 break; 227 break;
228 case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: { 228 case PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: {
229 cros->ConnectToVirtualNetworkCert(GetService(), 229 cros->ConnectToVirtualNetworkCert(GetService(),
230 GetServer(), 230 GetServer(),
231 GetServerCACertNssNickname(), 231 GetServerCACertNssNickname(),
232 GetUserCertID(), 232 GetUserCertID(),
233 GetUsername(), 233 GetUsername(),
234 GetUserPassphrase()); 234 GetUserPassphrase());
235 break; 235 break;
236 } 236 }
237 case VirtualNetwork::PROVIDER_TYPE_OPEN_VPN: 237 case PROVIDER_TYPE_OPEN_VPN:
238 // TODO(stevenjb): Add support for OpenVPN. 238 // TODO(stevenjb): Add support for OpenVPN.
239 LOG(WARNING) << "Unsupported provider type: " << provider_type_; 239 LOG(WARNING) << "Unsupported provider type: " << provider_type_;
240 break; 240 break;
241 case VirtualNetwork::PROVIDER_TYPE_MAX: 241 case PROVIDER_TYPE_MAX:
242 break; 242 break;
243 } 243 }
244 } else { 244 } else {
245 VirtualNetwork* vpn = cros->FindVirtualNetworkByPath(service_path_); 245 VirtualNetwork* vpn = cros->FindVirtualNetworkByPath(service_path_);
246 if (!vpn) { 246 if (!vpn) {
247 // TODO(stevenjb): Add notification for this. 247 // TODO(stevenjb): Add notification for this.
248 LOG(WARNING) << "VPN no longer exists: " << service_path_; 248 LOG(WARNING) << "VPN no longer exists: " << service_path_;
249 return true; // Close dialog. 249 return true; // Close dialog.
250 } 250 }
251 switch (provider_type_) { 251 switch (provider_type_) {
252 case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK: 252 case PROVIDER_TYPE_L2TP_IPSEC_PSK:
253 vpn->SetPSKPassphrase(GetPSKPassphrase()); 253 vpn->SetPSKPassphrase(GetPSKPassphrase());
254 break; 254 break;
255 case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: { 255 case PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: {
256 vpn->SetClientCertID(GetUserCertID()); 256 vpn->SetClientCertID(GetUserCertID());
257 break; 257 break;
258 } 258 }
259 case VirtualNetwork::PROVIDER_TYPE_OPEN_VPN: { 259 case PROVIDER_TYPE_OPEN_VPN: {
260 LOG(WARNING) << "OpenVPN not yet supported."; 260 LOG(WARNING) << "OpenVPN not yet supported.";
261 break; 261 break;
262 } 262 }
263 case VirtualNetwork::PROVIDER_TYPE_MAX: 263 case PROVIDER_TYPE_MAX:
264 break; 264 break;
265 } 265 }
266 vpn->SetUsername(GetUsername()); 266 vpn->SetUsername(GetUsername());
267 vpn->SetUserPassphrase(GetUserPassphrase()); 267 vpn->SetUserPassphrase(GetUserPassphrase());
268 268
269 cros->ConnectToVirtualNetwork(vpn); 269 cros->ConnectToVirtualNetwork(vpn);
270 } 270 }
271 // Connection failures are responsible for updating the UI, including 271 // Connection failures are responsible for updating the UI, including
272 // reopening dialogs. 272 // reopening dialogs.
273 return true; // Close dialog. 273 return true; // Close dialog.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 // Textfield, combobox. 364 // Textfield, combobox.
365 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, 365 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
366 views::GridLayout::USE_PREF, 0, 366 views::GridLayout::USE_PREF, 0,
367 ChildNetworkConfigView::kInputFieldMinWidth); 367 ChildNetworkConfigView::kInputFieldMinWidth);
368 column_set->AddPaddingColumn(0, views::kRelatedControlSmallHorizontalSpacing); 368 column_set->AddPaddingColumn(0, views::kRelatedControlSmallHorizontalSpacing);
369 369
370 // Initialize members. 370 // Initialize members.
371 service_text_modified_ = false; 371 service_text_modified_ = false;
372 provider_type_ = vpn ? 372 provider_type_ = vpn ?
373 vpn->provider_type() : 373 vpn->provider_type() :
374 chromeos::VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK; 374 chromeos::PROVIDER_TYPE_L2TP_IPSEC_PSK;
375 375
376 // Server label and input. 376 // Server label and input.
377 layout->StartRow(0, column_view_set_id); 377 layout->StartRow(0, column_view_set_id);
378 layout->AddView(new views::Label(UTF16ToWide(l10n_util::GetStringUTF16( 378 layout->AddView(new views::Label(UTF16ToWide(l10n_util::GetStringUTF16(
379 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_VPN_SERVER_HOSTNAME)))); 379 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_VPN_SERVER_HOSTNAME))));
380 if (!vpn) { 380 if (!vpn) {
381 server_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT); 381 server_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT);
382 server_textfield_->SetController(this); 382 server_textfield_->SetController(this);
383 layout->AddView(server_textfield_); 383 layout->AddView(server_textfield_);
384 server_text_ = NULL; 384 server_text_ = NULL;
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 } else { 535 } else {
536 user_cert_combobox_->SetSelectedItem(0); 536 user_cert_combobox_->SetSelectedItem(0);
537 } 537 }
538 538
539 UpdateErrorLabel(); 539 UpdateErrorLabel();
540 } 540 }
541 541
542 void VPNConfigView::UpdateControls() { 542 void VPNConfigView::UpdateControls() {
543 // Enable controls. 543 // Enable controls.
544 switch (provider_type_) { 544 switch (provider_type_) {
545 case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_PSK: 545 case PROVIDER_TYPE_L2TP_IPSEC_PSK:
546 psk_passphrase_label_->SetEnabled(true); 546 psk_passphrase_label_->SetEnabled(true);
547 psk_passphrase_textfield_->SetEnabled(true); 547 psk_passphrase_textfield_->SetEnabled(true);
548 server_ca_cert_label_->SetEnabled(false); 548 server_ca_cert_label_->SetEnabled(false);
549 server_ca_cert_combobox_->SetEnabled(false); 549 server_ca_cert_combobox_->SetEnabled(false);
550 user_cert_label_->SetEnabled(false); 550 user_cert_label_->SetEnabled(false);
551 user_cert_combobox_->SetEnabled(false); 551 user_cert_combobox_->SetEnabled(false);
552 break; 552 break;
553 case VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT: 553 case PROVIDER_TYPE_L2TP_IPSEC_USER_CERT:
554 psk_passphrase_label_->SetEnabled(false); 554 psk_passphrase_label_->SetEnabled(false);
555 psk_passphrase_textfield_->SetEnabled(false); 555 psk_passphrase_textfield_->SetEnabled(false);
556 server_ca_cert_label_->SetEnabled(true); 556 server_ca_cert_label_->SetEnabled(true);
557 server_ca_cert_combobox_->SetEnabled(true); 557 server_ca_cert_combobox_->SetEnabled(true);
558 user_cert_label_->SetEnabled(true); 558 user_cert_label_->SetEnabled(true);
559 // Only enable the combobox if the user actually has a cert to select. 559 // Only enable the combobox if the user actually has a cert to select.
560 user_cert_combobox_->SetEnabled(HaveUserCerts()); 560 user_cert_combobox_->SetEnabled(HaveUserCerts());
561 break; 561 break;
562 case VirtualNetwork::PROVIDER_TYPE_OPEN_VPN: 562 case PROVIDER_TYPE_OPEN_VPN:
563 psk_passphrase_label_->SetEnabled(false); 563 psk_passphrase_label_->SetEnabled(false);
564 psk_passphrase_textfield_->SetEnabled(false); 564 psk_passphrase_textfield_->SetEnabled(false);
565 server_ca_cert_label_->SetEnabled(false); 565 server_ca_cert_label_->SetEnabled(false);
566 server_ca_cert_combobox_->SetEnabled(false); 566 server_ca_cert_combobox_->SetEnabled(false);
567 user_cert_label_->SetEnabled(true); 567 user_cert_label_->SetEnabled(true);
568 // Only enable the combobox if the user actually has a cert to select. 568 // Only enable the combobox if the user actually has a cert to select.
569 user_cert_combobox_->SetEnabled(HaveUserCerts()); 569 user_cert_combobox_->SetEnabled(HaveUserCerts());
570 break; 570 break;
571 default: 571 default:
572 NOTREACHED(); 572 NOTREACHED();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 } else { 606 } else {
607 error_label_->SetVisible(false); 607 error_label_->SetVisible(false);
608 } 608 }
609 } 609 }
610 610
611 void VPNConfigView::UpdateCanLogin() { 611 void VPNConfigView::UpdateCanLogin() {
612 parent_->GetDialogClientView()->UpdateDialogButtons(); 612 parent_->GetDialogClientView()->UpdateDialogButtons();
613 } 613 }
614 614
615 bool VPNConfigView::UserCertRequired() const { 615 bool VPNConfigView::UserCertRequired() const {
616 return provider_type_ == VirtualNetwork::PROVIDER_TYPE_L2TP_IPSEC_USER_CERT 616 return provider_type_ == PROVIDER_TYPE_L2TP_IPSEC_USER_CERT
617 || provider_type_ == VirtualNetwork::PROVIDER_TYPE_OPEN_VPN; 617 || provider_type_ == PROVIDER_TYPE_OPEN_VPN;
618 } 618 }
619 619
620 bool VPNConfigView::HaveUserCerts() const { 620 bool VPNConfigView::HaveUserCerts() const {
621 return cert_library_->GetUserCertificates().Size() > 0; 621 return cert_library_->GetUserCertificates().Size() > 0;
622 } 622 }
623 623
624 bool VPNConfigView::IsUserCertValid() const { 624 bool VPNConfigView::IsUserCertValid() const {
625 if (!user_cert_combobox_ || !user_cert_combobox_->IsEnabled()) 625 if (!user_cert_combobox_ || !user_cert_combobox_->IsEnabled())
626 return false; 626 return false;
627 int selected = user_cert_combobox_->selected_item(); 627 int selected = user_cert_combobox_->selected_item();
(...skipping 10 matching lines...) Expand all
638 views::Textfield* textfield, bool trim_whitespace) const { 638 views::Textfield* textfield, bool trim_whitespace) const {
639 std::string untrimmed = UTF16ToUTF8(textfield->text()); 639 std::string untrimmed = UTF16ToUTF8(textfield->text());
640 if (!trim_whitespace) 640 if (!trim_whitespace)
641 return untrimmed; 641 return untrimmed;
642 std::string result; 642 std::string result;
643 TrimWhitespaceASCII(untrimmed, TRIM_ALL, &result); 643 TrimWhitespaceASCII(untrimmed, TRIM_ALL, &result);
644 return result; 644 return result;
645 } 645 }
646 646
647 } // namespace chromeos 647 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/options/vpn_config_view.h ('k') | chrome/browser/ui/webui/chromeos/sim_unlock_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698