Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: chrome/browser/resources/settings/internet_page/network_nameservers.js

Issue 2179223004: MD Settings: Internet: Clean up network and proxy sections. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@issue_609156_internet_cleanup_3
Patch Set: Feedback Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 Polymer element for displaying network nameserver options. 6 * @fileoverview Polymer element for displaying network nameserver options.
7 */ 7 */
8 (function() {
9 'use strict';
10
11 Polymer({ 8 Polymer({
12 is: 'network-nameservers', 9 is: 'network-nameservers',
13 10
14 properties: { 11 properties: {
15 /** 12 /**
16 * The network properties dictionary containing the nameserver properties to 13 * The network properties dictionary containing the nameserver properties to
17 * display and modify. 14 * display and modify.
18 * @type {!CrOnc.NetworkProperties|undefined} 15 * @type {!CrOnc.NetworkProperties|undefined}
19 */ 16 */
20 networkProperties: { 17 networkProperties: {
21 type: Object, 18 type: Object,
22 observer: 'networkPropertiesChanged_' 19 observer: 'networkPropertiesChanged_',
23 }, 20 },
24 21
25 /** 22 /**
26 * Whether or not the nameservers can be edited. 23 * Whether or not the nameservers can be edited.
27 */ 24 */
28 editable: { 25 editable: {
29 type: Boolean, 26 type: Boolean,
30 value: false 27 value: false,
31 }, 28 },
32 29
33 /** 30 /**
34 * Array of nameserver addresses stored as strings. 31 * Array of nameserver addresses stored as strings.
35 * @type {!Array<string>} 32 * @type {!Array<string>}
36 */ 33 */
37 nameservers: { 34 nameservers: {
38 type: Array, 35 type: Array,
39 value: function() { return []; } 36 value: function() {
37 return [];
38 },
40 }, 39 },
41 40
42 /** 41 /**
43 * The selected nameserver type. 42 * The selected nameserver type.
44 */ 43 */
45 nameserversType: { 44 nameserversType: {
46 type: String, 45 type: String,
47 value: 'automatic' 46 value: 'automatic',
48 }, 47 },
49 48
50 /** 49 /**
51 * Array of nameserver types. 50 * Array of nameserver types.
52 */ 51 */
53 nameserverTypeNames_: { 52 nameserverTypeNames_: {
54 type: Array, 53 type: Array,
55 value: ['automatic', 'google', 'custom'], 54 value: ['automatic', 'google', 'custom'],
56 readOnly: true 55 readOnly: true,
57 }, 56 },
58 }, 57 },
59 58
60 /** @const */ GoogleNameservers: ['8.8.4.4', '8.8.8.8'], 59 /** @const */
60 GoogleNameservers: [
61 '8.8.4.4',
62 '8.8.8.8',
63 ],
61 64
62 /** 65 /**
63 * Saved nameservers when switching to 'automatic'. 66 * Saved nameservers when switching to 'automatic'.
64 * @type {!Array<string>} 67 * @type {!Array<string>}
65 */ 68 */
66 savedNameservers_: [], 69 savedNameservers_: [],
67 70
68 /** 71 /** @private */
69 * Polymer networkProperties changed method.
70 */
71 networkPropertiesChanged_: function(newValue, oldValue) { 72 networkPropertiesChanged_: function(newValue, oldValue) {
72 if (!this.networkProperties) 73 if (!this.networkProperties)
73 return; 74 return;
74 75
75 if (!oldValue || newValue.GUID != oldValue.GUID) 76 if (!oldValue || newValue.GUID != oldValue.GUID)
76 this.savedNameservers_ = []; 77 this.savedNameservers_ = [];
77 78
78 // Update the 'nameservers' property. 79 // Update the 'nameservers' property.
79 var nameservers = []; 80 var nameservers = [];
80 var ipv4 = 81 var ipv4 =
81 CrOnc.getIPConfigForType(this.networkProperties, CrOnc.IPType.IPV4); 82 CrOnc.getIPConfigForType(this.networkProperties, CrOnc.IPType.IPV4);
82 if (ipv4 && ipv4.NameServers) 83 if (ipv4 && ipv4.NameServers)
83 nameservers = ipv4.NameServers; 84 nameservers = ipv4.NameServers;
84 85
85 // Update the 'nameserversType' property. 86 // Update the 'nameserversType' property.
86 var configType = 87 var configType =
87 CrOnc.getActiveValue(this.networkProperties.NameServersConfigType); 88 CrOnc.getActiveValue(this.networkProperties.NameServersConfigType);
88 var type; 89 var type;
89 if (configType == CrOnc.IPConfigType.STATIC) { 90 if (configType == CrOnc.IPConfigType.STATIC) {
90 if (nameservers.join(',') == this.GoogleNameservers.join(',')) 91 if (nameservers.join(',') == this.GoogleNameservers.join(',')) {
91 type = 'google'; 92 type = 'google';
92 else 93 } else {
93 type = 'custom'; 94 type = 'custom';
95 }
94 } else { 96 } else {
95 type = 'automatic'; 97 type = 'automatic';
96 } 98 }
97 this.nameserversType = type; 99 this.setNameservers_(type, nameservers);
98 this.$$('#type').selectedIndex = this.getSelectedIndex_(type); 100 },
99 101
102 /**
103 * @param {string} nameserversType
104 * @param {!Array<string>} nameservers
105 * @private
106 */
107 setNameservers_: function(nameserversType, nameservers) {
108 this.nameserversType = nameserversType;
109 if (nameserversType == 'custom') {
110 // Add empty entries for unset custom nameservers.
111 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.
112 nameservers[i] = '';
113 }
100 this.nameservers = nameservers; 114 this.nameservers = nameservers;
101 }, 115 },
102 116
103 /** 117 /**
104 * @param {string} nameserversType The nameservers type.
105 * @return {number} The selected index for |nameserversType|.
106 * @private
107 */
108 getSelectedIndex_: function(nameserversType) {
109 var idx = this.nameserverTypeNames_.indexOf(nameserversType);
110 if (idx != -1)
111 return idx;
112 console.error('Unexpected type: ' + nameserversType);
113 return 0;
114 },
115
116 /**
117 * @param {string} nameserversType The nameservers type. 118 * @param {string} nameserversType The nameservers type.
118 * @return {string} The description for |nameserversType|. 119 * @return {string} The description for |nameserversType|.
119 * @private 120 * @private
120 */ 121 */
121 nameserverTypeDesc_: function(nameserversType) { 122 nameserverTypeDesc_: function(nameserversType) {
122 // TODO(stevenjb): Translate. 123 // TODO(stevenjb): Translate.
123 if (nameserversType == 'custom') 124 if (nameserversType == 'custom')
124 return 'Custom name servers'; 125 return 'Custom name servers';
125 if (nameserversType == 'google') 126 if (nameserversType == 'google')
126 return 'Google name servers'; 127 return 'Google name servers';
127 return 'Automatic name servers'; 128 return 'Automatic name servers';
128 }, 129 },
129 130
130 /** 131 /**
131 * @param {boolean} editable The editable state. 132 * @param {boolean} editable The editable state.
132 * @param {string} nameserversType The nameservers type. 133 * @param {string} nameserversType The nameservers type.
133 * @return {boolean} True if the nameservers are editable. 134 * @return {boolean} True if the nameservers are editable.
134 * @private 135 * @private
135 */ 136 */
136 canEdit_: function(editable, nameserversType) { 137 canEdit_: function(editable, nameserversType) {
137 return editable && nameserversType == 'custom'; 138 return editable && nameserversType == 'custom';
138 }, 139 },
139 140
140 /** 141 /**
141 * Event triggered when the selected type changes. Updates nameservers and 142 * Event triggered when the selected type changes. Updates nameservers and
142 * sends the change value if necessary. 143 * sends the change value if necessary.
143 * @param {Event} event The select node change event. 144 * @param {!{detail: !{selected: string}}} e
144 * @private 145 * @private
145 */ 146 */
146 onTypeChange_: function(event) { 147 onTypeChange_: function(e) {
147 if (this.nameserversType == 'custom') 148 if (this.nameserversType == 'custom')
148 this.savedNameservers_ = this.nameservers; 149 this.savedNameservers_ = this.nameservers;
149 var type = this.nameserverTypeNames_[event.target.selectedIndex]; 150 var type = e.detail.selected;
150 this.nameserversType = type; 151 this.nameserversType = type;
151 if (type == 'custom') { 152 if (type == 'custom') {
153 // Restore the saved nameservers.
154 this.setNameservers_(type, this.savedNameservers_);
155 // Only send custom nameservers if they are not empty.
152 if (this.savedNameservers_.length == 0) 156 if (this.savedNameservers_.length == 0)
153 return; // Don't change nameservers until onValueChange_(). 157 return;
154 // Restore the saved nameservers and send them.
155 this.nameservers = this.savedNameservers_;
156 } 158 }
157 this.sendNameServers_(); 159 this.sendNameServers_();
158 }, 160 },
159 161
160 /** 162 /**
161 * Event triggered when a nameserver value changes. 163 * Event triggered when a nameserver value changes.
162 * @private 164 * @private
163 */ 165 */
164 onValueChange_: function() { 166 onValueChange_: function() {
165 if (this.nameserversType != 'custom') { 167 if (this.nameserversType != 'custom') {
166 // If a user inputs Google nameservers in the custom nameservers fields, 168 // If a user inputs Google nameservers in the custom nameservers fields,
167 // |nameserversType| will change to 'google' so don't send the values. 169 // |nameserversType| will change to 'google' so don't send the values.
168 return; 170 return;
169 } 171 }
170 this.sendNameServers_(); 172 this.sendNameServers_();
171 }, 173 },
172 174
173 /** 175 /**
174 * Sends the current nameservers type (for automatic) or value. 176 * Sends the current nameservers type (for automatic) or value.
175 * @private 177 * @private
176 */ 178 */
177 sendNameServers_: function() { 179 sendNameServers_: function() {
178 var type = this.nameserversType; 180 var type = this.nameserversType;
179 181
180 var nameservers;
181 if (type == 'custom') { 182 if (type == 'custom') {
182 nameservers = []; 183 let nameservers = [];
183 for (let i = 0; i < 4; ++i) { 184 for (let i = 0; i < 4; ++i) {
184 let id = 'nameserver' + i; 185 let id = 'nameserver' + i;
185 let nameserver = this.$$('#' + id).value; 186 let nameserverInput = this.$$('#' + id);
186 if (nameserver) 187 let nameserver = '';
187 nameservers.push(nameserver); 188 if (nameserverInput)
189 nameserver = this.$$('#' + id).value;
190 nameservers.push(nameserver);
188 } 191 }
189 this.fire('nameservers-change', { 192 this.fire('nameservers-change', {
190 field: 'NameServers', 193 field: 'NameServers',
191 value: nameservers 194 value: nameservers,
192 }); 195 });
193 } else if (type == 'google') { 196 } else if (type == 'google') {
194 nameservers = this.GoogleNameservers; 197 let nameservers = this.GoogleNameservers;
195 this.fire('nameservers-change', { 198 this.fire('nameservers-change', {
196 field: 'NameServers', 199 field: 'NameServers',
197 value: nameservers 200 value: nameservers,
198 }); 201 });
199 } else { 202 } else {
200 // automatic 203 // automatic
201 this.fire('nameservers-change', { 204 this.fire('nameservers-change', {
202 field: 'NameServersConfigType', 205 field: 'NameServersConfigType',
203 value: CrOnc.IPConfigType.DHCP 206 value: CrOnc.IPConfigType.DHCP,
204 }); 207 });
205 } 208 }
206 }, 209 },
207 }); 210 });
208 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698