| 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..6a9b86fae1309d7b1805d144cd893ca26db007b3 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,18 @@ Polymer({
|
| nameserverTypeNames_: {
|
| type: Array,
|
| value: ['automatic', 'google', 'custom'],
|
| - readOnly: true
|
| + readOnly: true,
|
| },
|
| },
|
|
|
| - /** @const */ GoogleNameservers: ['8.8.4.4', '8.8.8.8'],
|
| + /** @const */
|
| + GOOGLE_NAMESERVERS: [
|
| + '8.8.4.4',
|
| + '8.8.8.8',
|
| + ],
|
| +
|
| + /** @const */
|
| + MAX_NAMESERVERS: 4,
|
|
|
| /**
|
| * Saved nameservers when switching to 'automatic'.
|
| @@ -65,9 +71,7 @@ Polymer({
|
| */
|
| savedNameservers_: [],
|
|
|
| - /**
|
| - * Polymer networkProperties changed method.
|
| - */
|
| + /** @private */
|
| networkPropertiesChanged_: function(newValue, oldValue) {
|
| if (!this.networkProperties)
|
| return;
|
| @@ -87,30 +91,30 @@ Polymer({
|
| CrOnc.getActiveValue(this.networkProperties.NameServersConfigType);
|
| var type;
|
| if (configType == CrOnc.IPConfigType.STATIC) {
|
| - if (nameservers.join(',') == this.GoogleNameservers.join(','))
|
| + if (nameservers.join(',') == this.GOOGLE_NAMESERVERS.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 < this.MAX_NAMESERVERS; ++i)
|
| + nameservers[i] = '';
|
| + }
|
| + this.nameservers = nameservers;
|
| },
|
|
|
| /**
|
| @@ -140,19 +144,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 +182,32 @@ Polymer({
|
| sendNameServers_: function() {
|
| var type = this.nameserversType;
|
|
|
| - var nameservers;
|
| if (type == 'custom') {
|
| - nameservers = [];
|
| - for (let i = 0; i < 4; ++i) {
|
| + let nameservers = [];
|
| + for (let i = 0; i < this.MAX_NAMESERVERS; ++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.GOOGLE_NAMESERVERS;
|
| 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,
|
| });
|
| }
|
| },
|
| });
|
| -})();
|
|
|