15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/options/wifi_config_view.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "ash/system/chromeos/network/network_connect.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/bind.h" 95e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "base/strings/string_util.h" 105e3f23d412006dc4db4e659864679f29341e113fTorne (Richard Coles)#include "base/strings/stringprintf.h" 11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/enrollment_dialog_view.h" 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/chromeos/net/onc_utils.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/options/passphrase_textfield.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/theme_resources.h" 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/login/login_state.h" 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chromeos/network/client_cert_util.h" 20ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_configuration_handler.h" 21ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_event_log.h" 22ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_handler.h" 23ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_state.h" 24ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "chromeos/network/network_state_handler.h" 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chromeos/network/network_ui_data.h" 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/network/shill_property_util.h" 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "components/onc/onc_constants.h" 28ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "third_party/cros_system_api/dbus/service_constants.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/event.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/checkbox.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/image_button.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/combobox/combobox.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/label.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/textfield/textfield.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/grid_layout.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/layout_constants.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/dialog_client_view.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Combobox that supports a preferred width. Used by Server CA combobox 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// because the strings inside it are too wide. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ComboboxWithWidth : public views::Combobox { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ComboboxWithWidth(ui::ComboboxModel* model, int width) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : Combobox(model), 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) width_(width) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ComboboxWithWidth() {} 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual gfx::Size GetPreferredSize() const OVERRIDE { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Size size = Combobox::GetPreferredSize(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size.set_width(width_); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return size; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int width_; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ComboboxWithWidth); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum SecurityComboboxIndex { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SECURITY_INDEX_NONE = 0, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SECURITY_INDEX_WEP = 1, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SECURITY_INDEX_PSK = 2, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SECURITY_INDEX_COUNT = 3 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Methods in alphabetical order. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum EAPMethodComboboxIndex { 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAP_METHOD_INDEX_NONE = 0, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAP_METHOD_INDEX_LEAP = 1, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAP_METHOD_INDEX_PEAP = 2, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAP_METHOD_INDEX_TLS = 3, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAP_METHOD_INDEX_TTLS = 4, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAP_METHOD_INDEX_COUNT = 5 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum Phase2AuthComboboxIndex { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_AUTO = 0, // LEAP, EAP-TLS have only this auth. 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_MD5 = 1, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_MSCHAPV2 = 2, // PEAP has up to this auth. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_MSCHAP = 3, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_PAP = 4, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_CHAP = 5, // EAP-TTLS has up to this auth. 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PHASE_2_AUTH_INDEX_COUNT = 6 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid ShillError(const std::string& function, 93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& error_name, 94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch scoped_ptr<base::DictionaryValue> error_data) { 95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch NET_LOG_ERROR("Shill Error from WifiConfigView: " + error_name, function); 96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace internal { 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SecurityComboboxModel : public ui::ComboboxModel { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SecurityComboboxModel(); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~SecurityComboboxModel(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::ComboboxModel: 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE; 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetItemAt(int index) OVERRIDE; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SecurityComboboxModel); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EAPMethodComboboxModel : public ui::ComboboxModel { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EAPMethodComboboxModel(); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~EAPMethodComboboxModel(); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::ComboboxModel: 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE; 122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetItemAt(int index) OVERRIDE; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(EAPMethodComboboxModel); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Phase2AuthComboboxModel : public ui::ComboboxModel { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit Phase2AuthComboboxModel(views::Combobox* eap_method_combobox); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Phase2AuthComboboxModel(); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::ComboboxModel: 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE; 135a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetItemAt(int index) OVERRIDE; 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Combobox* eap_method_combobox_; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Phase2AuthComboboxModel); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ServerCACertComboboxModel : public ui::ComboboxModel { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ServerCACertComboboxModel(); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ServerCACertComboboxModel(); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::ComboboxModel: 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE; 150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetItemAt(int index) OVERRIDE; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ServerCACertComboboxModel); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UserCertComboboxModel : public ui::ComboboxModel { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 158424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) explicit UserCertComboboxModel(WifiConfigView* owner); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~UserCertComboboxModel(); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from ui::ComboboxModel: 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE; 163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetItemAt(int index) OVERRIDE; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 166424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) WifiConfigView* owner_; 167424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UserCertComboboxModel); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SecurityComboboxModel ------------------------------------------------------- 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SecurityComboboxModel::SecurityComboboxModel() { 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SecurityComboboxModel::~SecurityComboboxModel() { 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int SecurityComboboxModel::GetItemCount() const { 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SECURITY_INDEX_COUNT; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 SecurityComboboxModel::GetItemAt(int index) { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index == SECURITY_INDEX_NONE) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SECURITY_NONE); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == SECURITY_INDEX_WEP) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SECURITY_WEP); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == SECURITY_INDEX_PSK) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SECURITY_PSK); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// EAPMethodComboboxModel ------------------------------------------------------ 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EAPMethodComboboxModel::EAPMethodComboboxModel() { 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EAPMethodComboboxModel::~EAPMethodComboboxModel() { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int EAPMethodComboboxModel::GetItemCount() const { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return EAP_METHOD_INDEX_COUNT; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 207a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 EAPMethodComboboxModel::GetItemAt(int index) { 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index == EAP_METHOD_INDEX_NONE) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD_NONE); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == EAP_METHOD_INDEX_LEAP) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD_LEAP); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == EAP_METHOD_INDEX_PEAP) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD_PEAP); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == EAP_METHOD_INDEX_TLS) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD_TLS); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == EAP_METHOD_INDEX_TTLS) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD_TTLS); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 224a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Phase2AuthComboboxModel ----------------------------------------------------- 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Phase2AuthComboboxModel::Phase2AuthComboboxModel( 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::Combobox* eap_method_combobox) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : eap_method_combobox_(eap_method_combobox) { 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Phase2AuthComboboxModel::~Phase2AuthComboboxModel() { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int Phase2AuthComboboxModel::GetItemCount() const { 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (eap_method_combobox_->selected_index()) { 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_NONE: 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_TLS: 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_LEAP: 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PHASE_2_AUTH_INDEX_AUTO + 1; 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_PEAP: 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PHASE_2_AUTH_INDEX_MSCHAPV2 + 1; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_TTLS: 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return PHASE_2_AUTH_INDEX_CHAP + 1; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 252a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 Phase2AuthComboboxModel::GetItemAt(int index) { 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index == PHASE_2_AUTH_INDEX_AUTO) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH_AUTO); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == PHASE_2_AUTH_INDEX_MD5) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH_MD5); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == PHASE_2_AUTH_INDEX_MSCHAPV2) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH_MSCHAPV2); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == PHASE_2_AUTH_INDEX_MSCHAP) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH_MSCHAP); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == PHASE_2_AUTH_INDEX_PAP) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH_PAP); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (index == PHASE_2_AUTH_INDEX_CHAP) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH_CHAP); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 272a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return base::string16(); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ServerCACertComboboxModel --------------------------------------------------- 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ServerCACertComboboxModel::ServerCACertComboboxModel() { 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ServerCACertComboboxModel::~ServerCACertComboboxModel() { 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int ServerCACertComboboxModel::GetItemCount() const { 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CertLibrary::Get()->CertificatesLoading()) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; // "Loading" 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First "Default", then the certs, then "Do not check". 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return CertLibrary::Get()->NumCertificates( 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::CERT_TYPE_SERVER_CA) + 2; 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 291a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 ServerCACertComboboxModel::GetItemAt(int index) { 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CertLibrary::Get()->CertificatesLoading()) 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_LOADING); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index == 0) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_SERVER_CA_DEFAULT); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index == GetItemCount() - 1) 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_SERVER_CA_DO_NOT_CHECK); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cert_index = index - 1; 302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return CertLibrary::Get()->GetCertDisplayStringAt( 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::CERT_TYPE_SERVER_CA, cert_index); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// UserCertComboboxModel ------------------------------------------------------- 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 308424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)UserCertComboboxModel::UserCertComboboxModel(WifiConfigView* owner) 309424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) : owner_(owner) { 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UserCertComboboxModel::~UserCertComboboxModel() { 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int UserCertComboboxModel::GetItemCount() const { 316424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if (!owner_->UserCertActive()) 31723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return 1; // "None installed" (combobox must have at least 1 entry) 318c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CertLibrary::Get()->CertificatesLoading()) 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; // "Loading" 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int num_certs = 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::Get()->NumCertificates(CertLibrary::CERT_TYPE_USER); 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (num_certs == 0) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 1; // "None installed" 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return num_certs; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 327a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 UserCertComboboxModel::GetItemAt(int index) { 328424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if (!owner_->UserCertActive()) 32923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return l10n_util::GetStringUTF16( 33023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_USER_CERT_NONE_INSTALLED); 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CertLibrary::Get()->CertificatesLoading()) 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_LOADING); 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CertLibrary::Get()->NumCertificates(CertLibrary::CERT_TYPE_USER) == 0) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return l10n_util::GetStringUTF16( 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_USER_CERT_NONE_INSTALLED); 337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return CertLibrary::Get()->GetCertDisplayStringAt( 338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::CERT_TYPE_USER, index); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace internal 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 343ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben MurdochWifiConfigView::WifiConfigView(NetworkConfigView* parent, 344ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& service_path, 345ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool show_8021x) 346ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch : ChildNetworkConfigView(parent, service_path), 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ssid_textfield_(NULL), 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eap_method_combobox_(NULL), 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_label_(NULL), 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_(NULL), 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_label_(NULL), 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_(NULL), 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_label_(NULL), 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_(NULL), 3553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) subject_match_label_(NULL), 3563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) subject_match_textfield_(NULL), 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_label_(NULL), 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_textfield_(NULL), 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_label_(NULL), 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_textfield_(NULL), 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_credentials_checkbox_(NULL), 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) share_network_checkbox_(NULL), 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shared_network_label_(NULL), 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) security_combobox_(NULL), 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_label_(NULL), 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_textfield_(NULL), 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_(NULL), 368ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch error_label_(NULL), 369ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch weak_ptr_factory_(this) { 370ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Init(show_8021x); 371ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch NetworkHandler::Get()->network_state_handler()->AddObserver(this, FROM_HERE); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WifiConfigView::~WifiConfigView() { 3754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) RemoveAllChildViews(true); // Destroy children before models 376ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (NetworkHandler::IsInitialized()) { 377ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch NetworkHandler::Get()->network_state_handler()->RemoveObserver( 378ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch this, FROM_HERE); 379ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::Get()->RemoveObserver(this); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 383a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)base::string16 WifiConfigView::GetTitle() const { 384effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network = GetNetworkState(); 385effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network && network->type() == shill::kTypeEthernet) 386effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_CONFIGURE_ETHERNET); 38790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_JOIN_WIFI_NETWORKS); 38890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 38990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::View* WifiConfigView::GetInitiallyFocusedView() { 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Return a reasonable widget for initial focus, 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // depending on what we're showing. 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ssid_textfield_) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ssid_textfield_; 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (eap_method_combobox_) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return eap_method_combobox_; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (passphrase_textfield_ && passphrase_textfield_->enabled()) 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return passphrase_textfield_; 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::CanLogin() { 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const size_t kMinWirelessPasswordLen = 5; 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 406effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // We either have an existing network or the user entered an SSID. 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (service_path_.empty() && GetSsid().empty()) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If the network requires a passphrase, make sure it is the right length. 41158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (passphrase_textfield_ != NULL && 41258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) passphrase_textfield_->enabled() && 41358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) !passphrase_textfield_->show_fake() && 41458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) passphrase_textfield_->text().length() < kMinWirelessPasswordLen) 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If we're using EAP, we must have a method. 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (eap_method_combobox_ && 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eap_method_combobox_->selected_index() == EAP_METHOD_INDEX_NONE) 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Block login if certs are required but user has none. 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (UserCertRequired() && (!HaveUserCerts() || !IsUserCertValid())) 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::UserCertRequired() const { 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return UserCertActive(); 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::HaveUserCerts() const { 434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return CertLibrary::Get()->NumCertificates(CertLibrary::CERT_TYPE_USER) > 0; 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::IsUserCertValid() const { 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!UserCertActive()) 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = user_cert_combobox_->selected_index(); 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index < 0) 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Currently only hardware-backed user certificates are valid. 444c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (CertLibrary::Get()->IsHardwareBacked() && 445c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) !CertLibrary::Get()->IsCertHardwareBackedAt( 446c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::CERT_TYPE_USER, index)) 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::Phase2AuthActive() const { 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (phase_2_auth_combobox_) 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return phase_2_auth_combobox_->model()->GetItemCount() > 1; 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::PassphraseActive() const { 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (eap_method_combobox_) { 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No password for EAP-TLS. 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = eap_method_combobox_->selected_index(); 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return index != EAP_METHOD_INDEX_NONE && index != EAP_METHOD_INDEX_TLS; 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (security_combobox_) { 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return security_combobox_->selected_index() != SECURITY_INDEX_NONE; 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::UserCertActive() const { 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // User certs only for EAP-TLS. 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (eap_method_combobox_) 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return eap_method_combobox_->selected_index() == EAP_METHOD_INDEX_TLS; 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::CaCertActive() const { 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No server CA certs for LEAP. 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (eap_method_combobox_) { 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = eap_method_combobox_->selected_index(); 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return index != EAP_METHOD_INDEX_NONE && index != EAP_METHOD_INDEX_LEAP; 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::UpdateDialogButtons() { 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent_->GetDialogClientView()->UpdateDialogButtons(); 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::RefreshEapFields() { 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If EAP method changes, the phase 2 auth choices may have changed also. 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_->ModelChanged(); 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_->SetSelectedIndex(0); 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool phase_2_auth_enabled = Phase2AuthActive(); 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_->SetEnabled(phase_2_auth_enabled && 49590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) phase_2_auth_ui_data_.IsEditable()); 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_label_->SetEnabled(phase_2_auth_enabled); 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Passphrase. 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool passphrase_enabled = PassphraseActive(); 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_textfield_->SetEnabled(passphrase_enabled && 50190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) passphrase_ui_data_.IsEditable()); 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_label_->SetEnabled(passphrase_enabled); 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!passphrase_enabled) 504a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) passphrase_textfield_->SetText(base::string16()); 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // User cert. 507c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool certs_loading = CertLibrary::Get()->CertificatesLoading(); 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool user_cert_enabled = UserCertActive(); 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_label_->SetEnabled(user_cert_enabled); 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool have_user_certs = !certs_loading && HaveUserCerts(); 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_->SetEnabled(user_cert_enabled && 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) have_user_certs && 51390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) user_cert_ui_data_.IsEditable()); 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_->ModelChanged(); 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_->SetSelectedIndex(0); 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Server CA. 5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ca_cert_enabled = CaCertActive(); 5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_label_->SetEnabled(ca_cert_enabled); 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_->SetEnabled(ca_cert_enabled && 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) !certs_loading && 52290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) server_ca_cert_ui_data_.IsEditable()); 5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_->ModelChanged(); 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_->SetSelectedIndex(0); 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Subject Match 5273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool subject_match_enabled = 5283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ca_cert_enabled && eap_method_combobox_ && 5293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) eap_method_combobox_->selected_index() == EAP_METHOD_INDEX_TLS; 5303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) subject_match_label_->SetEnabled(subject_match_enabled); 5313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) subject_match_textfield_->SetEnabled(subject_match_enabled); 5323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (!subject_match_enabled) 533a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) subject_match_textfield_->SetText(base::string16()); 5343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No anonymous identity if no phase 2 auth. 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool identity_anonymous_enabled = phase_2_auth_enabled; 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_textfield_->SetEnabled( 53890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) identity_anonymous_enabled && identity_anonymous_ui_data_.IsEditable()); 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_label_->SetEnabled(identity_anonymous_enabled); 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!identity_anonymous_enabled) 541a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) identity_anonymous_textfield_->SetText(base::string16()); 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshShareCheckbox(); 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::RefreshShareCheckbox() { 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!share_network_checkbox_) 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (security_combobox_ && 5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) security_combobox_->selected_index() == SECURITY_INDEX_NONE) { 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) share_network_checkbox_->SetEnabled(false); 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) share_network_checkbox_->SetChecked(true); 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (eap_method_combobox_ && 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (eap_method_combobox_->selected_index() == EAP_METHOD_INDEX_TLS || 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_->selected_index() != 0)) { 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Can not share TLS network (requires certificate), or any network where 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // user certificates are enabled. 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) share_network_checkbox_->SetEnabled(false); 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) share_network_checkbox_->SetChecked(false); 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 562a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool value = false; 563a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool enabled = false; 564a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ChildNetworkConfigView::GetShareStateForLoginState(&value, &enabled); 565a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 566a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch share_network_checkbox_->SetChecked(value); 567a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch share_network_checkbox_->SetEnabled(enabled); 5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::UpdateErrorLabel() { 572ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::string16 error_msg; 573c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (UserCertRequired() && CertLibrary::Get()->CertificatesLoaded()) { 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!HaveUserCerts()) { 575a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch if (!LoginState::Get()->IsUserLoggedIn() || 5766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) LoginState::Get()->IsGuestSessionUser()) { 577ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch error_msg = l10n_util::GetStringUTF16( 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_LOGIN_FOR_USER_CERT); 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 580ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch error_msg = l10n_util::GetStringUTF16( 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PLEASE_INSTALL_USER_CERT); 5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (!IsUserCertValid()) { 584ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch error_msg = l10n_util::GetStringUTF16( 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_REQUIRE_HARDWARE_BACKED); 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (error_msg.empty() && !service_path_.empty()) { 589effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network = GetNetworkState(); 590effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network && network->connection_state() == shill::kStateFailure) { 5914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) error_msg = ash::network_connect::ErrorString( 592effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch network->last_error(), network->path()); 593effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!error_msg.empty()) { 596ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch error_label_->SetText(error_msg); 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_label_->SetVisible(true); 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_label_->SetVisible(false); 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::ContentsChanged(views::Textfield* sender, 604a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& new_contents) { 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateDialogButtons(); 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::HandleKeyEvent(views::Textfield* sender, 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ui::KeyEvent& key_event) { 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (sender == passphrase_textfield_ && 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) key_event.key_code() == ui::VKEY_RETURN) { 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parent_->GetDialogClientView()->AcceptWindow(); 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::ButtonPressed(views::Button* sender, 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ui::Event& event) { 6195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (sender == passphrase_visible_button_ && passphrase_textfield_) { 6205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (passphrase_textfield_->GetTextInputType() == ui::TEXT_INPUT_TYPE_TEXT) { 6215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); 6225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_visible_button_->SetToggled(false); 6235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 6245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_textfield_->SetTextInputType(ui::TEXT_INPUT_TYPE_TEXT); 6255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_visible_button_->SetToggled(true); 6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void WifiConfigView::OnPerformAction(views::Combobox* combobox) { 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (combobox == security_combobox_) { 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool passphrase_enabled = PassphraseActive(); 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_label_->SetEnabled(passphrase_enabled); 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_textfield_->SetEnabled(passphrase_enabled && 63790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) passphrase_ui_data_.IsEditable()); 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!passphrase_enabled) 6395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_textfield_->SetText(base::string16()); 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshShareCheckbox(); 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (combobox == user_cert_combobox_) { 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshShareCheckbox(); 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (combobox == eap_method_combobox_) { 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshEapFields(); 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateDialogButtons(); 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateErrorLabel(); 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::OnCertificatesLoaded(bool initial_load) { 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshEapFields(); 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateDialogButtons(); 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateErrorLabel(); 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::Login() { 657effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network = GetNetworkState(); 6588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 6598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Set configuration properties. 6608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::DictionaryValue properties; 6618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 662a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Default shared state for non-private networks is true. 663effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const bool share_default = !network || !network->IsPrivate(); 664a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool share_network = GetShareNetwork(share_default); 6658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool only_policy_autoconnect = 6668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) onc::PolicyAllowsOnlyPolicyNetworksToAutoconnect(!share_network); 6678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) if (only_policy_autoconnect) { 6688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) properties.SetBooleanWithoutPathExpansion(shill::kAutoConnectProperty, 6698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) false); 6708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) } 6718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (service_path_.empty()) { 673effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // TODO(stevenjb): Support modifying existing EAP configurations. 674effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Will probably wait to do this in WebUI instead. 675ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetStringWithoutPathExpansion( 67668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kTypeProperty, shill::kTypeWifi); 6774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) shill_property_util::SetSSID(GetSsid(), &properties); 678ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetStringWithoutPathExpansion( 67968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kModeProperty, shill::kModeManaged); 680ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetBooleanWithoutPathExpansion( 68168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kSaveCredentialsProperty, GetSaveCredentials()); 68268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::string security = shill::kSecurityNone; 6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!eap_method_combobox_) { 6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (security_combobox_->selected_index()) { 6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case SECURITY_INDEX_NONE: 68668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) security = shill::kSecurityNone; 6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case SECURITY_INDEX_WEP: 68968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) security = shill::kSecurityWep; 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case SECURITY_INDEX_PSK: 69268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) security = shill::kSecurityPsk; 6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 695ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string passphrase = GetPassphrase(); 696ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (!passphrase.empty()) { 697ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetStringWithoutPathExpansion( 69868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kPassphraseProperty, GetPassphrase()); 699ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 70168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) security = shill::kSecurity8021x; 702ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SetEapProperties(&properties); 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 704ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetStringWithoutPathExpansion( 70568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kSecurityProperty, security); 706ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 707ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Configure and connect to network. 7088bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ash::network_connect::CreateConfigurationAndConnect(&properties, 7098bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) share_network); 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 711effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!network) { 712effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Shill no longer knows about this network (edge case). 713ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // TODO(stevenjb): Add notification for this. 714ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch NET_LOG_ERROR("Network not found", service_path_); 715ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return true; // Close dialog 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (eap_method_combobox_) { 718ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch SetEapProperties(&properties); 719ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetBooleanWithoutPathExpansion( 72068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kSaveCredentialsProperty, GetSaveCredentials()); 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string passphrase = GetPassphrase(); 723ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (!passphrase.empty()) { 724ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.SetStringWithoutPathExpansion( 72568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kPassphraseProperty, passphrase); 726ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 728effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network->type() == shill::kTypeEthernet) { 729effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // When configuring an ethernet service, we actually configure the 730effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // EthernetEap service, which exists in the Profile only. 731effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // See crbug.com/126870 for more info. 732effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch properties.SetStringWithoutPathExpansion(shill::kTypeProperty, 733effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch shill::kTypeEthernetEap); 734effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch share_network = false; 735effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ash::network_connect::CreateConfiguration(&properties, share_network); 736effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } else { 737effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ash::network_connect::ConfigureNetworkAndConnect( 738effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch service_path_, properties, share_network); 739effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; // dialog will be closed 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string WifiConfigView::GetSsid() const { 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string result; 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ssid_textfield_ != NULL) { 7475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::string untrimmed = base::UTF16ToUTF8(ssid_textfield_->text()); 748a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::TrimWhitespaceASCII(untrimmed, base::TRIM_ALL, &result); 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string WifiConfigView::GetPassphrase() const { 7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string result; 7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (passphrase_textfield_ != NULL) 7565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) result = base::UTF16ToUTF8(passphrase_textfield_->text()); 7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::GetSaveCredentials() const { 7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!save_credentials_checkbox_) 7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; // share networks by default (e.g. non 8021x). 7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return save_credentials_checkbox_->checked(); 7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::GetShareNetwork(bool share_default) const { 7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!share_network_checkbox_) 7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return share_default; 7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return share_network_checkbox_->checked(); 7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 772ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochstd::string WifiConfigView::GetEapMethod() const { 7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(eap_method_combobox_); 7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (eap_method_combobox_->selected_index()) { 7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_PEAP: 77668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapMethodPEAP; 7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_TLS: 77868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapMethodTLS; 7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_TTLS: 78068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapMethodTTLS; 7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAP_METHOD_INDEX_LEAP: 78268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapMethodLEAP; 783ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch case EAP_METHOD_INDEX_NONE: 7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 785ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return ""; 7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 789ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochstd::string WifiConfigView::GetEapPhase2Auth() const { 7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(phase_2_auth_combobox_); 79168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) bool is_peap = (GetEapMethod() == shill::kEapMethodPEAP); 7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (phase_2_auth_combobox_->selected_index()) { 7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PHASE_2_AUTH_INDEX_MD5: 79468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return is_peap ? shill::kEapPhase2AuthPEAPMD5 79568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) : shill::kEapPhase2AuthTTLSMD5; 7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PHASE_2_AUTH_INDEX_MSCHAPV2: 79768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return is_peap ? shill::kEapPhase2AuthPEAPMSCHAPV2 79868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) : shill::kEapPhase2AuthTTLSMSCHAPV2; 7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PHASE_2_AUTH_INDEX_MSCHAP: 80068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapPhase2AuthTTLSMSCHAP; 8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PHASE_2_AUTH_INDEX_PAP: 80268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapPhase2AuthTTLSPAP; 8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PHASE_2_AUTH_INDEX_CHAP: 80468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return shill::kEapPhase2AuthTTLSCHAP; 805ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch case PHASE_2_AUTH_INDEX_AUTO: 8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 807ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return ""; 8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 811eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstd::string WifiConfigView::GetEapServerCaCertPEM() const { 8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(server_ca_cert_combobox_); 8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = server_ca_cert_combobox_->selected_index(); 8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index == 0) { 8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First item is "Default". 8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return std::string(); 8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (index == server_ca_cert_combobox_->model()->GetItemCount() - 1) { 8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Last item is "Do not check". 8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return std::string(); 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cert_index = index - 1; 822c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch return CertLibrary::Get()->GetServerCACertPEMAt(cert_index); 8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WifiConfigView::GetEapUseSystemCas() const { 8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(server_ca_cert_combobox_); 8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Only use system CAs if the first item ("Default") is selected. 8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return server_ca_cert_combobox_->selected_index() == 0; 8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)std::string WifiConfigView::GetEapSubjectMatch() const { 8333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DCHECK(subject_match_textfield_); 8345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF16ToUTF8(subject_match_textfield_->text()); 8353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 8363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 8375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void WifiConfigView::SetEapClientCertProperties( 8385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::DictionaryValue* properties) const { 8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(user_cert_combobox_); 840424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) if (!HaveUserCerts() || !UserCertActive()) { 8415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // No certificate selected or not required. 8425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) client_cert::SetEmptyShillProperties(client_cert::CONFIG_TYPE_EAP, 8435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) properties); 8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Certificates are listed in the order they appear in the model. 8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int index = user_cert_combobox_->selected_index(); 8475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) int slot_id = -1; 8485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string pkcs11_id = 8495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CertLibrary::Get()->GetUserCertPkcs11IdAt(index, &slot_id); 8505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) client_cert::SetShillProperties( 8515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) client_cert::CONFIG_TYPE_EAP, slot_id, pkcs11_id, properties); 8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string WifiConfigView::GetEapIdentity() const { 8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(identity_textfield_); 8575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF16ToUTF8(identity_textfield_->text()); 8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string WifiConfigView::GetEapAnonymousIdentity() const { 8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(identity_anonymous_textfield_); 8625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF16ToUTF8(identity_anonymous_textfield_->text()); 8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid WifiConfigView::SetEapProperties(base::DictionaryValue* properties) { 866ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetStringWithoutPathExpansion( 86768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapIdentityProperty, GetEapIdentity()); 868ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetStringWithoutPathExpansion( 86968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapMethodProperty, GetEapMethod()); 870ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetStringWithoutPathExpansion( 87168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapPhase2AuthProperty, GetEapPhase2Auth()); 872ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetStringWithoutPathExpansion( 87368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapAnonymousIdentityProperty, GetEapAnonymousIdentity()); 8743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) properties->SetStringWithoutPathExpansion( 8753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) shill::kEapSubjectMatchProperty, GetEapSubjectMatch()); 876ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 8775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetEapClientCertProperties(properties); 878ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 879ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetBooleanWithoutPathExpansion( 88068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapUseSystemCasProperty, GetEapUseSystemCas()); 881ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetStringWithoutPathExpansion( 88268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapPasswordProperty, GetPassphrase()); 883ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 884ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::ListValue* pem_list = new base::ListValue; 88503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) std::string ca_cert_pem = GetEapServerCaCertPEM(); 88603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) if (!ca_cert_pem.empty()) 88703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) pem_list->AppendString(ca_cert_pem); 888ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties->SetWithoutPathExpansion( 889ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch shill::kEapCaCertPemProperty, pem_list); 890ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 891ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::Cancel() { 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid WifiConfigView::Init(bool show_8021x) { 896effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network = GetNetworkState(); 897effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network) { 898effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network->type() == shill::kTypeWifi) { 899effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network->security() == shill::kSecurity8021x) 900effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch show_8021x = true; 901effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } else if (network->type() == shill::kTypeEthernet) { 902ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch show_8021x = true; 903effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } else { 904effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NOTREACHED() << "Unexpected network type for WifiConfigView: " 905effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch << network->type() << " Path: " << service_path_; 906effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 907effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty(&eap_method_ui_data_, network, ::onc::eap::kOuter); 908effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty(&phase_2_auth_ui_data_, network, ::onc::eap::kInner); 909effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty( 910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch &user_cert_ui_data_, network, ::onc::client_cert::kClientCertRef); 911effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty( 912effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch &server_ca_cert_ui_data_, network, ::onc::eap::kServerCARef); 91390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (server_ca_cert_ui_data_.IsManaged()) { 914effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty( 915effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch &server_ca_cert_ui_data_, network, ::onc::eap::kUseSystemCAs); 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 917effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty(&identity_ui_data_, network, ::onc::eap::kIdentity); 918effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty( 919effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch &identity_anonymous_ui_data_, network, ::onc::eap::kAnonymousIdentity); 920effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty( 921effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch &save_credentials_ui_data_, network, ::onc::eap::kSaveCredentials); 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (show_8021x) 923effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseEAPUIProperty(&passphrase_ui_data_, network, ::onc::eap::kPassword); 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 925effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseUIProperty(&passphrase_ui_data_, network, ::onc::wifi::kPassphrase); 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout* layout = views::GridLayout::CreatePanel(this); 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLayoutManager(layout); 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int column_view_set_id = 0; 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::ColumnSet* column_set = layout->AddColumnSet(column_view_set_id); 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const int kPasswordVisibleWidth = 20; 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Label 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddPaddingColumn(0, views::kRelatedControlSmallHorizontalSpacing); 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Textfield, combobox. 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout::USE_PREF, 0, 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChildNetworkConfigView::kInputFieldMinWidth); 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddPaddingColumn(0, views::kRelatedControlSmallHorizontalSpacing); 9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Password visible button / policy indicator. 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) column_set->AddColumn(views::GridLayout::CENTER, views::GridLayout::FILL, 1, 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout::USE_PREF, 0, kPasswordVisibleWidth); 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // SSID input 948effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!network || network->type() != shill::kTypeEthernet) { 949effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch layout->StartRow(0, column_view_set_id); 950effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch layout->AddView(new views::Label(l10n_util::GetStringUTF16( 951effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID))); 952effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!network) { 953effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ssid_textfield_ = new views::Textfield(); 954effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ssid_textfield_->set_controller(this); 955effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ssid_textfield_->SetAccessibleName(l10n_util::GetStringUTF16( 956effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID)); 957effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch layout->AddView(ssid_textfield_); 958effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } else { 959effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch views::Label* label = 960effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch new views::Label(base::UTF8ToUTF16(network->name())); 961effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch label->SetHorizontalAlignment(gfx::ALIGN_LEFT); 962effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch layout->AddView(label); 963effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 964effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Security select 968effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!network && !show_8021x) { 9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 970a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 label_text = l10n_util::GetStringUTF16( 971c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SECURITY); 972c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(new views::Label(label_text)); 9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) security_combobox_model_.reset(new internal::SecurityComboboxModel); 9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) security_combobox_ = new views::Combobox(security_combobox_model_.get()); 975c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) security_combobox_->SetAccessibleName(label_text); 9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) security_combobox_->set_listener(this); 9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(security_combobox_); 9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Only enumerate certificates in the data model for 802.1X networks. 9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (show_8021x) { 983c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Observer any changes to the certificate list. 984c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertLibrary::Get()->AddObserver(this); 9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // EAP method 9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 988a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 eap_label_text = l10n_util::GetStringUTF16( 989c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD); 990c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(new views::Label(eap_label_text)); 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eap_method_combobox_model_.reset(new internal::EAPMethodComboboxModel); 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eap_method_combobox_ = new views::Combobox( 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eap_method_combobox_model_.get()); 994c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) eap_method_combobox_->SetAccessibleName(eap_label_text); 9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eap_method_combobox_->set_listener(this); 99690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) eap_method_combobox_->SetEnabled(eap_method_ui_data_.IsEditable()); 9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(eap_method_combobox_); 9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(new ControlledSettingIndicatorView(eap_method_ui_data_)); 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Phase 2 authentication 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 1003a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 phase_2_label_text = l10n_util::GetStringUTF16( 1004c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PHASE_2_AUTH); 1005c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) phase_2_auth_label_ = new views::Label(phase_2_label_text); 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(phase_2_auth_label_); 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_model_.reset( 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new internal::Phase2AuthComboboxModel(eap_method_combobox_)); 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_ = new views::Combobox( 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_model_.get()); 1011c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) phase_2_auth_combobox_->SetAccessibleName(phase_2_label_text); 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_label_->SetEnabled(false); 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_->SetEnabled(false); 10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) phase_2_auth_combobox_->set_listener(this); 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(phase_2_auth_combobox_); 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(new ControlledSettingIndicatorView(phase_2_auth_ui_data_)); 10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Server CA certificate 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 1021a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 server_ca_cert_label_text = l10n_util::GetStringUTF16( 1022c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_SERVER_CA); 1023c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) server_ca_cert_label_ = new views::Label(server_ca_cert_label_text); 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(server_ca_cert_label_); 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_model_.reset( 1026c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new internal::ServerCACertComboboxModel()); 10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_ = new ComboboxWithWidth( 10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_model_.get(), 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChildNetworkConfigView::kInputFieldMinWidth); 1030c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) server_ca_cert_combobox_->SetAccessibleName(server_ca_cert_label_text); 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_label_->SetEnabled(false); 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_->SetEnabled(false); 10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) server_ca_cert_combobox_->set_listener(this); 10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(server_ca_cert_combobox_); 10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView( 10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new ControlledSettingIndicatorView(server_ca_cert_ui_data_)); 10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Subject Match 10403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 1041a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 subject_match_label_text = l10n_util::GetStringUTF16( 10423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_SUBJECT_MATCH); 10433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) subject_match_label_ = new views::Label(subject_match_label_text); 10443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) layout->AddView(subject_match_label_); 10455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subject_match_textfield_ = new views::Textfield(); 10463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) subject_match_textfield_->SetAccessibleName(subject_match_label_text); 10475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subject_match_textfield_->set_controller(this); 10483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) layout->AddView(subject_match_textfield_); 10493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 10503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // User certificate 10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 1053a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 user_cert_label_text = l10n_util::GetStringUTF16( 1054c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT); 1055c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_cert_label_ = new views::Label(user_cert_label_text); 10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(user_cert_label_); 1057424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) user_cert_combobox_model_.reset(new internal::UserCertComboboxModel(this)); 10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_ = new views::Combobox(user_cert_combobox_model_.get()); 1059c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_cert_combobox_->SetAccessibleName(user_cert_label_text); 10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_label_->SetEnabled(false); 10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_->SetEnabled(false); 10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) user_cert_combobox_->set_listener(this); 10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(user_cert_combobox_); 10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(new ControlledSettingIndicatorView(user_cert_ui_data_)); 10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Identity 10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 1069a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 identity_label_text = l10n_util::GetStringUTF16( 1070c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_IDENTITY); 1071c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) identity_label_ = new views::Label(identity_label_text); 10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(identity_label_); 10735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) identity_textfield_ = new views::Textfield(); 1074c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) identity_textfield_->SetAccessibleName(identity_label_text); 10755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) identity_textfield_->set_controller(this); 107690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) identity_textfield_->SetEnabled(identity_ui_data_.IsEditable()); 10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(identity_textfield_); 10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(new ControlledSettingIndicatorView(identity_ui_data_)); 10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Passphrase input 10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int label_text_id = IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE; 1085a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 passphrase_label_text = 1086a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) l10n_util::GetStringUTF16(label_text_id); 1087c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) passphrase_label_ = new views::Label(passphrase_label_text); 10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(passphrase_label_); 108958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) passphrase_textfield_ = new PassphraseTextfield(); 10905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_textfield_->set_controller(this); 10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Disable passphrase input initially for other network. 1092effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch passphrase_label_->SetEnabled(network); 1093effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch passphrase_textfield_->SetEnabled(network && 1094effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch passphrase_ui_data_.IsEditable()); 1095c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) passphrase_textfield_->SetAccessibleName(passphrase_label_text); 10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(passphrase_textfield_); 10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 109890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (passphrase_ui_data_.IsManaged()) { 10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(new ControlledSettingIndicatorView(passphrase_ui_data_)); 11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Password visible button. 11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_ = new views::ToggleImageButton(this); 11035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_visible_button_->SetFocusable(true); 11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetTooltipText( 11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16( 11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE_SHOW)); 11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetToggledTooltipText( 11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16( 11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE_HIDE)); 11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetImage( 11112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::ImageButton::STATE_NORMAL, 11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceBundle::GetSharedInstance(). 11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetImageSkiaNamed(IDR_NETWORK_SHOW_PASSWORD)); 11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetImage( 11152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::ImageButton::STATE_HOVERED, 11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceBundle::GetSharedInstance(). 11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetImageSkiaNamed(IDR_NETWORK_SHOW_PASSWORD_HOVER)); 11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetToggledImage( 11192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::ImageButton::STATE_NORMAL, 11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceBundle::GetSharedInstance(). 11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetImageSkiaNamed(IDR_NETWORK_HIDE_PASSWORD)); 11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetToggledImage( 11232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::ImageButton::STATE_HOVERED, 11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceBundle::GetSharedInstance(). 11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetImageSkiaNamed(IDR_NETWORK_HIDE_PASSWORD_HOVER)); 11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) passphrase_visible_button_->SetImageAlignment( 11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::ImageButton::ALIGN_CENTER, views::ImageButton::ALIGN_MIDDLE); 11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(passphrase_visible_button_); 11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (show_8021x) { 11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Anonymous identity 11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_label_ = 11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new views::Label(l10n_util::GetStringUTF16( 11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_IDENTITY_ANONYMOUS)); 11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(identity_anonymous_label_); 11405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) identity_anonymous_textfield_ = new views::Textfield(); 11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_label_->SetEnabled(false); 11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) identity_anonymous_textfield_->SetEnabled(false); 11435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) identity_anonymous_textfield_->set_controller(this); 11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(identity_anonymous_textfield_); 11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView( 11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new ControlledSettingIndicatorView(identity_anonymous_ui_data_)); 11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Checkboxes. 11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Save credentials 11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (show_8021x) { 11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_credentials_checkbox_ = new views::Checkbox( 11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16( 11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SAVE_CREDENTIALS)); 11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_credentials_checkbox_->SetEnabled( 115990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) save_credentials_ui_data_.IsEditable()); 11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->SkipColumns(1); 11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(save_credentials_checkbox_); 11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView( 11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new ControlledSettingIndicatorView(save_credentials_ui_data_)); 11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Share network 1167effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!network || network->profile_path().empty()) { 11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) share_network_checkbox_ = new views::Checkbox( 11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16( 11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SHARE_NETWORK)); 11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->SkipColumns(1); 11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(share_network_checkbox_); 11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create an error label. 11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->StartRow(0, column_view_set_id); 11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->SkipColumns(1); 11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_label_ = new views::Label(); 11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error_label_->SetEnabledColor(SK_ColorRED); 11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(error_label_); 11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initialize the field and checkbox values. 11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1187effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (!network && show_8021x) 11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshEapFields(); 11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1190ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch RefreshShareCheckbox(); 1191ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch UpdateErrorLabel(); 11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1193effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (network) { 1194ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch NetworkHandler::Get()->network_configuration_handler()->GetProperties( 1195ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch service_path_, 1196ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Bind(&WifiConfigView::InitFromProperties, 1197effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch weak_ptr_factory_.GetWeakPtr(), 1198effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch show_8021x), 1199ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch base::Bind(&ShillError, "GetProperties")); 1200ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 1201ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 1202ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1203ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid WifiConfigView::InitFromProperties( 1204ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool show_8021x, 1205ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const std::string& service_path, 1206ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const base::DictionaryValue& properties) { 120758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (!show_8021x) { 120858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) std::string passphrase; 120958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) properties.GetStringWithoutPathExpansion( 121068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kPassphraseProperty, &passphrase); 12115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_textfield_->SetText(base::UTF8ToUTF16(passphrase)); 1212ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return; 121358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 1214ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1215ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // EAP Method 1216ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_method; 1217ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetStringWithoutPathExpansion( 121868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapMethodProperty, &eap_method); 121968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (eap_method == shill::kEapMethodPEAP) 1220ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch eap_method_combobox_->SetSelectedIndex(EAP_METHOD_INDEX_PEAP); 122168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_method == shill::kEapMethodTTLS) 1222ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch eap_method_combobox_->SetSelectedIndex(EAP_METHOD_INDEX_TTLS); 122368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_method == shill::kEapMethodTLS) 1224ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch eap_method_combobox_->SetSelectedIndex(EAP_METHOD_INDEX_TLS); 122568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_method == shill::kEapMethodLEAP) 1226ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch eap_method_combobox_->SetSelectedIndex(EAP_METHOD_INDEX_LEAP); 1227ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch RefreshEapFields(); 1228ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1229ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Phase 2 authentication and anonymous identity. 1230ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (Phase2AuthActive()) { 1231ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_phase_2_auth; 1232ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetStringWithoutPathExpansion( 123368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapPhase2AuthProperty, &eap_phase_2_auth); 123468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (eap_phase_2_auth == shill::kEapPhase2AuthTTLSMD5) 1235ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch phase_2_auth_combobox_->SetSelectedIndex(PHASE_2_AUTH_INDEX_MD5); 123668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_phase_2_auth == shill::kEapPhase2AuthTTLSMSCHAPV2) 1237ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch phase_2_auth_combobox_->SetSelectedIndex(PHASE_2_AUTH_INDEX_MSCHAPV2); 123868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_phase_2_auth == shill::kEapPhase2AuthTTLSMSCHAP) 1239ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch phase_2_auth_combobox_->SetSelectedIndex(PHASE_2_AUTH_INDEX_MSCHAP); 124068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_phase_2_auth == shill::kEapPhase2AuthTTLSPAP) 1241ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch phase_2_auth_combobox_->SetSelectedIndex(PHASE_2_AUTH_INDEX_PAP); 124268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) else if (eap_phase_2_auth == shill::kEapPhase2AuthTTLSCHAP) 1243ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch phase_2_auth_combobox_->SetSelectedIndex(PHASE_2_AUTH_INDEX_CHAP); 1244ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1245ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_anonymous_identity; 1246ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetStringWithoutPathExpansion( 124768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapAnonymousIdentityProperty, &eap_anonymous_identity); 12485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) identity_anonymous_textfield_->SetText( 12495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16(eap_anonymous_identity)); 1250ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 1251ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 12523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Subject match 12533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string subject_match; 12543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) properties.GetStringWithoutPathExpansion( 12553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) shill::kEapSubjectMatchProperty, &subject_match); 12565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) subject_match_textfield_->SetText(base::UTF8ToUTF16(subject_match)); 12573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1258ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Server CA certificate. 1259ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (CaCertActive()) { 1260ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_ca_cert_pem; 1261ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch const base::ListValue* pems = NULL; 1262ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (properties.GetListWithoutPathExpansion( 1263ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch shill::kEapCaCertPemProperty, &pems)) 1264ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch pems->GetString(0, &eap_ca_cert_pem); 1265ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (eap_ca_cert_pem.empty()) { 1266ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool eap_use_system_cas = false; 1267ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetBooleanWithoutPathExpansion( 126868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapUseSystemCasProperty, &eap_use_system_cas); 1269ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (eap_use_system_cas) { 1270ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // "Default" 1271ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch server_ca_cert_combobox_->SetSelectedIndex(0); 12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1273ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // "Do not check". 1274ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch server_ca_cert_combobox_->SetSelectedIndex( 1275ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch server_ca_cert_combobox_->model()->GetItemCount() - 1); 12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1277ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } else { 1278ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Select the certificate if available. 1279c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int cert_index = 1280c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch CertLibrary::Get()->GetServerCACertIndexByPEM(eap_ca_cert_pem); 1281ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (cert_index >= 0) { 1282ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Skip item for "Default". 1283ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch server_ca_cert_combobox_->SetSelectedIndex(1 + cert_index); 1284d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) } else { 1285d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // "Default" 1286d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) server_ca_cert_combobox_->SetSelectedIndex(0); 12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1289ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1291ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // User certificate. 1292ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (UserCertActive()) { 1293ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_cert_id; 1294ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetStringWithoutPathExpansion( 129568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapCertIdProperty, &eap_cert_id); 129603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) int unused_slot_id = 0; 129703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) std::string pkcs11_id = client_cert::GetPkcs11AndSlotIdFromEapCertId( 129803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) eap_cert_id, &unused_slot_id); 12995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!pkcs11_id.empty()) { 1300c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int cert_index = 13015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CertLibrary::Get()->GetUserCertIndexByPkcs11Id(pkcs11_id); 1302ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (cert_index >= 0) 1303ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch user_cert_combobox_->SetSelectedIndex(cert_index); 13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1305ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch } 13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1307ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Identity is always active. 1308ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_identity; 1309ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetStringWithoutPathExpansion( 131068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapIdentityProperty, &eap_identity); 13115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) identity_textfield_->SetText(base::UTF8ToUTF16(eap_identity)); 1312ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1313ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Passphrase 1314ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (PassphraseActive()) { 1315ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch std::string eap_password; 1316ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetStringWithoutPathExpansion( 131768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kEapPasswordProperty, &eap_password); 13185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) passphrase_textfield_->SetText(base::UTF8ToUTF16(eap_password)); 131958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // If 'Connectable' is True, show a fake passphrase to indicate that it 132058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // has already been set. 132158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool connectable = false; 132258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) properties.GetBooleanWithoutPathExpansion( 132368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kConnectableProperty, &connectable); 132458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) passphrase_textfield_->SetShowFake(connectable); 13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1327ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch // Save credentials 1328ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch bool save_credentials = false; 1329ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch properties.GetBooleanWithoutPathExpansion( 133068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) shill::kSaveCredentialsProperty, &save_credentials); 1331ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch save_credentials_checkbox_->SetChecked(save_credentials); 1332ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1333d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) UpdateDialogButtons(); 13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RefreshShareCheckbox(); 13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UpdateErrorLabel(); 13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WifiConfigView::InitFocus() { 13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View* view_to_focus = GetInitiallyFocusedView(); 13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (view_to_focus) 13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) view_to_focus->RequestFocus(); 13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1344effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochbool WifiConfigView::IsConfigureDialog() { 1345effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network = GetNetworkState(); 1346effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return network && network->type() == shill::kTypeEthernet; 1347effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 1348effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 1349ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid WifiConfigView::NetworkPropertiesUpdated(const NetworkState* network) { 1350ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch if (network->path() != service_path_) 1351ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch return; 1352ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch UpdateErrorLabel(); 1353ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch} 1354ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1355effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochconst NetworkState* WifiConfigView::GetNetworkState() const { 1356effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (service_path_.empty()) 1357effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return NULL; 1358effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return NetworkHandler::Get()->network_state_handler()->GetNetworkState( 1359effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch service_path_); 1360effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 1361effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 1363effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid WifiConfigView::ParseUIProperty(NetworkPropertyUIData* property_ui_data, 1364effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network, 1365effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const std::string& key) { 13664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ::onc::ONCSource onc_source = ::onc::ONC_SOURCE_NONE; 1367ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const base::DictionaryValue* onc = 13683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) onc::FindPolicyForActiveUser(network->guid(), &onc_source); 1369effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch std::string onc_tag = network->type() == shill::kTypeEthernet 137046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) ? ::onc::network_config::kEthernet 137146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) : ::onc::network_config::kWiFi; 1372effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch property_ui_data->ParseOncProperty(onc_source, onc, onc_tag + '.' + key); 13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 1376effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid WifiConfigView::ParseEAPUIProperty(NetworkPropertyUIData* property_ui_data, 1377effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const NetworkState* network, 1378effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch const std::string& key) { 1379effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch std::string onc_tag = network->type() == shill::kTypeEthernet 1380effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ? ::onc::ethernet::kEAP 1381effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch : ::onc::wifi::kEAP; 1382effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ParseUIProperty(property_ui_data, network, onc_tag + '.' + key); 13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 1386