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'; | |
7 | |
6 // 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 |
7 // 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 |
8 // specified then the first non empty value is used. | 10 // specified then the first non empty value is used. |
9 var NETWORK_STATE_FIELDS = [ | 11 var NETWORK_STATE_FIELDS = [ |
10 'Name', 'Type', 'State', 'Profile', 'Connectable', | 12 networkConfig.Service.ServicePath, |
michaelpg
2014/04/29 19:51:00
Why remove Profile?
stevenjb
2014/04/29 21:44:03
Profile isn't applicable to visible networks, only
| |
11 'Error', 'Security', | 13 networkConfig.Service.GUID, |
12 ['Cellular.NetworkTechnology', 'EAP.EAP'], | 14 networkConfig.Service.Name, |
13 'Cellular.ActivationState', 'Cellular.RoamingState', | 15 networkConfig.Service.Type, |
14 'Cellular.OutOfCredits', 'Strength' | 16 networkConfig.Service.ConnectionState, |
17 networkConfig.Service.ErrorState, | |
18 networkConfig.Service.WiFi.Security, | |
19 [networkConfig.Service.Cellular.NetworkTechnology, | |
20 networkConfig.Service.EAP.EAP], | |
21 networkConfig.Service.Cellular.ActivationState, | |
22 networkConfig.Service.Cellular.RoamingState, | |
23 networkConfig.Service.Cellular.OutOfCredits, | |
24 networkConfig.Service.WiFi.SignalStrength | |
15 ]; | 25 ]; |
16 | 26 |
17 var FAVORITE_STATE_FIELDS = [ | 27 var FAVORITE_STATE_FIELDS = [ |
18 'Name', 'Type', 'Profile', 'onc_source' | 28 networkConfig.Service.ServicePath, |
29 networkConfig.Service.GUID, | |
30 networkConfig.Service.Name, | |
31 networkConfig.Service.Type, | |
32 networkConfig.Service.Profile, | |
33 networkConfig.Service.OncSource | |
19 ]; | 34 ]; |
20 | 35 |
21 var LOG_LEVEL_CLASSNAME = { | 36 var LOG_LEVEL_CLASSNAME = { |
22 'Error': 'network-log-level-error', | 37 'Error': 'network-log-level-error', |
23 'User': 'network-log-level-user', | 38 'User': 'network-log-level-user', |
24 'Event': 'network-log-level-event', | 39 'Event': 'network-log-level-event', |
25 'Debug': 'network-log-level-debug' | 40 'Debug': 'network-log-level-debug' |
26 }; | 41 }; |
27 | 42 |
28 var LOG_LEVEL_CHECKBOX = { | 43 var LOG_LEVEL_CHECKBOX = { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
121 var createStateTableCell = function(value) { | 136 var createStateTableCell = function(value) { |
122 var cell = document.createElement('td'); | 137 var cell = document.createElement('td'); |
123 cell.textContent = value || ''; | 138 cell.textContent = value || ''; |
124 return cell; | 139 return cell; |
125 }; | 140 }; |
126 | 141 |
127 /** | 142 /** |
128 * Create a row in the network state table. | 143 * Create a row in the network state table. |
129 * | 144 * |
130 * @param {string} stateFields The state fields to use for the row. | 145 * @param {string} stateFields The state fields to use for the row. |
131 * @param {string} path The network or favorite path. | |
132 * @param {dictionary} state Property values for the network or favorite. | 146 * @param {dictionary} state Property values for the network or favorite. |
133 * @return {DOMElement} The created tr element that contains the network | 147 * @return {DOMElement} The created tr element that contains the network |
134 * state information. | 148 * state information. |
135 */ | 149 */ |
136 var createStateTableRow = function(stateFields, path, state) { | 150 var createStateTableRow = function(stateFields, state) { |
137 var row = document.createElement('tr'); | 151 var row = document.createElement('tr'); |
138 row.className = 'state-table-row'; | 152 row.className = 'state-table-row'; |
139 row.appendChild(createStateTableExpandButton(state)); | 153 row.appendChild(createStateTableExpandButton(state)); |
140 row.appendChild(createStateTableCell(path)); | |
141 var guid = state['GUID']; | |
142 if (guid) | |
143 guid = guid.slice(1, 9); | |
144 row.appendChild(createStateTableCell(guid)); | |
145 for (var i = 0; i < stateFields.length; ++i) { | 154 for (var i = 0; i < stateFields.length; ++i) { |
146 var field = stateFields[i]; | 155 var field = stateFields[i]; |
147 var value = ''; | 156 var value = ''; |
148 if (typeof field == 'string') { | 157 if (typeof field == 'string') { |
149 value = state[field]; | 158 var dot = field.indexOf('.'); |
159 if (dot > 0) { | |
160 var field1 = field.substring(0, dot); | |
161 var field2 = field.substring(dot + 1); | |
162 var fieldobj = state[field1]; | |
163 if (fieldobj) | |
164 value = fieldobj[field2]; | |
165 } else { | |
166 value = state[field]; | |
167 } | |
150 } else { | 168 } else { |
151 for (var j = 0; j < field.length; ++j) { | 169 for (var j = 0; j < field.length; ++j) { |
152 value = state[field[j]]; | 170 value = state[field[j]]; |
153 if (value) | 171 if (value) |
154 break; | 172 break; |
155 } | 173 } |
156 } | 174 } |
175 if (field == networkConfig.Service.GUID) | |
176 value = value.slice(1, 9); | |
157 row.appendChild(createStateTableCell(value)); | 177 row.appendChild(createStateTableCell(value)); |
158 } | 178 } |
159 return row; | 179 return row; |
160 }; | 180 }; |
161 | 181 |
162 /** | 182 /** |
163 * Create table for networks or favorites. | 183 * Create table for networks or favorites. |
164 * | 184 * |
165 * @param {string} tablename The name of the table to be created. | 185 * @param {string} tablename The name of the table to be created. |
166 * @param {Array.<Object>} stateFields The list of fields for the table. | 186 * @param {Array.<Object>} stateFields The list of fields for the table. |
167 * @param {Array.<Object>} states An array of network or favorite states. | 187 * @param {Array.<Object>} states An array of network or favorite states. |
168 */ | 188 */ |
169 var createStateTable = function(tablename, stateFields, states) { | 189 var createStateTable = function(tablename, stateFields, states) { |
170 var table = $(tablename); | 190 var table = $(tablename); |
171 var oldRows = table.querySelectorAll('.state-table-row'); | 191 var oldRows = table.querySelectorAll('.state-table-row'); |
172 for (var i = 0; i < oldRows.length; ++i) | 192 for (var i = 0; i < oldRows.length; ++i) |
173 table.removeChild(oldRows[i]); | 193 table.removeChild(oldRows[i]); |
174 for (var path in states) | 194 for (var s in states) |
175 table.appendChild(createStateTableRow(stateFields, path, states[path])); | 195 table.appendChild(createStateTableRow(stateFields, states[s])); |
176 }; | 196 }; |
177 | 197 |
178 /** | 198 /** |
179 * This callback function is triggered when the data is received. | 199 * This callback function is triggered when the network log is received. |
180 * | 200 * |
181 * @param {dictionary} data A dictionary that contains network state | 201 * @param {dictionary} data A JSON structure of event log entries. |
182 * information. | |
183 */ | 202 */ |
184 var onNetworkInfoReceived = function(data) { | 203 var getNetworkLogCallback = function(data) { |
185 createEventLog(JSON.parse(data.networkEventLog)); | 204 createEventLog(JSON.parse(data)); |
186 createStateTable( | |
187 'network-state-table', NETWORK_STATE_FIELDS, data.networkStates); | |
188 createStateTable( | |
189 'favorite-state-table', FAVORITE_STATE_FIELDS, data.favoriteStates); | |
190 }; | 205 }; |
191 | 206 |
192 /** | 207 /** |
208 * This callback function is triggered when visible networks are received. | |
209 * | |
210 * @param {dictionary} data A list of network state information for each | |
211 * visible network. | |
212 */ | |
213 var onVisibleNetworksReceived = function(data) { | |
214 createStateTable('network-state-table', NETWORK_STATE_FIELDS, data); | |
215 }; | |
216 | |
217 /** | |
218 * This callback function is triggered when favorite networks are received. | |
219 * | |
220 * @param {dictionary} data A list of network state information for each | |
221 * favorite network. | |
222 */ | |
223 var onFavoriteNetworksReceived = function(data) { | |
224 createStateTable('favorite-state-table', FAVORITE_STATE_FIELDS, data); | |
225 }; | |
226 | |
227 /** | |
193 * Toggle the button state and add or remove a row displaying the complete | 228 * Toggle the button state and add or remove a row displaying the complete |
194 * state information for a row. | 229 * state information for a row. |
195 * | 230 * |
196 * @param {DOMElement} btn The button that was clicked. | 231 * @param {DOMElement} btn The button that was clicked. |
197 * @param {dictionary} state Property values for the network or favorite. | 232 * @param {dictionary} state Property values for the network or favorite. |
198 */ | 233 */ |
199 var toggleExpandRow = function(btn, state) { | 234 var toggleExpandRow = function(btn, state) { |
200 var cell = btn.parentNode; | 235 var cell = btn.parentNode; |
201 var row = cell.parentNode; | 236 var row = cell.parentNode; |
202 if (btn.classList.contains('state-table-expand-button-expanded')) { | 237 if (btn.classList.contains('state-table-expand-button-expanded')) { |
(...skipping 21 matching lines...) Expand all Loading... | |
224 expandedRow.appendChild(emptyCell); | 259 expandedRow.appendChild(emptyCell); |
225 var detailCell = document.createElement('td'); | 260 var detailCell = document.createElement('td'); |
226 detailCell.className = 'state-table-expanded-cell'; | 261 detailCell.className = 'state-table-expanded-cell'; |
227 detailCell.colSpan = baseRow.childNodes.length - 1; | 262 detailCell.colSpan = baseRow.childNodes.length - 1; |
228 detailCell.innerHTML = JSON.stringify(state, null, '\t'); | 263 detailCell.innerHTML = JSON.stringify(state, null, '\t'); |
229 expandedRow.appendChild(detailCell); | 264 expandedRow.appendChild(detailCell); |
230 return expandedRow; | 265 return expandedRow; |
231 }; | 266 }; |
232 | 267 |
233 /** | 268 /** |
234 * Sends a refresh request. | 269 * Sends a refresh request. |
michaelpg
2014/04/29 19:51:00
Update comment (and maybe function name)
stevenjb
2014/05/01 01:45:14
Done.
| |
235 */ | 270 */ |
236 var sendRefresh = function() { | 271 var sendRefresh = function() { |
237 chrome.send('requestNetworkInfo'); | 272 chrome.send('NetworkUI.getNetworkLog'); |
273 networkConfig.getVisibleNetworks(networkConfig.Type.All, | |
274 onVisibleNetworksReceived); | |
275 networkConfig.getFavoriteNetworks(networkConfig.Type.All, | |
276 onFavoriteNetworksReceived); | |
238 }; | 277 }; |
239 | 278 |
240 /** | 279 /** |
241 * Sets refresh rate if the interval is found in the url. | 280 * Sets refresh rate if the interval is found in the url. |
242 */ | 281 */ |
243 var setRefresh = function() { | 282 var setRefresh = function() { |
244 var interval = parseQueryParams(window.location)['refresh']; | 283 var interval = parseQueryParams(window.location)['refresh']; |
245 if (interval && interval != '') | 284 if (interval && interval != '') |
246 setInterval(sendRefresh, parseInt(interval) * 1000); | 285 setInterval(sendRefresh, parseInt(interval) * 1000); |
247 }; | 286 }; |
(...skipping 13 matching lines...) Expand all Loading... | |
261 $('log-debug').onclick = sendRefresh; | 300 $('log-debug').onclick = sendRefresh; |
262 $('log-fileinfo').checked = false; | 301 $('log-fileinfo').checked = false; |
263 $('log-fileinfo').onclick = sendRefresh; | 302 $('log-fileinfo').onclick = sendRefresh; |
264 $('log-timedetail').checked = false; | 303 $('log-timedetail').checked = false; |
265 $('log-timedetail').onclick = sendRefresh; | 304 $('log-timedetail').onclick = sendRefresh; |
266 setRefresh(); | 305 setRefresh(); |
267 sendRefresh(); | 306 sendRefresh(); |
268 }); | 307 }); |
269 | 308 |
270 return { | 309 return { |
271 onNetworkInfoReceived: onNetworkInfoReceived | 310 getNetworkLogCallback: getNetworkLogCallback |
272 }; | 311 }; |
273 }(); | 312 })(); |
OLD | NEW |