| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 /** | 5 /** |
| 6 * @fileoverview | 6 * @fileoverview |
| 7 * 'settings-internet-detail' is the settings subpage containing details | 7 * 'settings-internet-detail' is the settings subpage containing details |
| 8 * for a network. | 8 * for a network. |
| 9 */ | 9 */ |
| 10 (function() { | 10 (function() { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 type: String, | 25 type: String, |
| 26 value: '', | 26 value: '', |
| 27 }, | 27 }, |
| 28 | 28 |
| 29 /** | 29 /** |
| 30 * The current properties for the network matching |guid|. | 30 * The current properties for the network matching |guid|. |
| 31 * @type {!CrOnc.NetworkProperties|undefined} | 31 * @type {!CrOnc.NetworkProperties|undefined} |
| 32 */ | 32 */ |
| 33 networkProperties: { | 33 networkProperties: { |
| 34 type: Object, | 34 type: Object, |
| 35 observer: 'networkPropertiesChanged_' | 35 observer: 'networkPropertiesChanged_', |
| 36 }, | 36 }, |
| 37 | 37 |
| 38 /** | 38 /** |
| 39 * The network AutoConnect state. | 39 * The network AutoConnect state. |
| 40 */ | 40 */ |
| 41 autoConnect: { | 41 autoConnect: { |
| 42 type: Boolean, | 42 type: Boolean, |
| 43 value: false, | 43 value: false, |
| 44 observer: 'autoConnectChanged_' | 44 observer: 'autoConnectChanged_', |
| 45 }, | 45 }, |
| 46 | 46 |
| 47 /** | 47 /** |
| 48 * The network preferred state. | 48 * The network preferred state. |
| 49 */ | 49 */ |
| 50 preferNetwork: { | 50 preferNetwork: { |
| 51 type: Boolean, | 51 type: Boolean, |
| 52 value: false, | 52 value: false, |
| 53 observer: 'preferNetworkChanged_' | 53 observer: 'preferNetworkChanged_', |
| 54 }, | 54 }, |
| 55 | 55 |
| 56 /** | 56 /** |
| 57 * The network IP Address. | 57 * The network IP Address. |
| 58 */ | 58 */ |
| 59 IPAddress: { | 59 IPAddress: { |
| 60 type: String, | 60 type: String, |
| 61 value: '' | 61 value: '', |
| 62 }, | 62 }, |
| 63 | 63 |
| 64 /** | 64 /** |
| 65 * Highest priority connected network or null. | 65 * Highest priority connected network or null. |
| 66 * @type {?CrOnc.NetworkStateProperties} | 66 * @type {?CrOnc.NetworkStateProperties} |
| 67 */ | 67 */ |
| 68 defaultNetwork: { | 68 defaultNetwork: { |
| 69 type: Object, | 69 type: Object, |
| 70 value: null | 70 value: null, |
| 71 }, | 71 }, |
| 72 | 72 |
| 73 advancedExpanded: {type: Boolean}, |
| 74 |
| 73 /** | 75 /** |
| 74 * Object providing network type values for data binding. | 76 * Object providing network type values for data binding. |
| 75 * @const | 77 * @const |
| 76 */ | 78 */ |
| 77 NetworkType: { | 79 NetworkType: { |
| 78 type: Object, | 80 type: Object, |
| 79 value: { | 81 value: { |
| 80 CELLULAR: CrOnc.Type.CELLULAR, | 82 CELLULAR: CrOnc.Type.CELLULAR, |
| 81 ETHERNET: CrOnc.Type.ETHERNET, | 83 ETHERNET: CrOnc.Type.ETHERNET, |
| 82 VPN: CrOnc.Type.VPN, | 84 VPN: CrOnc.Type.VPN, |
| 83 WIFI: CrOnc.Type.WI_FI, | 85 WIFI: CrOnc.Type.WI_FI, |
| 84 WIMAX: CrOnc.Type.WI_MAX, | 86 WIMAX: CrOnc.Type.WI_MAX, |
| 85 }, | 87 }, |
| 86 readOnly: true | 88 readOnly: true |
| 87 }, | 89 }, |
| 88 | 90 |
| 89 /** | 91 /** |
| 90 * Interface for networkingPrivate calls, passed from internet_page. | 92 * Interface for networkingPrivate calls, passed from internet_page. |
| 91 * @type {NetworkingPrivate} | 93 * @type {NetworkingPrivate} |
| 92 */ | 94 */ |
| 93 networkingPrivate: { | 95 networkingPrivate: {type: Object}, |
| 94 type: Object, | |
| 95 }, | |
| 96 }, | 96 }, |
| 97 | 97 |
| 98 observers: [ | 98 observers: [ |
| 99 'guidChanged_(guid, networkingPrivate)', | 99 'guidChanged_(guid, networkingPrivate)', |
| 100 ], | 100 ], |
| 101 | 101 |
| 102 /** | 102 /** |
| 103 * Listener function for chrome.networkingPrivate.onNetworksChanged event. | 103 * Listener function for chrome.networkingPrivate.onNetworksChanged event. |
| 104 * @type {function(!Array<string>)} | 104 * @type {function(!Array<string>)} |
| 105 * @private | 105 * @private |
| 106 */ | 106 */ |
| 107 networksChangedListener_: function() {}, | 107 networksChangedListener_: function() {}, |
| 108 | 108 |
| 109 /** @override */ | 109 /** @override */ |
| 110 attached: function() { | 110 attached: function() { |
| 111 this.networksChangedListener_ = this.onNetworksChangedEvent_.bind(this); | 111 this.networksChangedListener_ = this.onNetworksChangedEvent_.bind(this); |
| 112 this.networkingPrivate.onNetworksChanged.addListener( | 112 this.networkingPrivate.onNetworksChanged.addListener( |
| 113 this.networksChangedListener_); | 113 this.networksChangedListener_); |
| 114 }, | 114 }, |
| 115 | 115 |
| 116 /** @override */ | 116 /** @override */ |
| 117 detached: function() { | 117 detached: function() { |
| 118 this.networkingPrivate.onNetworksChanged.removeListener( | 118 this.networkingPrivate.onNetworksChanged.removeListener( |
| 119 this.networksChangedListener_); | 119 this.networksChangedListener_); |
| 120 }, | 120 }, |
| 121 | 121 |
| 122 /** | 122 /** @private */ |
| 123 * Polymer guid changed method. | |
| 124 */ | |
| 125 guidChanged_: function() { | 123 guidChanged_: function() { |
| 126 if (!this.guid) | 124 if (!this.guid) |
| 127 return; | 125 return; |
| 128 this.getNetworkDetails_(); | 126 this.getNetworkDetails_(); |
| 129 }, | 127 }, |
| 130 | 128 |
| 131 /** | 129 /** @private */ |
| 132 * Polymer networkProperties changed method. | |
| 133 */ | |
| 134 networkPropertiesChanged_: function() { | 130 networkPropertiesChanged_: function() { |
| 135 if (!this.networkProperties) | 131 if (!this.networkProperties) |
| 136 return; | 132 return; |
| 137 | 133 |
| 138 // Update autoConnect if it has changed. Default value is false. | 134 // Update autoConnect if it has changed. Default value is false. |
| 139 var autoConnect = CrOnc.getAutoConnect(this.networkProperties); | 135 var autoConnect = CrOnc.getAutoConnect(this.networkProperties); |
| 140 if (autoConnect != this.autoConnect) | 136 if (autoConnect != this.autoConnect) |
| 141 this.autoConnect = autoConnect; | 137 this.autoConnect = autoConnect; |
| 142 | 138 |
| 143 // Update preferNetwork if it has changed. Default value is false. | 139 // Update preferNetwork if it has changed. Default value is false. |
| 144 var priority = /** @type {number} */(CrOnc.getActiveValue( | 140 var priority = /** @type {number} */ ( |
| 145 this.networkProperties.Priority) || 0); | 141 CrOnc.getActiveValue(this.networkProperties.Priority) || 0); |
| 146 var preferNetwork = priority > 0; | 142 var preferNetwork = priority > 0; |
| 147 if (preferNetwork != this.preferNetwork) | 143 if (preferNetwork != this.preferNetwork) |
| 148 this.preferNetwork = preferNetwork; | 144 this.preferNetwork = preferNetwork; |
| 149 | 145 |
| 150 // Set the IPAddress property to the IPV4 Address. | 146 // Set the IPAddress property to the IPV4 Address. |
| 151 var ipv4 = | 147 var ipv4 = |
| 152 CrOnc.getIPConfigForType(this.networkProperties, CrOnc.IPType.IPV4); | 148 CrOnc.getIPConfigForType(this.networkProperties, CrOnc.IPType.IPV4); |
| 153 this.IPAddress = (ipv4 && ipv4.IPAddress) || ''; | 149 this.IPAddress = (ipv4 && ipv4.IPAddress) || ''; |
| 154 }, | 150 }, |
| 155 | 151 |
| 156 /** | 152 /** @private */ |
| 157 * Polymer autoConnect changed method. | |
| 158 */ | |
| 159 autoConnectChanged_: function() { | 153 autoConnectChanged_: function() { |
| 160 if (!this.networkProperties || !this.guid) | 154 if (!this.networkProperties || !this.guid) |
| 161 return; | 155 return; |
| 162 var onc = this.getEmptyNetworkProperties_(); | 156 var onc = this.getEmptyNetworkProperties_(); |
| 163 CrOnc.setTypeProperty(onc, 'AutoConnect', this.autoConnect); | 157 CrOnc.setTypeProperty(onc, 'AutoConnect', this.autoConnect); |
| 164 this.setNetworkProperties_(onc); | 158 this.setNetworkProperties_(onc); |
| 165 }, | 159 }, |
| 166 | 160 |
| 167 /** | 161 /** @private */ |
| 168 * Polymer preferNetwork changed method. | |
| 169 */ | |
| 170 preferNetworkChanged_: function() { | 162 preferNetworkChanged_: function() { |
| 171 if (!this.networkProperties || !this.guid) | 163 if (!this.networkProperties || !this.guid) |
| 172 return; | 164 return; |
| 173 var onc = this.getEmptyNetworkProperties_(); | 165 var onc = this.getEmptyNetworkProperties_(); |
| 174 onc.Priority = this.preferNetwork ? 1 : 0; | 166 onc.Priority = this.preferNetwork ? 1 : 0; |
| 175 this.setNetworkProperties_(onc); | 167 this.setNetworkProperties_(onc); |
| 176 }, | 168 }, |
| 177 | 169 |
| 178 /** | 170 /** |
| 179 * networkingPrivate.onNetworksChanged event callback. | 171 * networkingPrivate.onNetworksChanged event callback. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 getEmptyNetworkProperties_: function() { | 228 getEmptyNetworkProperties_: function() { |
| 237 return {Type: this.networkProperties.Type}; | 229 return {Type: this.networkProperties.Type}; |
| 238 }, | 230 }, |
| 239 | 231 |
| 240 /** | 232 /** |
| 241 * @param {!CrOnc.NetworkProperties} properties | 233 * @param {!CrOnc.NetworkProperties} properties |
| 242 * @return {string} The text to display for the network name. | 234 * @return {string} The text to display for the network name. |
| 243 * @private | 235 * @private |
| 244 */ | 236 */ |
| 245 getStateName_: function(properties) { | 237 getStateName_: function(properties) { |
| 246 return /** @type {string} */(CrOnc.getActiveValue( | 238 return /** @type {string} */ ( |
| 247 this.networkProperties.Name) || ''); | 239 CrOnc.getActiveValue(this.networkProperties.Name) || ''); |
| 248 }, | 240 }, |
| 249 | 241 |
| 250 /** | 242 /** |
| 251 * @param {!CrOnc.NetworkProperties} properties | 243 * @param {!CrOnc.NetworkProperties} properties |
| 252 * @return {string} The text to display for the network connection state. | 244 * @return {string} The text to display for the network connection state. |
| 253 * @private | 245 * @private |
| 254 */ | 246 */ |
| 255 getStateText_: function(properties) { | 247 getStateText_: function(properties) { |
| 256 // TODO(stevenjb): Localize. | 248 // TODO(stevenjb): Localize. |
| 257 return (properties && properties.ConnectionState) || ''; | 249 return (properties && properties.ConnectionState) || ''; |
| 258 }, | 250 }, |
| 259 | 251 |
| 260 /** | 252 /** |
| 261 * @param {!CrOnc.NetworkProperties} properties | 253 * @param {!CrOnc.NetworkProperties} properties |
| 262 * @return {boolean} True if the network is connected. | 254 * @return {boolean} True if the network is connected. |
| 263 * @private | 255 * @private |
| 264 */ | 256 */ |
| 265 isConnectedState_: function(properties) { | 257 isConnectedState_: function(properties) { |
| 266 return properties.ConnectionState == CrOnc.ConnectionState.CONNECTED; | 258 return properties.ConnectionState == CrOnc.ConnectionState.CONNECTED; |
| 267 }, | 259 }, |
| 268 | 260 |
| 269 /** | 261 /** |
| 270 * @param {!CrOnc.NetworkProperties} properties | 262 * @param {!CrOnc.NetworkProperties} properties |
| 271 * @return {boolean} Whether or not to show the 'Connect' button. | 263 * @return {boolean} |
| 272 * @private | 264 * @private |
| 273 */ | 265 */ |
| 274 showConnect_: function(properties) { | 266 showConnect_: function(properties) { |
| 275 return properties.Type != CrOnc.Type.ETHERNET && | 267 return properties.Type != CrOnc.Type.ETHERNET && |
| 276 properties.ConnectionState == CrOnc.ConnectionState.NOT_CONNECTED; | 268 properties.ConnectionState == CrOnc.ConnectionState.NOT_CONNECTED; |
| 277 }, | 269 }, |
| 278 | 270 |
| 279 /** | 271 /** |
| 280 * @param {!CrOnc.NetworkProperties} properties | 272 * @param {!CrOnc.NetworkProperties} properties |
| 281 * @return {boolean} Whether or not to show the 'Activate' button. | 273 * @return {boolean} |
| 282 * @private | 274 * @private |
| 283 */ | 275 */ |
| 284 showActivate_: function(properties) { | 276 showActivate_: function(properties) { |
| 285 if (!properties || properties.Type != CrOnc.Type.CELLULAR) | 277 if (!properties || properties.Type != CrOnc.Type.CELLULAR) |
| 286 return false; | 278 return false; |
| 287 var activation = properties.Cellular.ActivationState; | 279 var activation = properties.Cellular.ActivationState; |
| 288 return activation == CrOnc.ActivationState.NOT_ACTIVATED || | 280 return activation == CrOnc.ActivationState.NOT_ACTIVATED || |
| 289 activation == CrOnc.ActivationState.PARTIALLY_ACTIVATED; | 281 activation == CrOnc.ActivationState.PARTIALLY_ACTIVATED; |
| 290 }, | 282 }, |
| 291 | 283 |
| 292 /** | 284 /** |
| 293 * @param {!CrOnc.NetworkProperties} properties | 285 * @param {!CrOnc.NetworkProperties} properties |
| 294 * @return {boolean} Whether or not to show the 'View Account' button. | 286 * @return {boolean} |
| 295 * @private | 287 * @private |
| 296 */ | 288 */ |
| 297 showViewAccount_: function(properties) { | 289 showViewAccount_: function(properties) { |
| 298 // Show either the 'Activate' or the 'View Account' button. | 290 // Show either the 'Activate' or the 'View Account' button. |
| 299 if (this.showActivate_(properties)) | 291 if (this.showActivate_(properties)) |
| 300 return false; | 292 return false; |
| 301 | 293 |
| 302 if (!properties || properties.Type != CrOnc.Type.CELLULAR || | 294 if (!properties || properties.Type != CrOnc.Type.CELLULAR || |
| 303 !properties.Cellular) { | 295 !properties.Cellular) { |
| 304 return false; | 296 return false; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 return false; | 329 return false; |
| 338 if (properties.Type == CrOnc.Type.CELLULAR && CrOnc.isSimLocked(properties)) | 330 if (properties.Type == CrOnc.Type.CELLULAR && CrOnc.isSimLocked(properties)) |
| 339 return false; | 331 return false; |
| 340 if (properties.Type == CrOnc.Type.VPN && !defaultNetwork) | 332 if (properties.Type == CrOnc.Type.VPN && !defaultNetwork) |
| 341 return false; | 333 return false; |
| 342 return true; | 334 return true; |
| 343 }, | 335 }, |
| 344 | 336 |
| 345 /** | 337 /** |
| 346 * @param {!CrOnc.NetworkProperties} properties | 338 * @param {!CrOnc.NetworkProperties} properties |
| 347 * @return {boolean} Whether or not to show the 'Disconnect' button. | 339 * @return {boolean} |
| 348 * @private | 340 * @private |
| 349 */ | 341 */ |
| 350 showDisconnect_: function(properties) { | 342 showDisconnect_: function(properties) { |
| 351 return properties.Type != CrOnc.Type.ETHERNET && | 343 return properties.Type != CrOnc.Type.ETHERNET && |
| 352 properties.ConnectionState != CrOnc.ConnectionState.NOT_CONNECTED; | 344 properties.ConnectionState != CrOnc.ConnectionState.NOT_CONNECTED; |
| 353 }, | 345 }, |
| 354 | 346 |
| 355 /** | 347 /** @private */ |
| 356 * Callback when the Connect button is tapped. | |
| 357 * @private | |
| 358 */ | |
| 359 onConnectTap_: function() { | 348 onConnectTap_: function() { |
| 360 this.networkingPrivate.startConnect(this.guid); | 349 this.networkingPrivate.startConnect(this.guid); |
| 361 }, | 350 }, |
| 362 | 351 |
| 363 /** | 352 /** @private */ |
| 364 * Callback when the Disconnect button is tapped. | |
| 365 * @private | |
| 366 */ | |
| 367 onDisconnectTap_: function() { | 353 onDisconnectTap_: function() { |
| 368 this.networkingPrivate.startDisconnect(this.guid); | 354 this.networkingPrivate.startDisconnect(this.guid); |
| 369 }, | 355 }, |
| 370 | 356 |
| 371 /** | 357 /** @private */ |
| 372 * Callback when the Activate button is tapped. | |
| 373 * @private | |
| 374 */ | |
| 375 onActivateTap_: function() { | 358 onActivateTap_: function() { |
| 376 this.networkingPrivate.startActivate(this.guid); | 359 this.networkingPrivate.startActivate(this.guid); |
| 377 }, | 360 }, |
| 378 | 361 |
| 379 /** | 362 /** @private */ |
| 380 * Callback when the View Account button is tapped. | |
| 381 * @private | |
| 382 */ | |
| 383 onViewAccountTap_: function() { | 363 onViewAccountTap_: function() { |
| 384 // startActivate() will show the account page for activated networks. | 364 // startActivate() will show the account page for activated networks. |
| 385 this.networkingPrivate.startActivate(this.guid); | 365 this.networkingPrivate.startActivate(this.guid); |
| 386 }, | 366 }, |
| 387 | 367 |
| 388 /** | 368 /** |
| 369 * @param {Event} event |
| 370 * @private |
| 371 */ |
| 372 toggleAdvancedExpanded_: function(event) { |
| 373 if (event.target.id == 'expandButton') |
| 374 return; // Already handled. |
| 375 this.advancedExpanded = !this.advancedExpanded; |
| 376 }, |
| 377 |
| 378 /** |
| 389 * Event triggered for elements associated with network properties. | 379 * Event triggered for elements associated with network properties. |
| 390 * @param {!{detail: !{field: string, value: (string|!Object)}}} event | 380 * @param {!{detail: !{field: string, value: (string|!Object)}}} event |
| 391 * @private | 381 * @private |
| 392 */ | 382 */ |
| 393 onNetworkPropertyChange_: function(event) { | 383 onNetworkPropertyChange_: function(event) { |
| 394 if (!this.networkProperties) | 384 if (!this.networkProperties) |
| 395 return; | 385 return; |
| 396 var field = event.detail.field; | 386 var field = event.detail.field; |
| 397 var value = event.detail.value; | 387 var value = event.detail.value; |
| 398 var onc = this.getEmptyNetworkProperties_(); | 388 var onc = this.getEmptyNetworkProperties_(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 417 */ | 407 */ |
| 418 onIPConfigChange_: function(event) { | 408 onIPConfigChange_: function(event) { |
| 419 if (!this.networkProperties) | 409 if (!this.networkProperties) |
| 420 return; | 410 return; |
| 421 var field = event.detail.field; | 411 var field = event.detail.field; |
| 422 var value = event.detail.value; | 412 var value = event.detail.value; |
| 423 // Get an empty ONC dictionary and set just the IP Config properties that | 413 // Get an empty ONC dictionary and set just the IP Config properties that |
| 424 // need to change. | 414 // need to change. |
| 425 var onc = this.getEmptyNetworkProperties_(); | 415 var onc = this.getEmptyNetworkProperties_(); |
| 426 var ipConfigType = | 416 var ipConfigType = |
| 427 /** @type {chrome.networkingPrivate.IPConfigType|undefined} */( | 417 /** @type {chrome.networkingPrivate.IPConfigType|undefined} */ ( |
| 428 CrOnc.getActiveValue(this.networkProperties.IPAddressConfigType)); | 418 CrOnc.getActiveValue(this.networkProperties.IPAddressConfigType)); |
| 429 if (field == 'IPAddressConfigType') { | 419 if (field == 'IPAddressConfigType') { |
| 430 var newIpConfigType = | 420 var newIpConfigType = |
| 431 /** @type {chrome.networkingPrivate.IPConfigType} */(value); | 421 /** @type {chrome.networkingPrivate.IPConfigType} */ (value); |
| 432 if (newIpConfigType == ipConfigType) | 422 if (newIpConfigType == ipConfigType) |
| 433 return; | 423 return; |
| 434 onc.IPAddressConfigType = newIpConfigType; | 424 onc.IPAddressConfigType = newIpConfigType; |
| 435 } else if (field == 'NameServersConfigType') { | 425 } else if (field == 'NameServersConfigType') { |
| 436 var nsConfigType = | 426 var nsConfigType = |
| 437 /** @type {chrome.networkingPrivate.IPConfigType|undefined} */( | 427 /** @type {chrome.networkingPrivate.IPConfigType|undefined} */ ( |
| 438 CrOnc.getActiveValue( | 428 CrOnc.getActiveValue( |
| 439 this.networkProperties.NameServersConfigType)); | 429 this.networkProperties.NameServersConfigType)); |
| 440 var newNsConfigType = | 430 var newNsConfigType = |
| 441 /** @type {chrome.networkingPrivate.IPConfigType} */(value); | 431 /** @type {chrome.networkingPrivate.IPConfigType} */ (value); |
| 442 if (newNsConfigType == nsConfigType) | 432 if (newNsConfigType == nsConfigType) |
| 443 return; | 433 return; |
| 444 onc.NameServersConfigType = newNsConfigType; | 434 onc.NameServersConfigType = newNsConfigType; |
| 445 } else if (field == 'StaticIPConfig') { | 435 } else if (field == 'StaticIPConfig') { |
| 446 if (ipConfigType == CrOnc.IPConfigType.STATIC) { | 436 if (ipConfigType == CrOnc.IPConfigType.STATIC) { |
| 447 var staticIpConfig = this.networkProperties.StaticIPConfig; | 437 let staticIpConfig = this.networkProperties.StaticIPConfig; |
| 438 let ipConfigValue = /** @type {!Object} */ (value); |
| 448 if (staticIpConfig && | 439 if (staticIpConfig && |
| 449 this.allPropertiesMatch_(staticIpConfig, | 440 this.allPropertiesMatch_(staticIpConfig, ipConfigValue)) { |
| 450 /** @type {!Object} */(value))) { | |
| 451 return; | 441 return; |
| 452 } | 442 } |
| 453 } | 443 } |
| 454 onc.IPAddressConfigType = CrOnc.IPConfigType.STATIC; | 444 onc.IPAddressConfigType = CrOnc.IPConfigType.STATIC; |
| 455 if (!onc.StaticIPConfig) { | 445 if (!onc.StaticIPConfig) { |
| 456 onc.StaticIPConfig = | 446 onc.StaticIPConfig = |
| 457 /** @type {!chrome.networkingPrivate.IPConfigProperties} */({}); | 447 /** @type {!chrome.networkingPrivate.IPConfigProperties} */ ({}); |
| 458 } | 448 } |
| 459 for (let key in value) | 449 for (let key in value) |
| 460 onc.StaticIPConfig[key] = value[key]; | 450 onc.StaticIPConfig[key] = value[key]; |
| 461 } else if (field == 'NameServers') { | 451 } else if (field == 'NameServers') { |
| 462 // If a StaticIPConfig property is specified and its NameServers value | 452 // If a StaticIPConfig property is specified and its NameServers value |
| 463 // matches the new value, no need to set anything. | 453 // matches the new value, no need to set anything. |
| 464 var nameServers = /** @type {!Array<string>} */(value); | 454 let nameServers = /** @type {!Array<string>} */ (value); |
| 465 if (onc.NameServersConfigType == CrOnc.IPConfigType.STATIC && | 455 if (onc.NameServersConfigType == CrOnc.IPConfigType.STATIC && |
| 466 onc.StaticIPConfig && | 456 onc.StaticIPConfig && onc.StaticIPConfig.NameServers == nameServers) { |
| 467 onc.StaticIPConfig.NameServers == nameServers) { | |
| 468 return; | 457 return; |
| 469 } | 458 } |
| 470 onc.NameServersConfigType = CrOnc.IPConfigType.STATIC; | 459 onc.NameServersConfigType = CrOnc.IPConfigType.STATIC; |
| 471 if (!onc.StaticIPConfig) { | 460 if (!onc.StaticIPConfig) { |
| 472 onc.StaticIPConfig = | 461 onc.StaticIPConfig = |
| 473 /** @type {!chrome.networkingPrivate.IPConfigProperties} */({}); | 462 /** @type {!chrome.networkingPrivate.IPConfigProperties} */ ({}); |
| 474 } | 463 } |
| 475 onc.StaticIPConfig.NameServers = nameServers; | 464 onc.StaticIPConfig.NameServers = nameServers; |
| 476 } else { | 465 } else { |
| 477 console.error('Unexpected change field: ' + field); | 466 console.error('Unexpected change field: ' + field); |
| 478 return; | 467 return; |
| 479 } | 468 } |
| 480 // setValidStaticIPConfig will fill in any other properties from | 469 // setValidStaticIPConfig will fill in any other properties from |
| 481 // networkProperties. This is necessary since we update IP Address and | 470 // networkProperties. This is necessary since we update IP Address and |
| 482 // NameServers independently. | 471 // NameServers independently. |
| 483 CrOnc.setValidStaticIPConfig(onc, this.networkProperties); | 472 CrOnc.setValidStaticIPConfig(onc, this.networkProperties); |
| 484 this.setNetworkProperties_(onc); | 473 this.setNetworkProperties_(onc); |
| 485 }, | 474 }, |
| 486 | 475 |
| 487 /** | 476 /** |
| 488 * Event triggered when the Proxy configuration element changes. | 477 * Event triggered when the Proxy configuration element changes. |
| 489 * @param {!{detail: {field: string, value: !CrOnc.ProxySettings}}} event | 478 * @param {!{detail: {field: string, value: !CrOnc.ProxySettings}}} event |
| 490 * The network-proxy change event. | 479 * The network-proxy change event. |
| 491 * @private | 480 * @private |
| 492 */ | 481 */ |
| 493 onProxyChange_: function(event) { | 482 onProxyChange_: function(event) { |
| 494 if (!this.networkProperties) | 483 if (!this.networkProperties) |
| 495 return; | 484 return; |
| 496 var field = event.detail.field; | 485 var field = event.detail.field; |
| 497 var value = event.detail.value; | 486 var value = event.detail.value; |
| 498 if (field != 'ProxySettings') | 487 if (field != 'ProxySettings') |
| 499 return; | 488 return; |
| 500 var onc = this.getEmptyNetworkProperties_(); | 489 var onc = this.getEmptyNetworkProperties_(); |
| 501 CrOnc.setProperty(onc, 'ProxySettings', /** @type {!Object} */(value)); | 490 CrOnc.setProperty(onc, 'ProxySettings', /** @type {!Object} */ (value)); |
| 502 this.setNetworkProperties_(onc); | 491 this.setNetworkProperties_(onc); |
| 503 }, | 492 }, |
| 504 | 493 |
| 505 /** | 494 /** |
| 506 * @param {!CrOnc.NetworkProperties} properties | 495 * @param {!CrOnc.NetworkProperties} properties |
| 507 * @return {boolean} True if the shared message should be shown. | 496 * @return {boolean} True if the shared message should be shown. |
| 508 * @private | 497 * @private |
| 509 */ | 498 */ |
| 510 showShared_: function(properties) { | 499 showShared_: function(properties) { |
| 511 return properties.Source == 'Device' || properties.Source == 'DevicePolicy'; | 500 return properties.Source == 'Device' || properties.Source == 'DevicePolicy'; |
| 512 }, | 501 }, |
| 513 | 502 |
| 514 /** | 503 /** |
| 515 * @param {!CrOnc.NetworkProperties} properties | 504 * @param {!CrOnc.NetworkProperties} properties |
| 516 * @return {boolean} True if the AutoConnect checkbox should be shown. | 505 * @return {boolean} True if the AutoConnect checkbox should be shown. |
| 517 * @private | 506 * @private |
| 518 */ | 507 */ |
| 519 showAutoConnect_: function(properties) { | 508 showAutoConnect_: function(properties) { |
| 520 return properties.Type != CrOnc.Type.ETHERNET && | 509 return properties.Type != CrOnc.Type.ETHERNET && |
| 521 properties.Source != CrOnc.Source.NONE; | 510 properties.Source != CrOnc.Source.NONE; |
| 522 }, | 511 }, |
| 523 | 512 |
| 524 /** | 513 /** |
| 525 * @param {!CrOnc.NetworkProperties} properties | 514 * @param {!CrOnc.NetworkProperties} properties |
| 526 * @return {!CrOnc.ManagedProperty|undefined} Managed AutoConnect property. | 515 * @return {!CrOnc.ManagedProperty|undefined} Managed AutoConnect property. |
| 527 * @private | 516 * @private |
| 528 */ | 517 */ |
| 529 getManagedAutoConnect_: function(properties) { | 518 getManagedAutoConnect_: function(properties) { |
| 530 return CrOnc.getManagedAutoConnect(properties); | 519 return CrOnc.getManagedAutoConnect(properties); |
| 531 }, | 520 }, |
| 532 | 521 |
| 533 /** | 522 /** |
| 534 * @param {!CrOnc.NetworkProperties} properties | 523 * @param {!CrOnc.NetworkProperties} properties |
| 535 * @return {boolean} True if the prefer network checkbox should be shown. | 524 * @return {boolean} True if the prefer network checkbox should be shown. |
| 536 * @private | 525 * @private |
| 537 */ | 526 */ |
| 538 showPreferNetwork_: function(properties) { | 527 showPreferNetwork_: function(properties) { |
| 539 // TODO(stevenjb): Resolve whether or not we want to allow "preferred" for | 528 // TODO(stevenjb): Resolve whether or not we want to allow "preferred" for |
| 540 // properties.Type == CrOnc.Type.ETHERNET. | 529 // properties.Type == CrOnc.Type.ETHERNET. |
| 541 return properties.Source != CrOnc.Source.NONE; | 530 return properties.Source != CrOnc.Source.NONE; |
| 542 }, | 531 }, |
| 543 | 532 |
| 544 /** | 533 /** |
| 545 * @param {boolean} preferNetwork | 534 * @param {!Array<string>} fields |
| 546 * @return {string} The icon to use for the preferred button. | 535 * @return {boolean} |
| 547 * @private | 536 * @private |
| 548 */ | 537 */ |
| 549 getPreferredIcon_: function(preferNetwork) { | 538 hasVisibleFields_: function(fields) { |
| 550 return preferNetwork ? 'cr:star' : 'cr:star-border'; | 539 for (let key of fields) { |
| 540 let value = this.get(key, this.networkProperties); |
| 541 if (value !== undefined && value !== '') |
| 542 return true; |
| 543 } |
| 544 return false; |
| 551 }, | 545 }, |
| 552 | 546 |
| 553 /** | 547 /** |
| 548 * @param {!CrOnc.NetworkProperties} properties |
| 549 * @return {boolean} |
| 550 * @private |
| 551 */ |
| 552 hasInfoFields_: function(properties) { |
| 553 return this.hasVisibleFields_(this.getInfoFields_(properties)); |
| 554 }, |
| 555 |
| 556 /** |
| 554 * @param {!CrOnc.NetworkProperties} properties | 557 * @param {!CrOnc.NetworkProperties} properties |
| 555 * @return {!Array<string>} The fields to display in the info section. | 558 * @return {!Array<string>} The fields to display in the info section. |
| 556 * @private | 559 * @private |
| 557 */ | 560 */ |
| 558 getInfoFields_: function(properties) { | 561 getInfoFields_: function(properties) { |
| 559 /** @type {!Array<string>} */ var fields = []; | 562 /** @type {!Array<string>} */ var fields = []; |
| 560 if (!properties) | 563 if (!properties) |
| 561 return fields; | 564 return fields; |
| 562 | 565 |
| 563 if (properties.Type == CrOnc.Type.CELLULAR) { | 566 if (properties.Type == CrOnc.Type.CELLULAR) { |
| 564 fields.push('Cellular.ActivationState', | 567 fields.push( |
| 565 'Cellular.RoamingState', | 568 'Cellular.ActivationState', 'Cellular.RoamingState', |
| 566 'RestrictedConnectivity', | 569 'RestrictedConnectivity', 'Cellular.ServingOperator.Name'); |
| 567 'Cellular.ServingOperator.Name'); | |
| 568 } | 570 } |
| 569 if (properties.Type == CrOnc.Type.VPN) { | 571 if (properties.Type == CrOnc.Type.VPN) { |
| 570 fields.push('VPN.Host', 'VPN.Type'); | 572 fields.push('VPN.Host', 'VPN.Type'); |
| 571 if (properties.VPN.Type == 'OpenVPN') | 573 if (properties.VPN.Type == 'OpenVPN') |
| 572 fields.push('VPN.OpenVPN.Username'); | 574 fields.push('VPN.OpenVPN.Username'); |
| 573 else if (properties.VPN.Type == 'L2TP-IPsec') | 575 else if (properties.VPN.Type == 'L2TP-IPsec') |
| 574 fields.push('VPN.L2TP.Username'); | 576 fields.push('VPN.L2TP.Username'); |
| 575 else if (properties.VPN.Type == 'ThirdPartyVPN') | 577 else if (properties.VPN.Type == 'ThirdPartyVPN') |
| 576 fields.push('VPN.ThirdPartyVPN.ProviderName'); | 578 fields.push('VPN.ThirdPartyVPN.ProviderName'); |
| 577 } | 579 } |
| 578 if (properties.Type == CrOnc.Type.WI_FI) | 580 if (properties.Type == CrOnc.Type.WI_FI) |
| 579 fields.push('RestrictedConnectivity'); | 581 fields.push('RestrictedConnectivity'); |
| 580 if (properties.Type == CrOnc.Type.WI_MAX) { | 582 if (properties.Type == CrOnc.Type.WI_MAX) { |
| 581 fields.push('RestrictedConnectivity', 'WiMAX.EAP.Identity'); | 583 fields.push('RestrictedConnectivity', 'WiMAX.EAP.Identity'); |
| 582 } | 584 } |
| 583 return fields; | 585 return fields; |
| 584 }, | 586 }, |
| 585 | 587 |
| 586 /** | 588 /** |
| 587 * @param {!CrOnc.NetworkProperties} properties | 589 * @param {!CrOnc.NetworkProperties} properties |
| 588 * @return {!Array<string>} The fields to display in the Advanced section. | 590 * @return {!Array<string>} The fields to display in the Advanced section. |
| 589 * @private | 591 * @private |
| 590 */ | 592 */ |
| 591 getAdvancedFields_: function(properties) { | 593 getAdvancedFields_: function(properties) { |
| 592 /** @type {!Array<string>} */ var fields = []; | 594 /** @type {!Array<string>} */ var fields = []; |
| 593 if (!properties) | 595 if (!properties) |
| 594 return fields; | 596 return fields; |
| 595 fields.push('MacAddress'); | 597 fields.push('MacAddress'); |
| 596 if (properties.Type == CrOnc.Type.CELLULAR) { | 598 if (properties.Type == CrOnc.Type.CELLULAR) { |
| 597 fields.push('Cellular.Carrier', | 599 fields.push( |
| 598 'Cellular.Family', | 600 'Cellular.Carrier', 'Cellular.Family', 'Cellular.NetworkTechnology', |
| 599 'Cellular.NetworkTechnology', | 601 'Cellular.ServingOperator.Code'); |
| 600 'Cellular.ServingOperator.Code'); | |
| 601 } | 602 } |
| 602 if (properties.Type == CrOnc.Type.WI_FI) { | 603 if (properties.Type == CrOnc.Type.WI_FI) { |
| 603 fields.push('WiFi.SSID', | 604 fields.push( |
| 604 'WiFi.BSSID', | 605 'WiFi.SSID', 'WiFi.BSSID', 'WiFi.Security', 'WiFi.SignalStrength', |
| 605 'WiFi.Security', | 606 'WiFi.Frequency'); |
| 606 'WiFi.SignalStrength', | |
| 607 'WiFi.Frequency'); | |
| 608 } | 607 } |
| 609 if (properties.Type == CrOnc.Type.WI_MAX) | 608 if (properties.Type == CrOnc.Type.WI_MAX) |
| 610 fields.push('WiFi.SignalStrength'); | 609 fields.push('WiFi.SignalStrength'); |
| 611 return fields; | 610 return fields; |
| 612 }, | 611 }, |
| 613 | 612 |
| 614 /** | 613 /** |
| 615 * @param {!CrOnc.NetworkProperties} properties | 614 * @param {!CrOnc.NetworkProperties} properties |
| 616 * @return {!Array<string>} The fields to display in the device section. | 615 * @return {!Array<string>} The fields to display in the device section. |
| 617 * @private | 616 * @private |
| 618 */ | 617 */ |
| 619 getDeviceFields_: function(properties) { | 618 getDeviceFields_: function(properties) { |
| 620 /** @type {!Array<string>} */ var fields = []; | 619 /** @type {!Array<string>} */ var fields = []; |
| 621 if (!properties) | 620 if (!properties) |
| 622 return fields; | 621 return fields; |
| 623 if (properties.Type == CrOnc.Type.CELLULAR) { | 622 if (properties.Type == CrOnc.Type.CELLULAR) { |
| 624 fields.push('Cellular.HomeProvider.Name', | 623 fields.push( |
| 625 'Cellular.HomeProvider.Country', | 624 'Cellular.HomeProvider.Name', 'Cellular.HomeProvider.Country', |
| 626 'Cellular.HomeProvider.Code', | 625 'Cellular.HomeProvider.Code', 'Cellular.Manufacturer', |
| 627 'Cellular.Manufacturer', | 626 'Cellular.ModelID', 'Cellular.FirmwareRevision', |
| 628 'Cellular.ModelID', | 627 'Cellular.HardwareRevision', 'Cellular.ESN', 'Cellular.ICCID', |
| 629 'Cellular.FirmwareRevision', | 628 'Cellular.IMEI', 'Cellular.IMSI', 'Cellular.MDN', 'Cellular.MEID', |
| 630 'Cellular.HardwareRevision', | 629 'Cellular.MIN', 'Cellular.PRLVersion'); |
| 631 'Cellular.ESN', | |
| 632 'Cellular.ICCID', | |
| 633 'Cellular.IMEI', | |
| 634 'Cellular.IMSI', | |
| 635 'Cellular.MDN', | |
| 636 'Cellular.MEID', | |
| 637 'Cellular.MIN', | |
| 638 'Cellular.PRLVersion'); | |
| 639 } | 630 } |
| 640 return fields; | 631 return fields; |
| 641 }, | 632 }, |
| 642 | 633 |
| 643 /** | 634 /** |
| 644 * @param {!CrOnc.NetworkProperties} properties | 635 * @param {!CrOnc.NetworkProperties} properties |
| 645 * @return {boolean} True if there are any advanced fields to display. | 636 * @return {boolean} |
| 646 * @private | 637 * @private |
| 647 */ | 638 */ |
| 648 hasAdvancedOrDeviceFields_: function(properties) { | 639 hasAdvancedOrDeviceFields_: function(properties) { |
| 649 return this.getAdvancedFields_(properties).length > 0 || | 640 return this.hasAdvancedFields_(properties) || |
| 650 this.hasDeviceFields_(properties); | 641 this.hasDeviceFields_(properties); |
| 651 }, | 642 }, |
| 652 | 643 |
| 653 /** | 644 /** |
| 654 * @param {!CrOnc.NetworkProperties} properties | 645 * @param {!CrOnc.NetworkProperties} properties |
| 655 * @return {boolean} True if there are any device fields to display. | 646 * @return {boolean} |
| 647 * @private |
| 648 */ |
| 649 hasAdvancedFields_: function(properties) { |
| 650 return this.hasVisibleFields_(this.getAdvancedFields_(properties)); |
| 651 }, |
| 652 |
| 653 /** |
| 654 * @param {!CrOnc.NetworkProperties} properties |
| 655 * @return {boolean} |
| 656 * @private | 656 * @private |
| 657 */ | 657 */ |
| 658 hasDeviceFields_: function(properties) { | 658 hasDeviceFields_: function(properties) { |
| 659 var fields = this.getDeviceFields_(properties); | 659 return this.hasVisibleFields_(this.getDeviceFields_(properties)); |
| 660 return fields.length > 0; | |
| 661 }, | 660 }, |
| 662 | 661 |
| 663 /** | 662 /** |
| 664 * @param {!CrOnc.NetworkProperties} properties | 663 * @param {!CrOnc.NetworkProperties} properties |
| 665 * @return {boolean} True if the network section should be shown. | 664 * @return {boolean} True if the network section should be shown. |
| 666 * @private | 665 * @private |
| 667 */ | 666 */ |
| 668 hasNetworkSection_: function(properties) { | 667 hasNetworkSection_: function(properties) { |
| 669 return properties.Type != CrOnc.Type.VPN; | 668 return properties.Type != CrOnc.Type.VPN; |
| 670 }, | 669 }, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 701 */ | 700 */ |
| 702 allPropertiesMatch_: function(curValue, newValue) { | 701 allPropertiesMatch_: function(curValue, newValue) { |
| 703 for (let key in newValue) { | 702 for (let key in newValue) { |
| 704 if (newValue[key] != curValue[key]) | 703 if (newValue[key] != curValue[key]) |
| 705 return false; | 704 return false; |
| 706 } | 705 } |
| 707 return true; | 706 return true; |
| 708 } | 707 } |
| 709 }); | 708 }); |
| 710 })(); | 709 })(); |
| OLD | NEW |