summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ash/ash_chromeos_strings.grdp3
-rw-r--r--ash/system/chromeos/network/network_state_list_detailed_view.cc20
-rw-r--r--chrome/app/chromeos_strings.grdp3
-rw-r--r--chrome/browser/resources/options/chromeos/network_list.js34
-rw-r--r--chrome/browser/ui/webui/options/chromeos/internet_options_handler_strings.cc1
-rw-r--r--chromeos/network/network_state_handler.cc2
-rw-r--r--chromeos/network/network_state_handler.h6
-rw-r--r--chromeos/network/shill_property_handler.cc5
-rw-r--r--chromeos/network/shill_property_handler.h1
-rw-r--r--extensions/browser/api/networking_private/networking_private_chromeos.cc3
-rw-r--r--extensions/common/api/networking_private.idl4
-rw-r--r--third_party/closure_compiler/externs/networking_private.js1
12 files changed, 79 insertions, 4 deletions
diff --git a/ash/ash_chromeos_strings.grdp b/ash/ash_chromeos_strings.grdp
index 1643094..c94576a 100644
--- a/ash/ash_chromeos_strings.grdp
+++ b/ash/ash_chromeos_strings.grdp
@@ -63,6 +63,9 @@
<message name="IDS_ASH_STATUS_TRAY_NETWORK_PROXY_SETTINGS" desc="The label used in the proxy settings entry in the network dialog in the login screen.">
Proxy...
</message>
+ <message name="IDS_ASH_STATUS_TRAY_NETWORK_TECHNOLOGY_ENFORCED_BY_POLICY" desc="The label used for tell users that this technology is disabled by the administrator">
+ This network setting is disabled by the administrator.
+ </message>
<message name="IDS_ASH_STATUS_TRAY_ENABLE_WIFI" desc="The label used for the item to enable wifi.">
Enable Wi-Fi
</message>
diff --git a/ash/system/chromeos/network/network_state_list_detailed_view.cc b/ash/system/chromeos/network/network_state_list_detailed_view.cc
index 858690d..f806dcd 100644
--- a/ash/system/chromeos/network/network_state_list_detailed_view.cc
+++ b/ash/system/chromeos/network/network_state_list_detailed_view.cc
@@ -389,6 +389,8 @@ void NetworkStateListDetailedView::CreateHeaderEntry() {
CreateSpecialRow(IDS_ASH_STATUS_TRAY_NETWORK, this);
if (list_type_ != LIST_TYPE_VPN) {
+ NetworkStateHandler* network_state_handler =
+ NetworkHandler::Get()->network_state_handler();
button_wifi_ = new TrayPopupHeaderButton(
this, IDR_AURA_UBER_TRAY_WIFI_ENABLED, IDR_AURA_UBER_TRAY_WIFI_DISABLED,
IDR_AURA_UBER_TRAY_WIFI_ENABLED_HOVER,
@@ -398,6 +400,12 @@ void NetworkStateListDetailedView::CreateHeaderEntry() {
button_wifi_->SetToggledTooltipText(
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ENABLE_WIFI));
footer()->AddButton(button_wifi_);
+ if (network_state_handler->IsTechnologyProhibited(
+ NetworkTypePattern::WiFi())) {
+ button_wifi_->SetState(views::Button::STATE_DISABLED);
+ button_wifi_->SetToggledTooltipText(l10n_util::GetStringUTF16(
+ IDS_ASH_STATUS_TRAY_NETWORK_TECHNOLOGY_ENFORCED_BY_POLICY));
+ }
button_mobile_ =
new TrayPopupHeaderButton(this, IDR_AURA_UBER_TRAY_CELLULAR_ENABLED,
@@ -409,6 +417,12 @@ void NetworkStateListDetailedView::CreateHeaderEntry() {
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISABLE_MOBILE));
button_mobile_->SetToggledTooltipText(
l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ENABLE_MOBILE));
+ if (network_state_handler->IsTechnologyProhibited(
+ NetworkTypePattern::Cellular())) {
+ button_mobile_->SetState(views::Button::STATE_DISABLED);
+ button_mobile_->SetToggledTooltipText(l10n_util::GetStringUTF16(
+ IDS_ASH_STATUS_TRAY_NETWORK_TECHNOLOGY_ENFORCED_BY_POLICY));
+ }
footer()->AddButton(button_mobile_);
}
@@ -448,6 +462,12 @@ void NetworkStateListDetailedView::CreateNetworkExtra() {
turn_on_wifi_ = new TrayPopupLabelButton(
this, rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_TURN_ON_WIFI));
+ if (NetworkHandler::Get()->network_state_handler()->IsTechnologyProhibited(
+ NetworkTypePattern::WiFi())) {
+ turn_on_wifi_->SetState(views::Button::STATE_DISABLED);
+ turn_on_wifi_->SetTooltipText(l10n_util::GetStringUTF16(
+ IDS_ASH_STATUS_TRAY_NETWORK_TECHNOLOGY_ENFORCED_BY_POLICY));
+ }
bottom_row->AddChildView(turn_on_wifi_);
other_mobile_ = new TrayPopupLabelButton(
diff --git a/chrome/app/chromeos_strings.grdp b/chrome/app/chromeos_strings.grdp
index 16c2946..981180c 100644
--- a/chrome/app/chromeos_strings.grdp
+++ b/chrome/app/chromeos_strings.grdp
@@ -1925,6 +1925,9 @@ Press any key to continue exploring.
<message name="IDS_OPTIONS_SETTINGS_NETWORK_DISABLED" desc="Message displayed when a type of network connection is disabled">
Disabled
</message>
+ <message name="IDS_OPTIONS_SETTINGS_NETWORK_PROHIBITED" desc="Message displayed when a type of network connection is prohibited">
+ Disabled by administrator
+ </message>
<message name="IDS_OPTIONS_SETTINGS_NETWORK_OTHER" desc="Menu option for connecting to a network that is not listed in the menu.">
Join other...
</message>
diff --git a/chrome/browser/resources/options/chromeos/network_list.js b/chrome/browser/resources/options/chromeos/network_list.js
index 3d81804..c366b07 100644
--- a/chrome/browser/resources/options/chromeos/network_list.js
+++ b/chrome/browser/resources/options/chromeos/network_list.js
@@ -1283,6 +1283,9 @@ cr.define('options.network', function() {
if (wifiDeviceState_ == 'Enabled')
loadData_('WiFi', networkStates);
+ else if (wifiDeviceState_ ==
+ chrome.networkingPrivate.DeviceStateType.PROHIBITED)
+ setTechnologiesProhibited_(chrome.networkingPrivate.NetworkType.WI_FI);
else
addEnableNetworkButton_(chrome.networkingPrivate.NetworkType.WI_FI);
@@ -1292,6 +1295,10 @@ cr.define('options.network', function() {
!isCellularSimAbsent(cellularDevice_) &&
!isCellularSimLocked(cellularDevice_)) {
loadData_('Cellular', networkStates);
+ } else if (cellularDevice_.State ==
+ chrome.networkingPrivate.DeviceStateType.PROHIBITED) {
+ setTechnologiesProhibited_(
+ chrome.networkingPrivate.NetworkType.CELLULAR);
} else {
addEnableNetworkButton_(
chrome.networkingPrivate.NetworkType.CELLULAR);
@@ -1302,10 +1309,15 @@ cr.define('options.network', function() {
// Only show wimax control if available. Uses cellular icons.
if (wimaxDeviceState_) {
- if (wimaxDeviceState_ == 'Enabled')
+ if (wimaxDeviceState_ == 'Enabled') {
loadData_('WiMAX', networkStates);
- else
+ } else if (wimaxDeviceState_ ==
+ chrome.networkingPrivate.DeviceStateType.PROHIBITED) {
+ setTechnologiesProhibited_(
+ chrome.networkingPrivate.NetworkType.WI_MAX);
+ } else {
addEnableNetworkButton_(chrome.networkingPrivate.NetworkType.WI_MAX);
+ }
} else {
this.deleteItem('WiMAX');
}
@@ -1346,6 +1358,24 @@ cr.define('options.network', function() {
}
/**
+ * Replaces a network menu with a button with nothing to do.
+ * @param {!chrome.networkingPrivate.NetworkType} type
+ * @private
+ */
+ function setTechnologiesProhibited_(type) {
+ var subtitle = loadTimeData.getString('networkProhibited');
+ var doNothingButRemoveClickShadow = function() {
+ this.removeAttribute('lead');
+ this.removeAttribute('selected');
+ this.parentNode.removeAttribute('has-element-focus');
+ };
+ $('network-list').update({key: type,
+ subtitle: subtitle,
+ iconType: type,
+ command: doNothingButRemoveClickShadow});
+ }
+
+ /**
* Element for indicating a policy managed network.
* @constructor
* @extends {options.ControlledSettingIndicator}
diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler_strings.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler_strings.cc
index b50dce0..189cd484 100644
--- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler_strings.cc
+++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler_strings.cc
@@ -35,6 +35,7 @@ StringResource kStringResources[] = {
{"vpnBuiltInProvider", IDS_NETWORK_VPN_BUILT_IN_PROVIDER},
{"joinOtherNetwork", IDS_OPTIONS_SETTINGS_NETWORK_OTHER},
{"networkDisabled", IDS_OPTIONS_SETTINGS_NETWORK_DISABLED},
+ {"networkProhibited", IDS_OPTIONS_SETTINGS_NETWORK_PROHIBITED},
{"turnOffWifi", IDS_OPTIONS_SETTINGS_NETWORK_DISABLE_WIFI},
{"turnOffWimax", IDS_OPTIONS_SETTINGS_NETWORK_DISABLE_WIMAX},
{"turnOffCellular", IDS_OPTIONS_SETTINGS_NETWORK_DISABLE_CELLULAR},
diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc
index 5007837..e2ea522 100644
--- a/chromeos/network/network_state_handler.cc
+++ b/chromeos/network/network_state_handler.cc
@@ -114,6 +114,8 @@ NetworkStateHandler::TechnologyState NetworkStateHandler::GetTechnologyState(
state = TECHNOLOGY_ENABLED;
else if (shill_property_handler_->IsTechnologyEnabling(technology))
state = TECHNOLOGY_ENABLING;
+ else if (shill_property_handler_->IsTechnologyProhibited(technology))
+ state = TECHNOLOGY_PROHIBITED;
else if (shill_property_handler_->IsTechnologyUninitialized(technology))
state = TECHNOLOGY_UNINITIALIZED;
else if (shill_property_handler_->IsTechnologyAvailable(technology))
diff --git a/chromeos/network/network_state_handler.h b/chromeos/network/network_state_handler.h
index a700f82..7dd422c 100644
--- a/chromeos/network/network_state_handler.h
+++ b/chromeos/network/network_state_handler.h
@@ -74,7 +74,8 @@ class CHROMEOS_EXPORT NetworkStateHandler
TECHNOLOGY_AVAILABLE,
TECHNOLOGY_UNINITIALIZED,
TECHNOLOGY_ENABLING,
- TECHNOLOGY_ENABLED
+ TECHNOLOGY_ENABLED,
+ TECHNOLOGY_PROHIBITED
};
~NetworkStateHandler() override;
@@ -94,6 +95,9 @@ class CHROMEOS_EXPORT NetworkStateHandler
bool IsTechnologyEnabled(const NetworkTypePattern& type) const {
return GetTechnologyState(type) == TECHNOLOGY_ENABLED;
}
+ bool IsTechnologyProhibited(const NetworkTypePattern& type) const {
+ return GetTechnologyState(type) == TECHNOLOGY_PROHIBITED;
+ }
// Asynchronously sets the technology enabled property for |type|. Only
// NetworkTypePattern::Primitive, ::Mobile and ::Ethernet are supported.
diff --git a/chromeos/network/shill_property_handler.cc b/chromeos/network/shill_property_handler.cc
index eb73b83..41482be 100644
--- a/chromeos/network/shill_property_handler.cc
+++ b/chromeos/network/shill_property_handler.cc
@@ -143,6 +143,11 @@ bool ShillPropertyHandler::IsTechnologyEnabling(
return enabling_technologies_.count(technology) != 0;
}
+bool ShillPropertyHandler::IsTechnologyProhibited(
+ const std::string& technology) const {
+ return prohibited_technologies_.count(technology) != 0;
+}
+
bool ShillPropertyHandler::IsTechnologyUninitialized(
const std::string& technology) const {
return uninitialized_technologies_.count(technology) != 0;
diff --git a/chromeos/network/shill_property_handler.h b/chromeos/network/shill_property_handler.h
index d88ac28..b4b6202 100644
--- a/chromeos/network/shill_property_handler.h
+++ b/chromeos/network/shill_property_handler.h
@@ -114,6 +114,7 @@ class CHROMEOS_EXPORT ShillPropertyHandler
bool IsTechnologyAvailable(const std::string& technology) const;
bool IsTechnologyEnabled(const std::string& technology) const;
bool IsTechnologyEnabling(const std::string& technology) const;
+ bool IsTechnologyProhibited(const std::string& technology) const;
bool IsTechnologyUninitialized(const std::string& technology) const;
// Asynchronously sets the enabled state for |technology|.
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.cc b/extensions/browser/api/networking_private/networking_private_chromeos.cc
index 7bddcb8..fb79efb 100644
--- a/extensions/browser/api/networking_private/networking_private_chromeos.cc
+++ b/extensions/browser/api/networking_private/networking_private_chromeos.cc
@@ -121,6 +121,9 @@ void AppendDeviceState(
case NetworkStateHandler::TECHNOLOGY_ENABLED:
state = private_api::DEVICE_STATE_TYPE_ENABLED;
break;
+ case NetworkStateHandler::TECHNOLOGY_PROHIBITED:
+ state = private_api::DEVICE_STATE_TYPE_PROHIBITED;
+ break;
}
DCHECK_NE(private_api::DEVICE_STATE_TYPE_NONE, state);
scoped_ptr<private_api::DeviceStateProperties> properties(
diff --git a/extensions/common/api/networking_private.idl b/extensions/common/api/networking_private.idl
index 2cf52fd..75c3449 100644
--- a/extensions/common/api/networking_private.idl
+++ b/extensions/common/api/networking_private.idl
@@ -48,7 +48,9 @@ namespace networkingPrivate {
// Enabled state has been requested but has not completed.
Enabling,
// Device is enabled.
- Enabled
+ Enabled,
+ // Device is prohibited.
+ Prohibited
};
enum IPConfigType {
diff --git a/third_party/closure_compiler/externs/networking_private.js b/third_party/closure_compiler/externs/networking_private.js
index aebf7f9..e190d47 100644
--- a/third_party/closure_compiler/externs/networking_private.js
+++ b/third_party/closure_compiler/externs/networking_private.js
@@ -58,6 +58,7 @@ chrome.networkingPrivate.DeviceStateType = {
DISABLED: 'Disabled',
ENABLING: 'Enabling',
ENABLED: 'Enabled',
+ PROHIBITED: 'Prohibited',
};
/**