Commit 9cda7e32 authored by Pavol Marko's avatar Pavol Marko Committed by Commit Bot

network_nameservers: Introduce enum for nameservers type

Instead of using string constants, introduce an enum for the selected
nameservers type.
This is less error prone and easier to read.

Bug: 1108922
Change-Id: I05cc167f42467af8a6b78cb688b8239e8a896c67
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2537678
Commit-Queue: Pavol Marko <pmarko@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828017}
parent 9f32c704
...@@ -67,18 +67,20 @@ ...@@ -67,18 +67,20 @@
on-selected-changed="onTypeChange_" on-selected-changed="onTypeChange_"
aria-label="[[i18n('networkNameservers')]]"> aria-label="[[i18n('networkNameservers')]]">
<!-- Automatic nameservers --> <!-- Automatic nameservers -->
<cr-radio-button name="automatic" disabled="[[!canChangeConfigType_]]"> <cr-radio-button name="[[nameserversTypeEnum_.AUTOMATIC]]"
disabled="[[!canChangeConfigType_]]">
[[i18n('networkNameserversAutomatic')]] [[i18n('networkNameserversAutomatic')]]
</cr-radio-button> </cr-radio-button>
<template is="dom-if" if="[[showNameservers_(nameserversType_, <template is="dom-if" if="[[showNameservers_(nameserversType_,
'automatic', nameservers_)]]"> nameserversTypeEnum_.AUTOMATIC, nameservers_)]]">
<div class="nameservers" changeable$="[[canChangeConfigType_]]"> <div class="nameservers" changeable$="[[canChangeConfigType_]]">
[[getNameserversString_(nameservers_)]] [[getNameserversString_(nameservers_)]]
</div> </div>
</template> </template>
<!-- Google nameservers --> <!-- Google nameservers -->
<cr-radio-button name="google" disabled="[[!canChangeConfigType_]]"> <cr-radio-button name="[[nameserversTypeEnum_.GOOGLE]]"
disabled="[[!canChangeConfigType_]]">
[[i18n('networkNameserversGoogle')]] [[i18n('networkNameserversGoogle')]]
<template is="dom-if" <template is="dom-if"
if="[[i18nExists('networkGoogleNameserversLearnMoreUrl')]]"> if="[[i18nExists('networkGoogleNameserversLearnMoreUrl')]]">
...@@ -89,18 +91,19 @@ ...@@ -89,18 +91,19 @@
</template> </template>
</cr-radio-button> </cr-radio-button>
<template is="dom-if" if="[[showNameservers_(nameserversType_, <template is="dom-if" if="[[showNameservers_(nameserversType_,
'google', nameservers_)]]"> nameserversTypeEnum_.GOOGLE, nameservers_)]]">
<div class="nameservers" changeable> <div class="nameservers" changeable>
[[getNameserversString_(nameservers_)]] [[getNameserversString_(nameservers_)]]
</div> </div>
</template> </template>
<!-- Custom nameservers --> <!-- Custom nameservers -->
<cr-radio-button name="custom" disabled="[[!canChangeConfigType_]]"> <cr-radio-button name="[[nameserversTypeEnum_.CUSTOM]]"
disabled="[[!canChangeConfigType_]]">
[[i18n('networkNameserversCustom')]] [[i18n('networkNameserversCustom')]]
</cr-radio-button> </cr-radio-button>
<template is="dom-if" if="[[showNameservers_(nameserversType_, <template is="dom-if" if="[[showNameservers_(nameserversType_,
'custom')]]"> nameserversTypeEnum_.CUSTOM)]]">
<div class="property-box single-column two-line"> <div class="property-box single-column two-line">
<template is="dom-repeat" items="[[nameservers_]]"> <template is="dom-repeat" items="[[nameservers_]]">
<cr-input id="nameserver[[index]]" value="[[item]]" <cr-input id="nameserver[[index]]" value="[[item]]"
......
...@@ -5,6 +5,17 @@ ...@@ -5,6 +5,17 @@
/** /**
* @fileoverview Polymer element for displaying network nameserver options. * @fileoverview Polymer element for displaying network nameserver options.
*/ */
/**
* UI configuration options for nameservers.
* @enum {string}
*/
const NameserversType = {
AUTOMATIC: 'automatic',
CUSTOM: 'custom',
GOOGLE: 'google'
};
Polymer({ Polymer({
is: 'network-nameservers', is: 'network-nameservers',
...@@ -30,11 +41,21 @@ Polymer({ ...@@ -30,11 +41,21 @@ Polymer({
/** /**
* The selected nameserver type. * The selected nameserver type.
* @private * @private {!NameserversType}
*/ */
nameserversType_: { nameserversType_: {
type: String, type: String,
value: 'automatic', value: NameserversType.AUTOMATIC,
},
/**
* Enum values for |nameserversType_|.
* @private {NameserversType}
*/
nameserversTypeEnum_: {
readOnly: true,
type: Object,
value: NameserversType,
}, },
/** @private */ /** @private */
...@@ -66,7 +87,7 @@ Polymer({ ...@@ -66,7 +87,7 @@ Polymer({
MAX_NAMESERVERS: 4, MAX_NAMESERVERS: 4,
/** /**
* Saved nameservers when switching to 'automatic'. * Saved nameservers when switching to NameserversType.AUTOMATIC.
* @private {!Array<string>} * @private {!Array<string>}
*/ */
savedNameservers_: [], savedNameservers_: [],
...@@ -132,30 +153,31 @@ Polymer({ ...@@ -132,30 +153,31 @@ Polymer({
// Update the 'nameserversType' property. // Update the 'nameserversType' property.
const configType = const configType =
OncMojo.getActiveValue(this.managedProperties.nameServersConfigType); OncMojo.getActiveValue(this.managedProperties.nameServersConfigType);
/** @type {NameserversType} */
let type; let type;
if (configType === 'Static') { if (configType === 'Static') {
if (this.isGoogleNameservers_(nameservers)) { if (this.isGoogleNameservers_(nameservers)) {
type = 'google'; type = NameserversType.GOOGLE;
nameservers = this.GOOGLE_NAMESERVERS; // Use consistent order. nameservers = this.GOOGLE_NAMESERVERS; // Use consistent order.
} else { } else {
type = 'custom'; type = NameserversType.CUSTOM;
} }
} else { } else {
type = 'automatic'; type = NameserversType.AUTOMATIC;
nameservers = this.clearEmptyNameServers_(nameservers); nameservers = this.clearEmptyNameServers_(nameservers);
} }
this.setNameservers_(type, nameservers, false /* send */); this.setNameservers_(type, nameservers, false /* send */);
}, },
/** /**
* @param {string} nameserversType * @param {!NameserversType} nameserversType
* @param {!Array<string>} nameservers * @param {!Array<string>} nameservers
* @param {boolean} sendNameservers If true, send the nameservers once they * @param {boolean} sendNameservers If true, send the nameservers once they
* have been set in the UI. * have been set in the UI.
* @private * @private
*/ */
setNameservers_(nameserversType, nameservers, sendNameservers) { setNameservers_(nameserversType, nameservers, sendNameservers) {
if (nameserversType === 'custom') { if (nameserversType === NameserversType.CUSTOM) {
// Add empty entries for unset custom nameservers. // Add empty entries for unset custom nameservers.
for (let i = nameservers.length; i < this.MAX_NAMESERVERS; ++i) { for (let i = nameservers.length; i < this.MAX_NAMESERVERS; ++i) {
nameservers[i] = this.EMPTY_NAMESERVER; nameservers[i] = this.EMPTY_NAMESERVER;
...@@ -205,7 +227,7 @@ Polymer({ ...@@ -205,7 +227,7 @@ Polymer({
if (!managedProperties) { if (!managedProperties) {
return false; return false;
} }
if (nameserversType !== 'custom') { if (nameserversType !== NameserversType.CUSTOM) {
return false; return false;
} }
if (this.isNetworkPolicyEnforced(managedProperties.nameServersConfigType)) { if (this.isNetworkPolicyEnforced(managedProperties.nameServersConfigType)) {
...@@ -221,8 +243,8 @@ Polymer({ ...@@ -221,8 +243,8 @@ Polymer({
}, },
/** /**
* @param {string} nameserversType * @param {NameserversType} nameserversType
* @param {string} type * @param {NameserversType} type
* @param {!Array<string>} nameservers * @param {!Array<string>} nameservers
* @return {boolean} * @return {boolean}
* @private * @private
...@@ -231,7 +253,7 @@ Polymer({ ...@@ -231,7 +253,7 @@ Polymer({
if (nameserversType !== type) { if (nameserversType !== type) {
return false; return false;
} }
return type === 'custom' || nameservers.length > 0; return type === NameserversType.CUSTOM || nameservers.length > 0;
}, },
/** /**
...@@ -251,7 +273,7 @@ Polymer({ ...@@ -251,7 +273,7 @@ Polymer({
onTypeChange_() { onTypeChange_() {
const type = this.$$('#nameserverType').selected; const type = this.$$('#nameserverType').selected;
this.nameserversType_ = type; this.nameserversType_ = type;
if (type === 'custom') { if (type === NameserversType.CUSTOM) {
// Restore the saved nameservers. // Restore the saved nameservers.
this.setNameservers_(type, this.savedNameservers_, true /* send */); this.setNameservers_(type, this.savedNameservers_, true /* send */);
return; return;
...@@ -264,9 +286,10 @@ Polymer({ ...@@ -264,9 +286,10 @@ Polymer({
* @private * @private
*/ */
onValueChange_() { onValueChange_() {
if (this.nameserversType_ !== 'custom') { if (this.nameserversType_ !== NameserversType.CUSTOM) {
// If a user inputs Google nameservers in the custom nameservers fields, // If a user inputs Google nameservers in the custom nameservers fields,
// |nameserversType| will change to 'google' so don't send the values. // |nameserversType| will change to NameserversType.GOOGLE so don't send
// the values.
return; return;
} }
this.sendNameServers_(); this.sendNameServers_();
...@@ -279,7 +302,7 @@ Polymer({ ...@@ -279,7 +302,7 @@ Polymer({
sendNameServers_() { sendNameServers_() {
const type = this.nameserversType_; const type = this.nameserversType_;
if (type === 'custom') { if (type === NameserversType.CUSTOM) {
const nameservers = new Array(this.MAX_NAMESERVERS); const nameservers = new Array(this.MAX_NAMESERVERS);
for (let i = 0; i < this.MAX_NAMESERVERS; ++i) { for (let i = 0; i < this.MAX_NAMESERVERS; ++i) {
const nameserverInput = this.$$('#nameserver' + i); const nameserverInput = this.$$('#nameserver' + i);
...@@ -291,13 +314,13 @@ Polymer({ ...@@ -291,13 +314,13 @@ Polymer({
field: 'nameServers', field: 'nameServers',
value: nameservers, value: nameservers,
}); });
} else if (type === 'google') { } else if (type === NameserversType.GOOGLE) {
this.nameservers_ = this.GOOGLE_NAMESERVERS; this.nameservers_ = this.GOOGLE_NAMESERVERS;
this.fire('nameservers-change', { this.fire('nameservers-change', {
field: 'nameServers', field: 'nameServers',
value: this.GOOGLE_NAMESERVERS, value: this.GOOGLE_NAMESERVERS,
}); });
} else { // type === automatic } else { // type === NameserversType.AUTOMATIC
// If not connected, properties will clear. Otherwise they may or may not // If not connected, properties will clear. Otherwise they may or may not
// change so leave them as-is. // change so leave them as-is.
if (!OncMojo.connectionStateIsConnected( if (!OncMojo.connectionStateIsConnected(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment