Chromium Code Reviews| Index: chrome/browser/resources/settings/internet_page/network_nameservers.js |
| diff --git a/chrome/browser/resources/settings/internet_page/network_nameservers.js b/chrome/browser/resources/settings/internet_page/network_nameservers.js |
| index 983c45b25bdb47ff4f5bf198d262c28e6e0c50a1..575a4036acc4b3e7471db0970f5f9cbd5b200861 100644 |
| --- a/chrome/browser/resources/settings/internet_page/network_nameservers.js |
| +++ b/chrome/browser/resources/settings/internet_page/network_nameservers.js |
| @@ -5,9 +5,6 @@ |
| /** |
| * @fileoverview Polymer element for displaying network nameserver options. |
| */ |
| -(function() { |
| -'use strict'; |
| - |
| Polymer({ |
| is: 'network-nameservers', |
| @@ -19,7 +16,7 @@ Polymer({ |
| */ |
| networkProperties: { |
| type: Object, |
| - observer: 'networkPropertiesChanged_' |
| + observer: 'networkPropertiesChanged_', |
| }, |
| /** |
| @@ -27,7 +24,7 @@ Polymer({ |
| */ |
| editable: { |
| type: Boolean, |
| - value: false |
| + value: false, |
| }, |
| /** |
| @@ -36,7 +33,9 @@ Polymer({ |
| */ |
| nameservers: { |
| type: Array, |
| - value: function() { return []; } |
| + value: function() { |
| + return []; |
| + }, |
| }, |
| /** |
| @@ -44,7 +43,7 @@ Polymer({ |
| */ |
| nameserversType: { |
| type: String, |
| - value: 'automatic' |
| + value: 'automatic', |
| }, |
| /** |
| @@ -53,11 +52,15 @@ Polymer({ |
| nameserverTypeNames_: { |
| type: Array, |
| value: ['automatic', 'google', 'custom'], |
| - readOnly: true |
| + readOnly: true, |
| }, |
| }, |
| - /** @const */ GoogleNameservers: ['8.8.4.4', '8.8.8.8'], |
| + /** @const */ |
| + GoogleNameservers: [ |
| + '8.8.4.4', |
| + '8.8.8.8', |
| + ], |
| /** |
| * Saved nameservers when switching to 'automatic'. |
| @@ -65,9 +68,7 @@ Polymer({ |
| */ |
| savedNameservers_: [], |
| - /** |
| - * Polymer networkProperties changed method. |
| - */ |
| + /** @private */ |
| networkPropertiesChanged_: function(newValue, oldValue) { |
| if (!this.networkProperties) |
| return; |
| @@ -87,30 +88,30 @@ Polymer({ |
| CrOnc.getActiveValue(this.networkProperties.NameServersConfigType); |
| var type; |
| if (configType == CrOnc.IPConfigType.STATIC) { |
| - if (nameservers.join(',') == this.GoogleNameservers.join(',')) |
| + if (nameservers.join(',') == this.GoogleNameservers.join(',')) { |
| type = 'google'; |
| - else |
| + } else { |
| type = 'custom'; |
| + } |
| } else { |
| type = 'automatic'; |
| } |
| - this.nameserversType = type; |
| - this.$$('#type').selectedIndex = this.getSelectedIndex_(type); |
| - |
| - this.nameservers = nameservers; |
| + this.setNameservers_(type, nameservers); |
| }, |
| /** |
| - * @param {string} nameserversType The nameservers type. |
| - * @return {number} The selected index for |nameserversType|. |
| + * @param {string} nameserversType |
| + * @param {!Array<string>} nameservers |
| * @private |
| */ |
| - getSelectedIndex_: function(nameserversType) { |
| - var idx = this.nameserverTypeNames_.indexOf(nameserversType); |
| - if (idx != -1) |
| - return idx; |
| - console.error('Unexpected type: ' + nameserversType); |
| - return 0; |
| + setNameservers_: function(nameserversType, nameservers) { |
| + this.nameserversType = nameserversType; |
| + if (nameserversType == 'custom') { |
| + // Add empty entries for unset custom nameservers. |
| + for (let i = nameservers.length; i < 4; ++i) |
|
dschuyler
2016/07/29 19:27:01
nit: maybe a comment about why there are 4.
stevenjb
2016/07/29 22:23:29
Added const MAX_NAMESERVERS = 4.
|
| + nameservers[i] = ''; |
| + } |
| + this.nameservers = nameservers; |
| }, |
| /** |
| @@ -140,19 +141,20 @@ Polymer({ |
| /** |
| * Event triggered when the selected type changes. Updates nameservers and |
| * sends the change value if necessary. |
| - * @param {Event} event The select node change event. |
| + * @param {!{detail: !{selected: string}}} e |
| * @private |
| */ |
| - onTypeChange_: function(event) { |
| + onTypeChange_: function(e) { |
| if (this.nameserversType == 'custom') |
| this.savedNameservers_ = this.nameservers; |
| - var type = this.nameserverTypeNames_[event.target.selectedIndex]; |
| + var type = e.detail.selected; |
| this.nameserversType = type; |
| if (type == 'custom') { |
| + // Restore the saved nameservers. |
| + this.setNameservers_(type, this.savedNameservers_); |
| + // Only send custom nameservers if they are not empty. |
| if (this.savedNameservers_.length == 0) |
| - return; // Don't change nameservers until onValueChange_(). |
| - // Restore the saved nameservers and send them. |
| - this.nameservers = this.savedNameservers_; |
| + return; |
| } |
| this.sendNameServers_(); |
| }, |
| @@ -177,32 +179,32 @@ Polymer({ |
| sendNameServers_: function() { |
| var type = this.nameserversType; |
| - var nameservers; |
| if (type == 'custom') { |
| - nameservers = []; |
| + let nameservers = []; |
| for (let i = 0; i < 4; ++i) { |
| let id = 'nameserver' + i; |
| - let nameserver = this.$$('#' + id).value; |
| - if (nameserver) |
| - nameservers.push(nameserver); |
| + let nameserverInput = this.$$('#' + id); |
| + let nameserver = ''; |
| + if (nameserverInput) |
| + nameserver = this.$$('#' + id).value; |
| + nameservers.push(nameserver); |
| } |
| this.fire('nameservers-change', { |
| field: 'NameServers', |
| - value: nameservers |
| + value: nameservers, |
| }); |
| } else if (type == 'google') { |
| - nameservers = this.GoogleNameservers; |
| + let nameservers = this.GoogleNameservers; |
| this.fire('nameservers-change', { |
| field: 'NameServers', |
| - value: nameservers |
| + value: nameservers, |
| }); |
| } else { |
| // automatic |
| this.fire('nameservers-change', { |
| field: 'NameServersConfigType', |
| - value: CrOnc.IPConfigType.DHCP |
| + value: CrOnc.IPConfigType.DHCP, |
| }); |
| } |
| }, |
| }); |
| -})(); |