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

Side by Side Diff: chrome/browser/resources/options2/chromeos/internet_detail.js

Issue 9668010: Move proxy handling into network details. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix 80-column wrap. Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 cr.define('options.internet', function() { 5 cr.define('options.internet', function() {
6 var OptionsPage = options.OptionsPage; 6 var OptionsPage = options.OptionsPage;
7 7
8 /* 8 /*
9 * Helper function to set hidden attribute for elements matching a selector. 9 * Helper function to set hidden attribute for elements matching a selector.
10 * @param {string} selector CSS selector for extracting a list of elements. 10 * @param {string} selector CSS selector for extracting a list of elements.
11 * @param {bool} hidden New hidden value. 11 * @param {bool} hidden New hidden value.
12 */ 12 */
13 function updateHidden(selector, hidden) { 13 function updateHidden(selector, hidden) {
14 var elements = cr.doc.querySelectorAll(selector); 14 var elements = cr.doc.querySelectorAll(selector);
15 for (var i = 0, el; el = elements[i]; i++) { 15 for (var i = 0, el; el = elements[i]; i++) {
16 el.hidden = hidden; 16 el.hidden = hidden;
17 } 17 }
18 } 18 }
19 19
20 /**
21 * Monitor pref change of given element.
22 * @param {Element} el Target element.
23 */
24 function observePrefsUI(el) {
25 Preferences.getInstance().addEventListener(el.pref, handlePrefUpdate);
26 }
27
28 /**
29 * UI pref change handler.
30 * @param {Event} e The update event.
31 */
32 function handlePrefUpdate(e) {
33 DetailsInternetPage.prototype.updateControls;
34 }
35
20 ///////////////////////////////////////////////////////////////////////////// 36 /////////////////////////////////////////////////////////////////////////////
21 // DetailsInternetPage class: 37 // DetailsInternetPage class:
22 38
23 /** 39 /**
24 * Encapsulated handling of ChromeOS internet details overlay page. 40 * Encapsulated handling of ChromeOS internet details overlay page.
25 * @constructor 41 * @constructor
26 */ 42 */
27 function DetailsInternetPage() { 43 function DetailsInternetPage() {
28 OptionsPage.call(this, 'detailsInternetPage', null, 'detailsInternetPage'); 44 OptionsPage.call(this, 'detailsInternetPage', null, 'detailsInternetPage');
29 } 45 }
30 46
31 cr.addSingletonGetter(DetailsInternetPage); 47 cr.addSingletonGetter(DetailsInternetPage);
32 48
33 DetailsInternetPage.prototype = { 49 DetailsInternetPage.prototype = {
34 __proto__: OptionsPage.prototype, 50 __proto__: OptionsPage.prototype,
35 51
36 /** 52 /**
53 * Indicates if the list of proxy exceptions has been initialized.
54 * @type {boolean}
55 */
56 proxyListInitialized_: false,
57
58 /**
37 * Initializes DetailsInternetPage page. 59 * Initializes DetailsInternetPage page.
38 * Calls base class implementation to starts preference initialization. 60 * Calls base class implementation to starts preference initialization.
39 */ 61 */
40 initializePage: function() { 62 initializePage: function() {
41 OptionsPage.prototype.initializePage.call(this); 63 OptionsPage.prototype.initializePage.call(this);
42 64
43 options.internet.CellularPlanElement.decorate($('planList')); 65 options.internet.CellularPlanElement.decorate($('planList'));
44 66
45 $('detailsInternetDismiss').addEventListener('click', function(event) { 67 $('detailsInternetDismiss').addEventListener('click', function(event) {
46 InternetOptions.setDetails(); 68 InternetOptions.setDetails();
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 var newValue = $('sim-card-lock-enabled').checked; 192 var newValue = $('sim-card-lock-enabled').checked;
171 // Leave value as is because user needs to enter PIN code first. 193 // Leave value as is because user needs to enter PIN code first.
172 // When PIN will be entered and value changed, 194 // When PIN will be entered and value changed,
173 // we'll update UI to reflect that change. 195 // we'll update UI to reflect that change.
174 $('sim-card-lock-enabled').checked = !newValue; 196 $('sim-card-lock-enabled').checked = !newValue;
175 chrome.send('setSimCardLock', [newValue]); 197 chrome.send('setSimCardLock', [newValue]);
176 }); 198 });
177 $('change-pin').addEventListener('click', function(event) { 199 $('change-pin').addEventListener('click', function(event) {
178 chrome.send('changePin'); 200 chrome.send('changePin');
179 }); 201 });
202
203 // Proxy
204 options.proxyexceptions.ProxyExceptions.decorate($('ignoredHostList'));
205 $('removeHost').addEventListener('click',
206 this.handleRemoveProxyExceptions_);
207 $('addHost').addEventListener('click', this.handleAddProxyException_);
208 $('directProxy').addEventListener('click', this.disableManualProxy_);
209 $('manualProxy').addEventListener('click', this.enableManualProxy_);
210 $('autoProxy').addEventListener('click', this.disableManualProxy_);
211 $('proxyAllProtocols').addEventListener('click',
212 this.toggleSingleProxy_);
213 observePrefsUI($('directProxy'));
214 observePrefsUI($('manualProxy'));
215 observePrefsUI($('autoProxy'));
216 observePrefsUI($('proxyAllProtocols'));
217 },
218
219 /**
220 * Handler for "add" event fired from userNameEdit.
221 * @param {Event} e Add event fired from userNameEdit.
222 * @private
223 */
224 handleAddProxyException_: function(e) {
225 var exception = $('newHost').value;
226 $('newHost').value = '';
227
228 exception = exception.trim();
229 if (exception)
230 $('ignoredHostList').addException(exception);
231 },
232
233 /**
234 * Handler for when the remove button is clicked
235 * @param {Event} e The click event.
236 * @private
237 */
238 handleRemoveProxyExceptions_: function(e) {
239 var selectedItems = $('ignoredHostList').selectedItems;
240 for (var x = 0; x < selectedItems.length; x++) {
241 $('ignoredHostList').removeException(selectedItems[x]);
242 }
180 }, 243 },
181 244
182 /** 245 /**
183 * Update details page controls. 246 * Update details page controls.
184 * @private 247 * @private
185 */ 248 */
186 updateControls_: function() { 249 updateControls: function() {
187 // Only show ipconfig section if network is connected OR if nothing on 250 // Only show ipconfig section if network is connected OR if nothing on
188 // this device is connected. This is so that you can fix the ip configs 251 // this device is connected. This is so that you can fix the ip configs
189 // if you can't connect to any network. 252 // if you can't connect to any network.
190 // TODO(chocobo): Once ipconfig is moved to flimflam service objects, 253 // TODO(chocobo): Once ipconfig is moved to flimflam service objects,
191 // we need to redo this logic to allow configuration of all networks. 254 // we need to redo this logic to allow configuration of all networks.
192 $('ipconfigSection').hidden = !this.connected && this.deviceConnected; 255 $('ipconfigSection').hidden = !this.connected && this.deviceConnected;
193 256
194 // Network type related. 257 // Network type related.
195 updateHidden('#detailsInternetPage .cellular-details', !this.cellular); 258 updateHidden('#detailsInternetPage .cellular-details', !this.cellular);
196 updateHidden('#detailsInternetPage .wifi-details', !this.wireless); 259 updateHidden('#detailsInternetPage .wifi-details', !this.wireless);
(...skipping 15 matching lines...) Expand all
212 updateHidden('#detailsInternetPage .apn-list-view', 275 updateHidden('#detailsInternetPage .apn-list-view',
213 !this.cellular || !this.gsm); 276 !this.cellular || !this.gsm);
214 updateHidden('#detailsInternetPage .apn-details-view', true); 277 updateHidden('#detailsInternetPage .apn-details-view', true);
215 278
216 // Password and shared. 279 // Password and shared.
217 updateHidden('#detailsInternetPage .password-details', 280 updateHidden('#detailsInternetPage .password-details',
218 !this.wireless || !this.password); 281 !this.wireless || !this.password);
219 updateHidden('#detailsInternetPage .shared-network', !this.shared); 282 updateHidden('#detailsInternetPage .shared-network', !this.shared);
220 updateHidden('#detailsInternetPage .prefer-network', 283 updateHidden('#detailsInternetPage .prefer-network',
221 !this.showPreferred); 284 !this.showPreferred);
222 } 285
286 // Proxy
287 this.updateProxyBannerVisibility_();
288 this.toggleSingleProxy_();
289 if ($('manualProxy').checked)
290 this.enableManualProxy_();
291 else
292 this.disableManualProxy_();
293 if (!this.proxyListInitialized_ && this.visible) {
294 this.proxyListInitialized_ = true;
295 $('ignoredHostList').redraw();
296 }
297 },
298
299 /**
300 * Updates info banner visibility state. This function shows the banner
301 * if proxy is managed or shared-proxies is off for shared network.
302 * @private
303 */
304 updateProxyBannerVisibility_: function() {
305 var bannerDiv = $('info-banner');
306 // Show banner and determine its message if necessary.
307 var controlledBy = $('directProxy').controlledBy;
308 if (controlledBy == '') {
309 bannerDiv.hidden = true;
310 } else {
311 bannerDiv.hidden = false;
312 // controlledBy must match strings loaded in proxy_handler.cc and
313 // set in proxy_cros_settings_provider.cc.
314 $('banner-text').textContent = localStrings.getString(controlledBy);
315 }
316 },
317
318 /**
319 * Handler for when the user clicks on the checkbox to allow a
320 * single proxy usage.
321 * @private
322 * @param {Event} e Click Event.
323 */
324 toggleSingleProxy_: function(e) {
325 if ($('proxyAllProtocols').checked) {
326 $('multiProxy').hidden = true;
327 $('singleProxy').hidden = false;
328 } else {
329 $('multiProxy').hidden = false;
330 $('singleProxy').hidden = true;
331 }
332 },
333
334 /**
335 * Handler for selecting a radio button that will disable the manual
336 * controls.
337 * @private
338 * @param {Event} e Click event.
339 */
340 disableManualProxy_: function(e) {
341 $('advancedConfig').hidden = true;
342 $('proxyAllProtocols').disabled = true;
343 $('proxyHostName').disabled = true;
344 $('proxyHostPort').disabled = true;
345 $('proxyHostSingleName').disabled = true;
346 $('proxyHostSinglePort').disabled = true;
347 $('secureProxyHostName').disabled = true;
348 $('secureProxyPort').disabled = true;
349 $('ftpProxy').disabled = true;
350 $('ftpProxyPort').disabled = true;
351 $('socksHost').disabled = true;
352 $('socksPort').disabled = true;
353 $('proxyConfig').disabled = $('autoProxy').disabled ||
354 !$('autoProxy').checked;
355 },
356
357 /**
358 * Handler for selecting a radio button that will enable the manual
359 * controls.
360 * @private
361 * @param {Event} e Click event.
362 */
363 enableManualProxy_: function(e) {
364 $('advancedConfig').hidden = false;
365 $('ignoredHostList').redraw();
366 var all_disabled = $('manualProxy').disabled;
367 $('newHost').disabled = all_disabled;
368 $('removeHost').disabled = all_disabled;
369 $('addHost').disabled = all_disabled;
370 $('proxyAllProtocols').disabled = all_disabled;
371 $('proxyHostName').disabled = all_disabled;
372 $('proxyHostPort').disabled = all_disabled;
373 $('proxyHostSingleName').disabled = all_disabled;
374 $('proxyHostSinglePort').disabled = all_disabled;
375 $('secureProxyHostName').disabled = all_disabled;
376 $('secureProxyPort').disabled = all_disabled;
377 $('ftpProxy').disabled = all_disabled;
378 $('ftpProxyPort').disabled = all_disabled;
379 $('socksHost').disabled = all_disabled;
380 $('socksPort').disabled = all_disabled;
381 $('proxyConfig').disabled = true;
382 },
223 }; 383 };
224 384
225 /**
226 * Whether the underlying network is connected. Only used for display purpose.
227 * @type {boolean}
228 */
229 cr.defineProperty(DetailsInternetPage, 'connected',
230 cr.PropertyKind.JS,
231 DetailsInternetPage.prototype.updateControls_);
232
233 /**
234 * Whether the underlying network is wifi. Only used for display purpose.
235 * @type {boolean}
236 */
237 cr.defineProperty(DetailsInternetPage, 'wireless',
238 cr.PropertyKind.JS,
239 DetailsInternetPage.prototype.updateControls_);
240
241 /**
242 * Whether the underlying network shared wifi. Only used for display purpose.
243 * @type {boolean}
244 */
245 cr.defineProperty(DetailsInternetPage, 'shared',
246 cr.PropertyKind.JS,
247 DetailsInternetPage.prototype.updateControls_);
248
249 /**
250 * Whether the underlying network is a vpn. Only used for display purpose.
251 * @type {boolean}
252 */
253 cr.defineProperty(DetailsInternetPage, 'vpn',
254 cr.PropertyKind.JS,
255 DetailsInternetPage.prototype.updateControls_);
256
257 /**
258 * Whether the underlying network is ethernet. Only used for display purpose.
259 * @type {boolean}
260 */
261 cr.defineProperty(DetailsInternetPage, 'ethernet',
262 cr.PropertyKind.JS,
263 DetailsInternetPage.prototype.updateControls_);
264
265 /**
266 * Whether the underlying network is cellular. Only used for display purpose.
267 * @type {boolean}
268 */
269 cr.defineProperty(DetailsInternetPage, 'cellular',
270 cr.PropertyKind.JS,
271 DetailsInternetPage.prototype.updateControls_);
272
273 /**
274 * Whether the network is loading cell plan. Only used for display purpose.
275 * @type {boolean}
276 */
277 cr.defineProperty(DetailsInternetPage, 'cellplanloading',
278 cr.PropertyKind.JS,
279 DetailsInternetPage.prototype.updateControls_);
280
281 /**
282 * Whether the network has cell plan(s). Only used for display purpose.
283 * @type {boolean}
284 */
285 cr.defineProperty(DetailsInternetPage, 'hascellplan',
286 cr.PropertyKind.JS,
287 DetailsInternetPage.prototype.updateControls_);
288
289 /**
290 * Whether the network has no cell plan. Only used for display purpose.
291 * @type {boolean}
292 */
293 cr.defineProperty(DetailsInternetPage, 'nocellplan',
294 cr.PropertyKind.JS,
295 DetailsInternetPage.prototype.updateControls_);
296
297 /**
298 * Whether the network is gsm. Only used for display purpose.
299 * @type {boolean}
300 */
301 cr.defineProperty(DetailsInternetPage, 'gsm',
302 cr.PropertyKind.JS,
303 DetailsInternetPage.prototype.updateControls_);
304
305 /**
306 * Whether show password details for network. Only used for display purpose.
307 * @type {boolean}
308 */
309 cr.defineProperty(DetailsInternetPage, 'password',
310 cr.PropertyKind.JS,
311 DetailsInternetPage.prototype.updateControls_);
312
313 // TODO(xiyuan): Check to see if it is safe to remove these attributes.
314 cr.defineProperty(DetailsInternetPage, 'hasactiveplan',
315 cr.PropertyKind.JS);
316 cr.defineProperty(DetailsInternetPage, 'activated',
317 cr.PropertyKind.JS);
318 cr.defineProperty(DetailsInternetPage, 'connecting',
319 cr.PropertyKind.JS);
320 cr.defineProperty(DetailsInternetPage, 'connected',
321 cr.PropertyKind.JS);
322
323 return { 385 return {
324 DetailsInternetPage: DetailsInternetPage 386 DetailsInternetPage: DetailsInternetPage
325 }; 387 };
326 }); 388 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698