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

Side by Side Diff: chrome/browser/resources/settings/internet_page/network_apnlist.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: Add MAX_NAMESERVERS 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 and modifying a list of cellular 6 * @fileoverview Polymer element for displaying and modifying a list of cellular
7 * access points. 7 * access points.
8 */ 8 */
9 (function() {
10 'use strict';
11
12 Polymer({ 9 Polymer({
13 is: 'network-apnlist', 10 is: 'network-apnlist',
14 11
15 properties: { 12 properties: {
16 /** 13 /**
17 * The current set of properties for the network matching |guid|. 14 * The current set of properties for the network matching |guid|.
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 * The CrOnc.APNProperties.AccessPointName value of the selected APN. 23 * The CrOnc.APNProperties.AccessPointName value of the selected APN.
27 */ 24 */
28 selectedApn: { 25 selectedApn: {
29 type: String, 26 type: String,
30 value: '' 27 value: '',
31 }, 28 },
32 29
33 /** 30 /**
34 * Selectable list of APN dictionaries for the UI. Includes an entry 31 * Selectable list of APN dictionaries for the UI. Includes an entry
35 * corresponding to |otherApn| (see below). 32 * corresponding to |otherApn| (see below).
36 * @type {!Array<!CrOnc.APNProperties>} 33 * @type {!Array<!CrOnc.APNProperties>}
37 */ 34 */
38 apnSelectList: { 35 apnSelectList: {
39 type: Array, 36 type: Array,
40 value: function() { return []; } 37 value: function() {
38 return [];
39 }
41 }, 40 },
42 41
43 /** 42 /**
44 * The user settable properties for a new ('other') APN. The values for 43 * The user settable properties for a new ('other') APN. The values for
45 * AccessPointName, Username, and Password will be set to the currently 44 * AccessPointName, Username, and Password will be set to the currently
46 * active APN if it does not match an existing list entry. 45 * active APN if it does not match an existing list entry.
47 * @type {CrOnc.APNProperties|undefined} 46 * @type {CrOnc.APNProperties|undefined}
48 */ 47 */
49 otherApn: { 48 otherApn: {
50 type: Object, 49 type: Object,
(...skipping 20 matching lines...) Expand all
71 return { 70 return {
72 'AccessPointName': 'String', 71 'AccessPointName': 'String',
73 'Username': 'String', 72 'Username': 'String',
74 'Password': 'String' 73 'Password': 'String'
75 }; 74 };
76 }, 75 },
77 readOnly: true 76 readOnly: true
78 }, 77 },
79 }, 78 },
80 79
81 /** @const */ DefaultAccessPointName: 'none', 80 /** @const */
81 DefaultAccessPointName: 'none',
82 82
83 /** 83 /**
84 * Polymer networkProperties changed method. 84 * Polymer networkProperties changed method.
85 */ 85 */
86 networkPropertiesChanged_: function() { 86 networkPropertiesChanged_: function() {
87 if (!this.networkProperties || !this.networkProperties.Cellular) 87 if (!this.networkProperties || !this.networkProperties.Cellular)
88 return; 88 return;
89 89
90 /** @type {!CrOnc.APNProperties|undefined} */ var activeApn; 90 /** @type {!CrOnc.APNProperties|undefined} */ var activeApn;
91 var cellular = this.networkProperties.Cellular; 91 var cellular = this.networkProperties.Cellular;
92 /** @type {!chrome.networkingPrivate.ManagedAPNProperties|undefined} */ var 92 /** @type {!chrome.networkingPrivate.ManagedAPNProperties|undefined} */ var
93 apn = cellular.APN; 93 apn = cellular.APN;
94 if (apn && apn.AccessPointName) { 94 if (apn && apn.AccessPointName) {
95 activeApn = /** @type {!CrOnc.APNProperties|undefined} */( 95 activeApn = /** @type {!CrOnc.APNProperties|undefined} */ (
96 CrOnc.getSimpleActiveProperties(apn)); 96 CrOnc.getSimpleActiveProperties(apn));
97 } else if (cellular.LastGoodAPN && cellular.LastGoodAPN.AccessPointName) { 97 } else if (cellular.LastGoodAPN && cellular.LastGoodAPN.AccessPointName) {
98 activeApn = cellular.LastGoodAPN; 98 activeApn = cellular.LastGoodAPN;
99 } 99 }
100 this.setApnSelectList_(activeApn); 100 this.setApnSelectList_(activeApn);
101 }, 101 },
102 102
103 /** 103 /**
104 * Sets the list of selectable APNs for the UI. Appends an 'Other' entry 104 * Sets the list of selectable APNs for the UI. Appends an 'Other' entry
105 * (see comments for |otherApn| above). 105 * (see comments for |otherApn| above).
106 * @param {CrOnc.APNProperties|undefined} activeApn The currently active APN 106 * @param {CrOnc.APNProperties|undefined} activeApn The currently active APN
107 * properties. 107 * properties.
108 * @private 108 * @private
109 */ 109 */
110 setApnSelectList_: function(activeApn) { 110 setApnSelectList_: function(activeApn) {
111 // Copy the list of APNs from this.networkProperties. 111 // Copy the list of APNs from this.networkProperties.
112 var result = this.getApnList_().slice(); 112 var result = this.getApnList_().slice();
113 113
114 // Test whether |activeApn| is in the current APN list in networkProperties. 114 // Test whether |activeApn| is in the current APN list in networkProperties.
115 var activeApnInList = activeApn && result.some( 115 var activeApnInList = activeApn && result.some(function(a) {
116 function(a) { return a.AccessPointName == activeApn.AccessPointName; }); 116 return a.AccessPointName == activeApn.AccessPointName;
117 });
117 118
118 // If |activeApn| is specified and not in the list, use the active 119 // If |activeApn| is specified and not in the list, use the active
119 // properties for 'other'. Otherwise use any existing 'other' properties. 120 // properties for 'other'. Otherwise use any existing 'other' properties.
120 var otherApnProperties = 121 var otherApnProperties =
121 (activeApn && !activeApnInList) ? activeApn : this.otherApn; 122 (activeApn && !activeApnInList) ? activeApn : this.otherApn;
122 var otherApn = this.createApnObject_(otherApnProperties); 123 var otherApn = this.createApnObject_(otherApnProperties);
123 124
124 // Always use 'Other' for the name of custom APN entries (the name does 125 // Always use 'Other' for the name of custom APN entries (the name does
125 // not get saved). 126 // not get saved).
126 otherApn.Name = 'Other'; 127 otherApn.Name = 'Other';
127 128
128 // If no 'active' or 'other' AccessPointName was provided, use the default. 129 // If no 'active' or 'other' AccessPointName was provided, use the default.
129 otherApn.AccessPointName = 130 otherApn.AccessPointName =
130 otherApn.AccessPointName || this.DefaultAccessPointName; 131 otherApn.AccessPointName || this.DefaultAccessPointName;
131 132
132 // Save the 'other' properties. 133 // Save the 'other' properties.
133 this.otherApn = otherApn; 134 this.otherApn = otherApn;
134 135
135 // Append 'other' to the end of the list of APNs. 136 // Append 'other' to the end of the list of APNs.
136 result.push(otherApn); 137 result.push(otherApn);
137 138
138 this.set('apnSelectList', result); 139 this.apnSelectList = result;
139 this.set( 140 this.selectedApn =
140 'selectedApn', 141 (activeApn && activeApn.AccessPointName) || otherApn.AccessPointName;
141 (activeApn && activeApn.AccessPointName) || otherApn.AccessPointName); 142 // We need to flush the DOM here, otherwise the paper-dropdown-menu will
143 // not update to correctly display the selected AccessPointName.
144 Polymer.dom.flush();
142 }, 145 },
143 146
144 /** 147 /**
145 * @param {!CrOnc.APNProperties|undefined=} apnProperties 148 * @param {!CrOnc.APNProperties|undefined=} apnProperties
146 * @return {!CrOnc.APNProperties} A new APN object with properties from 149 * @return {!CrOnc.APNProperties} A new APN object with properties from
147 * |apnProperties| if provided. 150 * |apnProperties| if provided.
148 * @private 151 * @private
149 */ 152 */
150 createApnObject_: function(apnProperties) { 153 createApnObject_: function(apnProperties) {
151 var newApn = {AccessPointName: ''}; 154 var newApn = {AccessPointName: ''};
(...skipping 12 matching lines...) Expand all
164 return []; 167 return [];
165 /** @type {!chrome.networkingPrivate.ManagedAPNList|undefined} */ var 168 /** @type {!chrome.networkingPrivate.ManagedAPNList|undefined} */ var
166 apnlist = this.networkProperties.Cellular.APNList; 169 apnlist = this.networkProperties.Cellular.APNList;
167 if (!apnlist) 170 if (!apnlist)
168 return []; 171 return [];
169 return /** @type {!Array<!CrOnc.APNProperties>} */ ( 172 return /** @type {!Array<!CrOnc.APNProperties>} */ (
170 CrOnc.getActiveValue(apnlist)); 173 CrOnc.getActiveValue(apnlist));
171 }, 174 },
172 175
173 /** 176 /**
174 * We need to update the select value after the dom-repeat template updates:
175 * 1. Rebuilding the template options resets the select value property.
176 * 2. The template update occurs after any property changed events.
177 * TODO(stevenjb): Remove once we use cr-dropdown-menu which (hopefully)
178 * won't require this.
179 * @private
180 */
181 onSelectApnUpdated_: function() {
182 this.$.selectApn.value = this.selectedApn;
183 },
184
185 /**
186 * Event triggered when the selectApn selection changes. 177 * Event triggered when the selectApn selection changes.
187 * @param {Event} event The select node change event. 178 * @param {!{detail: !{selected: string}}} e
188 * @private 179 * @private
189 */ 180 */
190 onSelectApnChange_: function(event) { 181 onSelectApnChange_: function(e) {
191 var selectedApn = event.target.value; 182 var selectedApn = e.detail.selected;
192 // When selecting 'Other', don't set a change event unless a valid 183 // When selecting 'Other', don't set a change event unless a valid
193 // non-default value has been set for Other. 184 // non-default value has been set for Other.
194 if (this.isOtherSelected_(this.networkProperties, selectedApn) && 185 if (this.isOtherSelected_(this.networkProperties, selectedApn) &&
195 (!this.otherApn || !this.otherApn.AccessPointName || 186 (!this.otherApn || !this.otherApn.AccessPointName ||
196 this.otherApn.AccessPointName == this.DefaultAccessPointName)) { 187 this.otherApn.AccessPointName == this.DefaultAccessPointName)) {
197 return; 188 return;
198 } 189 }
199 this.sendApnChange_(selectedApn); 190 this.sendApnChange_(selectedApn);
200 }, 191 },
201 192
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 * @private 259 * @private
269 */ 260 */
270 findApnInList: function(apnList, accessPointName) { 261 findApnInList: function(apnList, accessPointName) {
271 for (let a of apnList) { 262 for (let a of apnList) {
272 if (a.AccessPointName == accessPointName) 263 if (a.AccessPointName == accessPointName)
273 return a; 264 return a;
274 } 265 }
275 return undefined; 266 return undefined;
276 } 267 }
277 }); 268 });
278 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698