diff options
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', }; /** |