summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 20:07:41 +0000
committermnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 20:07:41 +0000
commitaca35d6e77b90a60888eb9c2cea1ff5c2694f4b1 (patch)
treebd0498867f4706d56a388c9e214c2620cb36644f
parent2b90791f7f2e54a8c8d58ce8569ab9b0e5b0202d (diff)
downloadchromium_src-aca35d6e77b90a60888eb9c2cea1ff5c2694f4b1.zip
chromium_src-aca35d6e77b90a60888eb9c2cea1ff5c2694f4b1.tar.gz
chromium_src-aca35d6e77b90a60888eb9c2cea1ff5c2694f4b1.tar.bz2
Disable network "Connect" dialog UI in case of policy-managed networks.
BUG=chromium-os:23124 TEST=Network configuration continues to work, options are locked down for policy-configured networks. Review URL: http://codereview.chromium.org/8726008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112508 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/options/network_config_view.cc68
-rw-r--r--chrome/browser/chromeos/options/network_config_view.h33
-rw-r--r--chrome/browser/chromeos/options/vpn_config_view.cc39
-rw-r--r--chrome/browser/chromeos/options/vpn_config_view.h7
-rw-r--r--chrome/browser/chromeos/options/wifi_config_view.cc113
-rw-r--r--chrome/browser/chromeos/options/wifi_config_view.h11
6 files changed, 237 insertions, 34 deletions
diff --git a/chrome/browser/chromeos/options/network_config_view.cc b/chrome/browser/chromeos/options/network_config_view.cc
index 5952534..3e8a0f4 100644
--- a/chrome/browser/chromeos/options/network_config_view.cc
+++ b/chrome/browser/chromeos/options/network_config_view.cc
@@ -13,10 +13,14 @@
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "grit/locale_settings.h"
+#include "grit/theme_resources.h"
#include "ui/base/accessibility/accessible_view_state.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/image/image.h"
#include "ui/gfx/rect.h"
#include "ui/views/controls/button/text_button.h"
+#include "ui/views/controls/image_view.h"
#include "ui/views/layout/grid_layout.h"
#include "ui/views/layout/layout_constants.h"
#include "ui/views/widget/widget.h"
@@ -187,4 +191,68 @@ void NetworkConfigView::CreateAdvancedButton() {
layout->AddView(advanced_button_);
}
+ControlledSettingIndicatorView::ControlledSettingIndicatorView()
+ : managed_(false),
+ image_view_(NULL) {
+ Init();
+}
+
+ControlledSettingIndicatorView::ControlledSettingIndicatorView(
+ const NetworkPropertyUIData& ui_data)
+ : managed_(false),
+ image_view_(NULL) {
+ Init();
+ Update(ui_data);
+}
+
+ControlledSettingIndicatorView::~ControlledSettingIndicatorView() {}
+
+void ControlledSettingIndicatorView::Update(
+ const NetworkPropertyUIData& ui_data) {
+ if (managed_ == ui_data.managed())
+ return;
+
+ managed_ = ui_data.managed();
+ PreferredSizeChanged();
+}
+
+gfx::Size ControlledSettingIndicatorView::GetPreferredSize() {
+ if (!IsVisible())
+ return gfx::Size();
+
+ return image_view_->GetPreferredSize();
+}
+
+bool ControlledSettingIndicatorView::IsVisible() const {
+ return managed_ && views::View::IsVisible();
+}
+
+void ControlledSettingIndicatorView::Layout() {
+ image_view_->SetBounds(0, 0, width(), height());
+}
+
+void ControlledSettingIndicatorView::OnMouseEntered(
+ const views::MouseEvent& event) {
+ image_view_->SetImage(color_image_);
+}
+
+void ControlledSettingIndicatorView::OnMouseExited(
+ const views::MouseEvent& event) {
+ image_view_->SetImage(gray_image_);
+}
+
+void ControlledSettingIndicatorView::Init() {
+ color_image_ = ResourceBundle::GetSharedInstance().GetImageNamed(
+ IDR_CONTROLLED_SETTING_MANDATORY).ToSkBitmap();
+ gray_image_ = ResourceBundle::GetSharedInstance().GetImageNamed(
+ IDR_CONTROLLED_SETTING_MANDATORY_GRAY).ToSkBitmap();
+ image_view_ = new views::ImageView();
+ // Disable |image_view_| so mouse events propagate to the parent.
+ image_view_->SetEnabled(false);
+ image_view_->SetImage(gray_image_);
+ image_view_->SetTooltipText(
+ l10n_util::GetStringUTF16(IDS_OPTIONS_CONTROLLED_SETTING_POLICY));
+ AddChildView(image_view_);
+}
+
} // namespace chromeos
diff --git a/chrome/browser/chromeos/options/network_config_view.h b/chrome/browser/chromeos/options/network_config_view.h
index 3d988fd..8f12f63 100644
--- a/chrome/browser/chromeos/options/network_config_view.h
+++ b/chrome/browser/chromeos/options/network_config_view.h
@@ -11,11 +11,13 @@
#include "base/compiler_specific.h"
#include "base/string16.h"
#include "chrome/browser/chromeos/cros/network_library.h"
+#include "chrome/browser/chromeos/cros/network_ui_data.h"
#include "ui/gfx/native_widget_types.h" // gfx::NativeWindow
#include "ui/views/controls/button/button.h" // views::ButtonListener
#include "ui/views/window/dialog_delegate.h"
namespace views {
+class ImageView;
class NativeTextButton;
class View;
}
@@ -139,6 +141,37 @@ class ChildNetworkConfigView : public views::View {
DISALLOW_COPY_AND_ASSIGN(ChildNetworkConfigView);
};
+// Shows an icon with tooltip indicating whether a setting is under policy
+// control.
+class ControlledSettingIndicatorView : public views::View {
+ public:
+ ControlledSettingIndicatorView();
+ explicit ControlledSettingIndicatorView(const NetworkPropertyUIData& ui_data);
+ virtual ~ControlledSettingIndicatorView();
+
+ // Updates the view based on |ui_data|.
+ void Update(const NetworkPropertyUIData& ui_data);
+
+ protected:
+ // views::View:
+ virtual gfx::Size GetPreferredSize() OVERRIDE;
+ virtual bool IsVisible() const OVERRIDE;
+ virtual void Layout() OVERRIDE;
+ virtual void OnMouseEntered(const views::MouseEvent& event) OVERRIDE;
+ virtual void OnMouseExited(const views::MouseEvent& event) OVERRIDE;
+
+ private:
+ // Initializes the view.
+ void Init();
+
+ bool managed_;
+ views::ImageView* image_view_;
+ const SkBitmap* gray_image_;
+ const SkBitmap* color_image_;
+
+ DISALLOW_COPY_AND_ASSIGN(ControlledSettingIndicatorView);
+};
+
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_OPTIONS_NETWORK_CONFIG_VIEW_H_
diff --git a/chrome/browser/chromeos/options/vpn_config_view.cc b/chrome/browser/chromeos/options/vpn_config_view.cc
index 85a1512..9bf34c3 100644
--- a/chrome/browser/chromeos/options/vpn_config_view.cc
+++ b/chrome/browser/chromeos/options/vpn_config_view.cc
@@ -369,6 +369,21 @@ const std::string VPNConfigView::GetUserCertID() const {
}
void VPNConfigView::Init(VirtualNetwork* vpn) {
+ if (vpn) {
+ ca_cert_ui_data_.UpdateFromNetwork(
+ vpn, NetworkUIData::kPropertyVPNCaCertNss);
+ psk_passphrase_ui_data_.UpdateFromNetwork(
+ vpn, NetworkUIData::kPropertyVPNPskPassphrase);
+ user_cert_ui_data_.UpdateFromNetwork(
+ vpn, NetworkUIData::kPropertyVPNClientCertId);
+ username_ui_data_.UpdateFromNetwork(
+ vpn, NetworkUIData::kPropertyVPNUsername);
+ user_passphrase_ui_data_.UpdateFromNetwork(
+ vpn, NetworkUIData::kPropertyVPNUserPassphrase);
+ group_name_ui_data_.UpdateFromNetwork(
+ vpn, NetworkUIData::kPropertyVPNGroupName);
+ }
+
views::GridLayout* layout = views::GridLayout::CreatePanel(this);
SetLayoutManager(layout);
@@ -390,6 +405,9 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
views::GridLayout::USE_PREF, 0,
ChildNetworkConfigView::kInputFieldMinWidth);
column_set->AddPaddingColumn(0, views::kRelatedControlSmallHorizontalSpacing);
+ // Policy indicator.
+ column_set->AddColumn(views::GridLayout::CENTER, views::GridLayout::CENTER, 0,
+ views::GridLayout::USE_PREF, 0, 0);
// Initialize members.
service_text_modified_ = false;
@@ -471,6 +489,8 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
if (vpn && !vpn->psk_passphrase().empty())
psk_passphrase_textfield_->SetText(UTF8ToUTF16(vpn->psk_passphrase()));
layout->AddView(psk_passphrase_textfield_);
+ layout->AddView(
+ new ControlledSettingIndicatorView(psk_passphrase_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
} else {
psk_passphrase_label_ = NULL;
@@ -489,6 +509,7 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
new ServerCACertComboboxModel(cert_library_);
server_ca_cert_combobox_ = new views::Combobox(server_ca_cert_model);
layout->AddView(server_ca_cert_combobox_);
+ layout->AddView(new ControlledSettingIndicatorView(ca_cert_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
} else {
server_ca_cert_label_ = NULL;
@@ -506,6 +527,7 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
user_cert_combobox_ = new views::Combobox(user_cert_model);
user_cert_combobox_->set_listener(this);
layout->AddView(user_cert_combobox_);
+ layout->AddView(new ControlledSettingIndicatorView(user_cert_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
} else {
user_cert_label_ = NULL;
@@ -518,9 +540,11 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_VPN_USERNAME)));
username_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT);
username_textfield_->SetController(this);
+ username_textfield_->SetEnabled(username_ui_data_.editable());
if (vpn && !vpn->username().empty())
username_textfield_->SetText(UTF8ToUTF16(vpn->username()));
layout->AddView(username_textfield_);
+ layout->AddView(new ControlledSettingIndicatorView(username_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
// User passphrase label, input and visble button.
@@ -530,9 +554,11 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
user_passphrase_textfield_ = new views::Textfield(
views::Textfield::STYLE_PASSWORD);
user_passphrase_textfield_->SetController(this);
+ user_passphrase_textfield_->SetEnabled(user_passphrase_ui_data_.editable());
if (vpn && !vpn->user_passphrase().empty())
user_passphrase_textfield_->SetText(UTF8ToUTF16(vpn->user_passphrase()));
layout->AddView(user_passphrase_textfield_);
+ layout->AddView(new ControlledSettingIndicatorView(user_passphrase_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
// OTP label and input.
@@ -567,6 +593,7 @@ void VPNConfigView::Init(VirtualNetwork* vpn) {
if (vpn && !vpn->group_name().empty())
group_name_textfield_->SetText(UTF8ToUTF16(vpn->group_name()));
layout->AddView(group_name_textfield_);
+ layout->AddView(new ControlledSettingIndicatorView(group_name_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
} else {
group_name_label_ = NULL;
@@ -662,17 +689,20 @@ void VPNConfigView::UpdateControls() {
if (psk_passphrase_label_)
psk_passphrase_label_->SetEnabled(enable_psk_passphrase_);
if (psk_passphrase_textfield_)
- psk_passphrase_textfield_->SetEnabled(enable_psk_passphrase_);
+ psk_passphrase_textfield_->SetEnabled(enable_psk_passphrase_ &&
+ psk_passphrase_ui_data_.editable());
if (user_cert_label_)
user_cert_label_->SetEnabled(enable_user_cert_);
if (user_cert_combobox_)
- user_cert_combobox_->SetEnabled(enable_user_cert_);
+ user_cert_combobox_->SetEnabled(enable_user_cert_ &&
+ user_cert_ui_data_.editable());
if (server_ca_cert_label_)
server_ca_cert_label_->SetEnabled(enable_server_ca_cert_);
if (server_ca_cert_combobox_)
- server_ca_cert_combobox_->SetEnabled(enable_server_ca_cert_);
+ server_ca_cert_combobox_->SetEnabled(enable_server_ca_cert_ &&
+ ca_cert_ui_data_.editable());
if (otp_label_)
otp_label_->SetEnabled(enable_otp_);
@@ -682,7 +712,8 @@ void VPNConfigView::UpdateControls() {
if (group_name_label_)
group_name_label_->SetEnabled(enable_group_name_);
if (group_name_textfield_)
- group_name_textfield_->SetEnabled(enable_group_name_);
+ group_name_textfield_->SetEnabled(enable_group_name_ &&
+ group_name_ui_data_.editable());
}
void VPNConfigView::UpdateErrorLabel() {
diff --git a/chrome/browser/chromeos/options/vpn_config_view.h b/chrome/browser/chromeos/options/vpn_config_view.h
index a52f682..d94bade 100644
--- a/chrome/browser/chromeos/options/vpn_config_view.h
+++ b/chrome/browser/chromeos/options/vpn_config_view.h
@@ -114,6 +114,13 @@ class VPNConfigView : public ChildNetworkConfigView,
bool enable_otp_;
bool enable_group_name_;
+ NetworkPropertyUIData ca_cert_ui_data_;
+ NetworkPropertyUIData psk_passphrase_ui_data_;
+ NetworkPropertyUIData user_cert_ui_data_;
+ NetworkPropertyUIData username_ui_data_;
+ NetworkPropertyUIData user_passphrase_ui_data_;
+ NetworkPropertyUIData group_name_ui_data_;
+
views::Textfield* server_textfield_;
views::Label* service_text_;
views::Textfield* service_textfield_;
diff --git a/chrome/browser/chromeos/options/wifi_config_view.cc b/chrome/browser/chromeos/options/wifi_config_view.cc
index 31f84c1..a564863 100644
--- a/chrome/browser/chromeos/options/wifi_config_view.cc
+++ b/chrome/browser/chromeos/options/wifi_config_view.cc
@@ -372,12 +372,14 @@ void WifiConfigView::RefreshEapFields() {
phase_2_auth_combobox_->ModelChanged();
phase_2_auth_combobox_->SetSelectedItem(0);
phase_2_auth_combobox_->SetEnabled(
- phase_2_auth_combobox_->model()->GetItemCount() > 1);
+ phase_2_auth_combobox_->model()->GetItemCount() > 1 &&
+ phase_2_auth_ui_data_.editable());
phase_2_auth_label_->SetEnabled(phase_2_auth_combobox_->IsEnabled());
// No password for EAP-TLS
passphrase_textfield_->SetEnabled(selected != EAP_METHOD_INDEX_NONE &&
- selected != EAP_METHOD_INDEX_TLS);
+ selected != EAP_METHOD_INDEX_TLS &&
+ passphrase_ui_data_.editable());
passphrase_label_->SetEnabled(passphrase_textfield_->IsEnabled());
if (!passphrase_textfield_->IsEnabled())
passphrase_textfield_->SetText(string16());
@@ -387,7 +389,9 @@ void WifiConfigView::RefreshEapFields() {
bool user_cert_enabled = (selected == EAP_METHOD_INDEX_TLS);
user_cert_label_->SetEnabled(user_cert_enabled);
bool have_user_certs = !certs_loading && HaveUserCerts();
- user_cert_combobox_->SetEnabled(user_cert_enabled && have_user_certs);
+ user_cert_combobox_->SetEnabled(user_cert_enabled &&
+ have_user_certs &&
+ user_cert_ui_data_.editable());
user_cert_combobox_->ModelChanged();
user_cert_combobox_->SetSelectedItem(0);
@@ -395,13 +399,16 @@ void WifiConfigView::RefreshEapFields() {
bool ca_cert_enabled =
(selected != EAP_METHOD_INDEX_NONE && selected != EAP_METHOD_INDEX_LEAP);
server_ca_cert_label_->SetEnabled(ca_cert_enabled);
- server_ca_cert_combobox_->SetEnabled(ca_cert_enabled && !certs_loading);
+ server_ca_cert_combobox_->SetEnabled(ca_cert_enabled &&
+ !certs_loading &&
+ server_ca_cert_ui_data_.editable());
server_ca_cert_combobox_->ModelChanged();
server_ca_cert_combobox_->SetSelectedItem(0);
// No anonymous identity if no phase 2 auth.
identity_anonymous_textfield_->SetEnabled(
- phase_2_auth_combobox_->IsEnabled());
+ phase_2_auth_combobox_->IsEnabled() &&
+ identity_anonymous_ui_data_.editable());
identity_anonymous_label_->SetEnabled(
identity_anonymous_textfield_->IsEnabled());
if (!identity_anonymous_textfield_->IsEnabled())
@@ -741,6 +748,34 @@ void WifiConfigView::Cancel() {
// to enter the data. And if they select the 802.1x encryption, we will show
// the 802.1x fields.
void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
+ if (wifi) {
+ eap_method_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPMethod);
+ phase_2_auth_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPPhase2Auth);
+ user_cert_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPClientCertPkcs11Id);
+ server_ca_cert_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPServerCaCertNssNickname);
+ if (server_ca_cert_ui_data_.managed()) {
+ server_ca_cert_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPUseSystemCAs);
+ }
+ identity_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPIdentity);
+ identity_anonymous_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPAnonymousIdentity);
+ save_credentials_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertySaveCredentials);
+ if (show_8021x) {
+ passphrase_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyEAPPassphrase);
+ } else {
+ passphrase_ui_data_.UpdateFromNetwork(
+ wifi, NetworkUIData::kPropertyPassphrase);
+ }
+ }
+
views::GridLayout* layout = views::GridLayout::CreatePanel(this);
SetLayoutManager(layout);
@@ -756,7 +791,7 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
views::GridLayout::USE_PREF, 0,
ChildNetworkConfigView::kInputFieldMinWidth);
column_set->AddPaddingColumn(0, views::kRelatedControlSmallHorizontalSpacing);
- // Password visible button
+ // Password visible button / policy indicator.
column_set->AddColumn(views::GridLayout::CENTER, views::GridLayout::FILL, 1,
views::GridLayout::USE_PREF, 0, kPasswordVisibleWidth);
@@ -802,7 +837,9 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_EAP_METHOD)));
eap_method_combobox_ = new views::Combobox(new EAPMethodComboboxModel());
eap_method_combobox_->set_listener(this);
+ eap_method_combobox_->SetEnabled(eap_method_ui_data_.editable());
layout->AddView(eap_method_combobox_);
+ layout->AddView(new ControlledSettingIndicatorView(eap_method_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
// Phase 2 authentication
@@ -816,6 +853,7 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
phase_2_auth_combobox_->SetEnabled(false);
phase_2_auth_combobox_->set_listener(this);
layout->AddView(phase_2_auth_combobox_);
+ layout->AddView(new ControlledSettingIndicatorView(phase_2_auth_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
// Server CA certificate
@@ -830,6 +868,8 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
server_ca_cert_combobox_->SetEnabled(false);
server_ca_cert_combobox_->set_listener(this);
layout->AddView(server_ca_cert_combobox_);
+ layout->AddView(
+ new ControlledSettingIndicatorView(server_ca_cert_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
// User certificate
@@ -843,6 +883,7 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
user_cert_combobox_->SetEnabled(false);
user_cert_combobox_->set_listener(this);
layout->AddView(user_cert_combobox_);
+ layout->AddView(new ControlledSettingIndicatorView(user_cert_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
// Identity
@@ -855,7 +896,9 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
identity_textfield_->SetController(this);
if (wifi && !wifi->identity().empty())
identity_textfield_->SetText(UTF8ToUTF16(wifi->identity()));
+ identity_textfield_->SetEnabled(identity_ui_data_.editable());
layout->AddView(identity_textfield_);
+ layout->AddView(new ControlledSettingIndicatorView(identity_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
}
@@ -878,29 +921,35 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
passphrase_textfield_->SetAccessibleName(l10n_util::GetStringUTF16(
label_text_id));
layout->AddView(passphrase_textfield_);
- // Password visible button.
- passphrase_visible_button_ = new views::ToggleImageButton(this);
- passphrase_visible_button_->SetTooltipText(
- l10n_util::GetStringUTF16(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE_SHOW));
- passphrase_visible_button_->SetToggledTooltipText(
- l10n_util::GetStringUTF16(
- IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE_HIDE));
- passphrase_visible_button_->SetImage(
- views::ImageButton::BS_NORMAL,
- ResourceBundle::GetSharedInstance().
- GetBitmapNamed(IDR_NETWORK_SHOW_PASSWORD_OFF));
- passphrase_visible_button_->SetImage(
- views::ImageButton::BS_HOT,
- ResourceBundle::GetSharedInstance().
- GetBitmapNamed(IDR_NETWORK_SHOW_PASSWORD_HOVER));
- passphrase_visible_button_->SetToggledImage(
- views::ImageButton::BS_NORMAL,
- ResourceBundle::GetSharedInstance().
- GetBitmapNamed(IDR_NETWORK_SHOW_PASSWORD_ON));
- passphrase_visible_button_->SetImageAlignment(
- views::ImageButton::ALIGN_CENTER, views::ImageButton::ALIGN_MIDDLE);
- layout->AddView(passphrase_visible_button_);
+
+ if (passphrase_ui_data_.managed()) {
+ layout->AddView(new ControlledSettingIndicatorView(passphrase_ui_data_));
+ } else {
+ // Password visible button.
+ passphrase_visible_button_ = new views::ToggleImageButton(this);
+ passphrase_visible_button_->SetTooltipText(
+ l10n_util::GetStringUTF16(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE_SHOW));
+ passphrase_visible_button_->SetToggledTooltipText(
+ l10n_util::GetStringUTF16(
+ IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_PASSPHRASE_HIDE));
+ passphrase_visible_button_->SetImage(
+ views::ImageButton::BS_NORMAL,
+ ResourceBundle::GetSharedInstance().
+ GetBitmapNamed(IDR_NETWORK_SHOW_PASSWORD_OFF));
+ passphrase_visible_button_->SetImage(
+ views::ImageButton::BS_HOT,
+ ResourceBundle::GetSharedInstance().
+ GetBitmapNamed(IDR_NETWORK_SHOW_PASSWORD_HOVER));
+ passphrase_visible_button_->SetToggledImage(
+ views::ImageButton::BS_NORMAL,
+ ResourceBundle::GetSharedInstance().
+ GetBitmapNamed(IDR_NETWORK_SHOW_PASSWORD_ON));
+ passphrase_visible_button_->SetImageAlignment(
+ views::ImageButton::ALIGN_CENTER, views::ImageButton::ALIGN_MIDDLE);
+ layout->AddView(passphrase_visible_button_);
+ }
+
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
if (show_8021x) {
@@ -916,6 +965,8 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
identity_anonymous_textfield_->SetEnabled(false);
identity_anonymous_textfield_->SetController(this);
layout->AddView(identity_anonymous_textfield_);
+ layout->AddView(
+ new ControlledSettingIndicatorView(identity_anonymous_ui_data_));
layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
}
@@ -927,8 +978,12 @@ void WifiConfigView::Init(WifiNetwork* wifi, bool show_8021x) {
save_credentials_checkbox_ = new views::Checkbox(
l10n_util::GetStringUTF16(
IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SAVE_CREDENTIALS));
+ save_credentials_checkbox_->SetEnabled(
+ save_credentials_ui_data_.editable());
layout->SkipColumns(1);
layout->AddView(save_credentials_checkbox_);
+ layout->AddView(
+ new ControlledSettingIndicatorView(save_credentials_ui_data_));
}
// Share network
diff --git a/chrome/browser/chromeos/options/wifi_config_view.h b/chrome/browser/chromeos/options/wifi_config_view.h
index b7ef2bc..3fcc961 100644
--- a/chrome/browser/chromeos/options/wifi_config_view.h
+++ b/chrome/browser/chromeos/options/wifi_config_view.h
@@ -22,8 +22,8 @@
namespace views {
class Checkbox;
-class ToggleImageButton;
class Label;
+class ToggleImageButton;
}
namespace chromeos {
@@ -109,6 +109,15 @@ class WifiConfigView : public ChildNetworkConfigView,
CertLibrary* cert_library_;
+ NetworkPropertyUIData eap_method_ui_data_;
+ NetworkPropertyUIData phase_2_auth_ui_data_;
+ NetworkPropertyUIData user_cert_ui_data_;
+ NetworkPropertyUIData server_ca_cert_ui_data_;
+ NetworkPropertyUIData identity_ui_data_;
+ NetworkPropertyUIData identity_anonymous_ui_data_;
+ NetworkPropertyUIData save_credentials_ui_data_;
+ NetworkPropertyUIData passphrase_ui_data_;
+
views::Textfield* ssid_textfield_;
views::Combobox* eap_method_combobox_;
views::Label* phase_2_auth_label_;