Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 var NetworkUI = (function() { | 5 var NetworkUI = (function() { |
| 6 'use strict'; | 6 'use strict'; |
| 7 | 7 |
| 8 // Properties to display in the network state table. Each entry can be either | 8 // Properties to display in the network state table. Each entry can be either |
| 9 // a single state field or an array of state fields. If more than one is | 9 // a single state field or an array of state fields. If more than one is |
| 10 // specified then the first non empty value is used. | 10 // specified then the first non empty value is used. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 51 var createTableRowElement = function() { | 51 var createTableRowElement = function() { |
| 52 return /** @type {!HTMLTableRowElement} */(document.createElement('tr')); | 52 return /** @type {!HTMLTableRowElement} */(document.createElement('tr')); |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 /** | 55 /** |
| 56 * Returns the ONC data property for networkState associated with a key. Used | 56 * Returns the ONC data property for networkState associated with a key. Used |
| 57 * to access properties in the networkState by |key| which may may refer to a | 57 * to access properties in the networkState by |key| which may may refer to a |
| 58 * nested property, e.g. 'WiFi.Security'. If any part of a nested key is | 58 * nested property, e.g. 'WiFi.Security'. If any part of a nested key is |
| 59 * missing, this will return undefined. | 59 * missing, this will return undefined. |
| 60 * | 60 * |
| 61 * @param {!CrOnc.NetworkConfigType} networkState The network state | 61 * @param {!chrome.networkingPrivate.NetworkStateProperties} networkState The |
|
michaelpg
2015/03/31 19:18:46
lol @ being able to fit 1 word of description. I g
| |
| 62 * property dictionary. | 62 * network state property dictionary. |
| 63 * @param {string} key The ONC key for the property. | 63 * @param {string} key The ONC key for the property. |
| 64 * @return {*} The value associated with the property or undefined if the | 64 * @return {*} The value associated with the property or undefined if the |
| 65 * key (any part of it) is not defined. | 65 * key (any part of it) is not defined. |
| 66 */ | 66 */ |
| 67 var getOncProperty = function(networkState, key) { | 67 var getOncProperty = function(networkState, key) { |
| 68 var dict = /** @type {!Object} */(networkState); | 68 var dict = /** @type {!Object} */(networkState); |
| 69 var keys = key.split('.'); | 69 var keys = key.split('.'); |
| 70 while (keys.length > 1) { | 70 while (keys.length > 1) { |
| 71 var k = keys.shift(); | 71 var k = keys.shift(); |
| 72 dict = dict[k]; | 72 dict = dict[k]; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 92 }); | 92 }); |
| 93 button.className = 'state-table-expand-button'; | 93 button.className = 'state-table-expand-button'; |
| 94 button.textContent = '+'; | 94 button.textContent = '+'; |
| 95 cell.appendChild(button); | 95 cell.appendChild(button); |
| 96 return cell; | 96 return cell; |
| 97 }; | 97 }; |
| 98 | 98 |
| 99 /** | 99 /** |
| 100 * Creates a cell with an icon representing the network state. | 100 * Creates a cell with an icon representing the network state. |
| 101 * | 101 * |
| 102 * @param {CrOnc.NetworkConfigType} networkState The network state properties. | 102 * @param {!chrome.networkingPrivate.NetworkStateProperties} networkState The |
| 103 * network state properties. | |
| 103 * @return {!HTMLTableCellElement} The created td element that displays the | 104 * @return {!HTMLTableCellElement} The created td element that displays the |
| 104 * icon. | 105 * icon. |
| 105 */ | 106 */ |
| 106 var createStateTableIcon = function(networkState) { | 107 var createStateTableIcon = function(networkState) { |
| 107 var cell = createTableCellElement(); | 108 var cell = createTableCellElement(); |
| 108 cell.className = 'state-table-icon-cell'; | 109 cell.className = 'state-table-icon-cell'; |
| 109 var icon = /** @type {!CrNetworkIconElement} */( | 110 var icon = /** @type {!CrNetworkIconElement} */( |
| 110 document.createElement('cr-network-icon')); | 111 document.createElement('cr-network-icon')); |
| 111 icon.isListItem = true; | 112 icon.isListItem = true; |
| 112 icon.networkState = CrOncDataElement.create(networkState); | 113 icon.networkState = CrOncDataElement.create(networkState); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 124 var createStateTableCell = function(value) { | 125 var createStateTableCell = function(value) { |
| 125 var cell = createTableCellElement(); | 126 var cell = createTableCellElement(); |
| 126 cell.textContent = value || ''; | 127 cell.textContent = value || ''; |
| 127 return cell; | 128 return cell; |
| 128 }; | 129 }; |
| 129 | 130 |
| 130 /** | 131 /** |
| 131 * Creates a row in the network state table. | 132 * Creates a row in the network state table. |
| 132 * | 133 * |
| 133 * @param {Array} stateFields The state fields to use for the row. | 134 * @param {Array} stateFields The state fields to use for the row. |
| 134 * @param {CrOnc.NetworkConfigType} networkState The network state properties. | 135 * @param {!chrome.networkingPrivate.NetworkStateProperties} networkState The |
| 136 * network state properties. | |
| 135 * @return {!HTMLTableRowElement} The created tr element that contains the | 137 * @return {!HTMLTableRowElement} The created tr element that contains the |
| 136 * network state information. | 138 * network state information. |
| 137 */ | 139 */ |
| 138 var createStateTableRow = function(stateFields, networkState) { | 140 var createStateTableRow = function(stateFields, networkState) { |
| 139 var row = createTableRowElement(); | 141 var row = createTableRowElement(); |
| 140 row.className = 'state-table-row'; | 142 row.className = 'state-table-row'; |
| 141 var guid = networkState.GUID; | 143 var guid = networkState.GUID; |
| 142 row.appendChild(createStateTableExpandButton(guid)); | 144 row.appendChild(createStateTableExpandButton(guid)); |
| 143 row.appendChild(createStateTableIcon(networkState)); | 145 row.appendChild(createStateTableIcon(networkState)); |
| 144 for (var i = 0; i < stateFields.length; ++i) { | 146 for (var i = 0; i < stateFields.length; ++i) { |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 157 value = value.slice(0, 8); | 159 value = value.slice(0, 8); |
| 158 row.appendChild(createStateTableCell(value)); | 160 row.appendChild(createStateTableCell(value)); |
| 159 } | 161 } |
| 160 return row; | 162 return row; |
| 161 }; | 163 }; |
| 162 | 164 |
| 163 /** | 165 /** |
| 164 * Creates a table for networks or favorites. | 166 * Creates a table for networks or favorites. |
| 165 * | 167 * |
| 166 * @param {string} tablename The name of the table to be created. | 168 * @param {string} tablename The name of the table to be created. |
| 167 * @param {Array} stateFields The list of fields for the table. | 169 * @param {!Array<string>} stateFields The list of fields for the table. |
| 168 * @param {Array} states An array of network or favorite states. | 170 * @param {!Array<!chrome.networkingPrivate.NetworkStateProperties>} states |
| 171 * An array of network or favorite states. | |
| 169 */ | 172 */ |
| 170 var createStateTable = function(tablename, stateFields, states) { | 173 var createStateTable = function(tablename, stateFields, states) { |
| 171 var table = $(tablename); | 174 var table = $(tablename); |
| 172 var oldRows = table.querySelectorAll('.state-table-row'); | 175 var oldRows = table.querySelectorAll('.state-table-row'); |
| 173 for (var i = 0; i < oldRows.length; ++i) | 176 for (var i = 0; i < oldRows.length; ++i) |
| 174 table.removeChild(oldRows[i]); | 177 table.removeChild(oldRows[i]); |
| 175 states.forEach(function(state) { | 178 states.forEach(function(state) { |
| 176 table.appendChild(createStateTableRow( | 179 table.appendChild(createStateTableRow(stateFields, state)); |
| 177 stateFields, /** @type {!CrOnc.NetworkConfigType} */(state))); | |
| 178 }); | 180 }); |
| 179 }; | 181 }; |
| 180 | 182 |
| 181 /** | 183 /** |
| 182 * Returns a valid HTMLElement id from |guid|. | 184 * Returns a valid HTMLElement id from |guid|. |
| 183 * | 185 * |
| 184 * @param {string} guid A GUID which may start with a digit. | 186 * @param {string} guid A GUID which may start with a digit. |
| 185 * @return {string} A valid HTMLElement id. | 187 * @return {string} A valid HTMLElement id. |
| 186 */ | 188 */ |
| 187 var idFromGuid = function(guid) { | 189 var idFromGuid = function(guid) { |
| 188 return '_' + guid.replace(/[{}]/g, ''); | 190 return '_' + guid.replace(/[{}]/g, ''); |
| 189 }; | 191 }; |
| 190 | 192 |
| 191 /** | 193 /** |
| 192 * This callback function is triggered when visible networks are received. | 194 * This callback function is triggered when visible networks are received. |
| 193 * | 195 * |
| 194 * @param {!Array<!Object>} states A list of network state information for | 196 * @param {!Array<!chrome.networkingPrivate.NetworkStateProperties>} states |
| 195 * each visible network. | 197 * A list of network state information for each visible network. |
| 196 */ | 198 */ |
| 197 var onVisibleNetworksReceived = function(states) { | 199 var onVisibleNetworksReceived = function(states) { |
| 198 /** @type {CrOnc.NetworkConfigType} */ var defaultState; | 200 /** @type {chrome.networkingPrivate.NetworkStateProperties} */ var |
| 201 defaultState; | |
| 199 if (states.length > 0) | 202 if (states.length > 0) |
| 200 defaultState = /** @type {!CrOnc.NetworkConfigType} */(states[0]); | 203 defaultState = states[0]; |
| 201 var icon = /** @type {CrNetworkIconElement} */($('default-network-icon')); | 204 var icon = /** @type {CrNetworkIconElement} */($('default-network-icon')); |
| 202 if (defaultState && defaultState.Type != 'VPN') { | 205 if (defaultState && |
| 206 defaultState.Type != chrome.networkingPrivate.NetworkType.VPN) { | |
| 203 $('default-network-text').textContent = | 207 $('default-network-text').textContent = |
| 204 loadTimeData.getStringF('defaultNetworkText', | 208 loadTimeData.getStringF('defaultNetworkText', |
| 205 defaultState.Name, | 209 defaultState.Name, |
| 206 defaultState.ConnectionState); | 210 defaultState.ConnectionState); |
| 207 icon.networkState = CrOncDataElement.create(defaultState); | 211 icon.networkState = CrOncDataElement.create(defaultState); |
| 208 } else { | 212 } else { |
| 209 $('default-network-text').textContent = | 213 $('default-network-text').textContent = |
| 210 loadTimeData.getString('noNetworkText'); | 214 loadTimeData.getString('noNetworkText'); |
| 211 // Show the disconnected wifi icon if there are no networks. | 215 // Show the disconnected wifi icon if there are no networks. |
| 212 icon.networkType = CrOnc.Type.WIFI; | 216 icon.networkType = chrome.networkingPrivate.NetworkType.WiFi; |
| 213 } | 217 } |
| 214 | 218 |
| 215 createStateTable('network-state-table', NETWORK_STATE_FIELDS, states); | 219 createStateTable('network-state-table', NETWORK_STATE_FIELDS, states); |
| 216 }; | 220 }; |
| 217 | 221 |
| 218 /** | 222 /** |
| 219 * This callback function is triggered when favorite networks are received. | 223 * This callback function is triggered when favorite networks are received. |
| 220 * | 224 * |
| 221 * @param {!Array<!Object>} states A list of network state information for | 225 * @param {!Array<!chrome.networkingPrivate.NetworkStateProperties>} states |
| 222 * each favorite network. | 226 * A list of network state information for each favorite network. |
| 223 */ | 227 */ |
| 224 var onFavoriteNetworksReceived = function(states) { | 228 var onFavoriteNetworksReceived = function(states) { |
| 225 createStateTable('favorite-state-table', FAVORITE_STATE_FIELDS, states); | 229 createStateTable('favorite-state-table', FAVORITE_STATE_FIELDS, states); |
| 226 }; | 230 }; |
| 227 | 231 |
| 228 /** | 232 /** |
| 229 * Toggles the button state and add or remove a row displaying the complete | 233 * Toggles the button state and add or remove a row displaying the complete |
| 230 * state information for a row. | 234 * state information for a row. |
| 231 * | 235 * |
| 232 * @param {!HTMLElement} btn The button that was clicked. | 236 * @param {!HTMLElement} btn The button that was clicked. |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 339 document.addEventListener('DOMContentLoaded', function() { | 343 document.addEventListener('DOMContentLoaded', function() { |
| 340 $('refresh').onclick = requestNetworks; | 344 $('refresh').onclick = requestNetworks; |
| 341 setRefresh(); | 345 setRefresh(); |
| 342 requestNetworks(); | 346 requestNetworks(); |
| 343 }); | 347 }); |
| 344 | 348 |
| 345 return { | 349 return { |
| 346 getShillPropertiesResult: getShillPropertiesResult | 350 getShillPropertiesResult: getShillPropertiesResult |
| 347 }; | 351 }; |
| 348 })(); | 352 })(); |
| OLD | NEW |