Index: chrome/browser/resources/options/chromeos/network_list.js |
diff --git a/chrome/browser/resources/options/chromeos/network_list.js b/chrome/browser/resources/options/chromeos/network_list.js |
index f77cec6584e2e12400e5ade69c47a703293f6df9..f075f3730618d87a8a8d298ed777ad0b455639df 100644 |
--- a/chrome/browser/resources/options/chromeos/network_list.js |
+++ b/chrome/browser/resources/options/chromeos/network_list.js |
@@ -63,19 +63,13 @@ cr.define('options.network', function() { |
*/ |
var activeMenu_ = null; |
- /** |
- * Indicates if cellular networks are available. |
- * @type {boolean} |
- * @private |
- */ |
- var cellularAvailable_ = false; |
pneubeck (no reviews)
2015/04/15 08:13:06
nit: remove empty line
stevenjb
2015/04/16 17:07:44
Done.
|
/** |
- * Indicates if cellular networks are enabled. |
- * @type {boolean} |
+ * The state of the cellular device or undefined if not available. |
+ * @type {string|undefined} |
* @private |
*/ |
- var cellularEnabled_ = false; |
+ var cellularState_ = undefined; |
/** |
* Indicates if cellular device supports network scanning. |
@@ -99,18 +93,18 @@ cr.define('options.network', function() { |
var cellularSimAbsent_ = false; |
/** |
- * Indicates if WiMAX networks are available. |
- * @type {boolean} |
+ * The state of the WiFi device or undefined if not available. |
+ * @type {string|undefined} |
* @private |
*/ |
- var wimaxAvailable_ = false; |
+ var wifiState_ = undefined; |
/** |
- * Indicates if WiMAX networks are enabled. |
- * @type {boolean} |
+ * The state of the WiMAX device or undefined if not available. |
+ * @type {string|undefined} |
* @private |
*/ |
- var wimaxEnabled_ = false; |
+ var wimaxState_ = undefined; |
/** |
* Indicates if mobile data roaming is enabled. |
@@ -120,6 +114,34 @@ cr.define('options.network', function() { |
var enableDataRoaming_ = false; |
/** |
+ * List of wired networks. |
+ * @type {Array<!NetworkInfo>} |
+ * @private |
+ */ |
+ var wiredList_ = []; |
+ |
+ /** |
+ * List of WiFi, Cellular, and WiMAX networks. |
+ * @type {Array<!NetworkInfo>} |
+ * @private |
+ */ |
+ var wirelessList_ = []; |
+ |
+ /** |
+ * List of VPN networks. |
+ * @type {Array<!NetworkInfo>} |
+ * @private |
+ */ |
+ var vpnList_ = []; |
+ |
+ /** |
+ * List of remembered (favorite) networks. |
+ * @type {Array<!NetworkInfo>} |
+ * @private |
+ */ |
+ var rememberedList_ = []; |
+ |
+ /** |
* Returns the display name for 'network'. |
* @param {Object} data The network data dictionary. |
*/ |
@@ -512,7 +534,7 @@ cr.define('options.network', function() { |
data: {} |
}); |
} else if (this.data_.key == 'Cellular') { |
- if (cellularEnabled_ && cellularSupportsScan_) { |
+ if (cellularState_ == 'Enabled' && cellularSupportsScan_) { |
addendum.push({ |
label: loadTimeData.getString('otherCellularNetworks'), |
command: createAddNonVPNConnectionCallback_('Cellular'), |
@@ -1028,34 +1050,55 @@ cr.define('options.network', function() { |
/** |
* Chrome callback for updating network controls. |
- * @param {{cellularAvailable: boolean, |
- * cellularEnabled: boolean, |
- * cellularSimAbsent: boolean, |
+ * @param {{cellularSimAbsent: boolean, |
* cellularSimLockType: string, |
* cellularSupportsScan: boolean, |
* rememberedList: Array<NetworkInfo>, |
* vpnList: Array<NetworkInfo>, |
- * wifiAvailable: boolean, |
- * wifiEnabled: boolean, |
- * wimaxAvailable: boolean, |
- * wimaxEnabled: boolean, |
* wiredList: Array<NetworkInfo>, |
* wirelessList: Array<NetworkInfo>}} data Description of available |
* network devices and their corresponding state. |
*/ |
NetworkList.refreshNetworkData = function(data) { |
- var networkList = $('network-list'); |
- networkList.startBatchUpdates(); |
- cellularAvailable_ = data.cellularAvailable; |
- cellularEnabled_ = data.cellularEnabled; |
cellularSupportsScan_ = data.cellularSupportsScan; |
cellularSimAbsent_ = data.cellularSimAbsent; |
cellularSimLockType_ = data.cellularSimLockType; |
- wimaxAvailable_ = data.wimaxAvailable; |
- wimaxEnabled_ = data.wimaxEnabled; |
+ wiredList_ = data.wiredList; |
+ wirelessList_ = data.wirelessList; |
+ vpnList_ = data.vpnList; |
+ rememberedList_ = data.rememberedList; |
+ |
+ // Request device states. |
+ chrome.networkingPrivate.getDeviceStates( |
+ NetworkList.onGetDeviceStates.bind(this)); |
+ }; |
+ |
+ /** |
+ * Callback from getDeviceStates. Updates network controls. |
+ * @param {Array<{State: string, Type: string}>} deviceStates The result |
+ * from getDeviceStates. |
+ */ |
+ NetworkList.onGetDeviceStates = function(deviceStates) { |
+ var networkList = $('network-list'); |
+ networkList.startBatchUpdates(); |
+ |
+ cellularState_ = undefined; |
+ wifiState_ = undefined; |
+ wimaxState_ = undefined; |
+ for (var i = 0; i < deviceStates.length; ++i) { |
+ var device = deviceStates[i]; |
+ var type = device.Type; |
pneubeck (no reviews)
2015/04/15 08:13:05
nit:
to make it more generic / less code, you coul
stevenjb
2015/04/16 17:07:44
I decided against that since it is an incomplete l
|
+ var state = device.State; |
+ if (type == 'Cellular') |
+ cellularState_ = cellularState_ || state; |
+ else if (type == 'WiFi') |
+ wifiState_ = wifiState_ || state; |
+ else if (type == 'WiMAX') |
+ wimaxState_ = wimaxState_ || state; |
+ } |
// Only show Ethernet control if connected. |
- var ethernetConnection = getConnection_(data.wiredList); |
+ var ethernetConnection = getConnection_(wiredList_); |
if (ethernetConnection) { |
var type = String('Ethernet'); |
var ethernetOptions = showDetails.bind(null, ethernetConnection.GUID); |
@@ -1070,15 +1113,15 @@ cr.define('options.network', function() { |
networkList.deleteItem('Ethernet'); |
} |
- if (data.wifiEnabled) |
- loadData_('WiFi', data.wirelessList, data.rememberedList); |
+ if (wifiState_ == 'Enabled') |
+ loadData_('WiFi', wirelessList_, rememberedList_); |
else |
addEnableNetworkButton_('WiFi'); |
// Only show cellular control if available. |
- if (data.cellularAvailable) { |
- if (data.cellularEnabled) |
- loadData_('Cellular', data.wirelessList, data.rememberedList); |
+ if (cellularState_) { |
+ if (cellularState_ == 'Enabled') |
+ loadData_('Cellular', wirelessList_, rememberedList_); |
else |
addEnableNetworkButton_('Cellular'); |
} else { |
@@ -1086,9 +1129,9 @@ cr.define('options.network', function() { |
} |
// Only show wimax control if available. Uses cellular icons. |
- if (data.wimaxAvailable) { |
- if (data.wimaxEnabled) |
- loadData_('WiMAX', data.wirelessList, data.rememberedList); |
+ if (wimaxState_) { |
+ if (wimaxState_ == 'Enabled') |
+ loadData_('WiMAX', wirelessList_, rememberedList_); |
else |
addEnableNetworkButton_('WiMAX'); |
} else { |
@@ -1096,8 +1139,8 @@ cr.define('options.network', function() { |
} |
// Only show VPN control if there is at least one VPN configured. |
- if (data.vpnList.length > 0) |
- loadData_('VPN', data.vpnList, data.rememberedList); |
+ if (vpnList_.length > 0) |
+ loadData_('VPN', vpnList_, rememberedList_); |
else |
networkList.deleteItem('VPN'); |
networkList.endBatchUpdates(); |
@@ -1117,7 +1160,7 @@ cr.define('options.network', function() { |
if (cellularSimLockType_) { |
chrome.send('simOperation', ['unlock']); |
return; |
- } else if (cellularEnabled_ && cellularSimAbsent_) { |
+ } else if (cellularState_ == 'Enabled' && cellularSimAbsent_) { |
chrome.send('simOperation', ['configure']); |
return; |
} |