Chromium Code Reviews| OLD | NEW |
|---|---|
| 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_; | |
|
csilv
2012/03/09 22:30:14
should be 'updateControls'.
kevers
2012/03/12 13:57:13
Done.
| |
| 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 Loading... | |
| 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 | |
| 206 this.addEventListener('visibleChange', this.handleVisibleChange_); | |
|
csilv
2012/03/09 22:30:14
handleVisibleChange_ is undefined.
kevers
2012/03/12 13:57:13
Done.
| |
| 207 $('removeHost').addEventListener('click', | |
| 208 this.handleRemoveProxyExceptions_); | |
| 209 $('addHost').addEventListener('click', this.handleAddProxyException_); | |
| 210 $('directProxy').addEventListener('click', this.disableManualProxy_); | |
| 211 $('manualProxy').addEventListener('click', this.enableManualProxy_); | |
| 212 $('autoProxy').addEventListener('click', this.disableManualProxy_); | |
| 213 $('proxyAllProtocols').addEventListener('click', | |
| 214 this.toggleSingleProxy_); | |
| 215 | |
| 216 observePrefsUI($('directProxy')); | |
| 217 observePrefsUI($('manualProxy')); | |
| 218 observePrefsUI($('autoProxy')); | |
| 219 observePrefsUI($('proxyAllProtocols')); | |
| 220 }, | |
| 221 | |
| 222 /** | |
| 223 * Handler for "add" event fired from userNameEdit. | |
| 224 * @param {Event} e Add event fired from userNameEdit. | |
| 225 * @private | |
| 226 */ | |
| 227 handleAddProxyException_: function(e) { | |
| 228 var exception = $('newHost').value; | |
| 229 $('newHost').value = ''; | |
| 230 | |
| 231 exception = exception.trim(); | |
| 232 if (exception) | |
| 233 $('ignoredHostList').addException(exception); | |
| 234 }, | |
| 235 | |
| 236 /** | |
| 237 * Handler for when the remove button is clicked | |
| 238 * @param {Event} e The click event. | |
| 239 * @private | |
| 240 */ | |
| 241 handleRemoveProxyExceptions_: function(e) { | |
| 242 var selectedItems = $('ignoredHostList').selectedItems; | |
| 243 for (var x = 0; x < selectedItems.length; x++) { | |
| 244 $('ignoredHostList').removeException(selectedItems[x]); | |
| 245 } | |
| 180 }, | 246 }, |
| 181 | 247 |
| 182 /** | 248 /** |
| 183 * Update details page controls. | 249 * Update details page controls. |
| 184 * @private | 250 * @private |
| 185 */ | 251 */ |
| 186 updateControls_: function() { | 252 updateControls: function() { |
| 187 // Only show ipconfig section if network is connected OR if nothing on | 253 // 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 | 254 // this device is connected. This is so that you can fix the ip configs |
| 189 // if you can't connect to any network. | 255 // if you can't connect to any network. |
| 190 // TODO(chocobo): Once ipconfig is moved to flimflam service objects, | 256 // TODO(chocobo): Once ipconfig is moved to flimflam service objects, |
| 191 // we need to redo this logic to allow configuration of all networks. | 257 // we need to redo this logic to allow configuration of all networks. |
| 192 $('ipconfigSection').hidden = !this.connected && this.deviceConnected; | 258 $('ipconfigSection').hidden = !this.connected && this.deviceConnected; |
| 193 | 259 |
| 194 // Network type related. | 260 // Network type related. |
| 195 updateHidden('#detailsInternetPage .cellular-details', !this.cellular); | 261 updateHidden('#detailsInternetPage .cellular-details', !this.cellular); |
| 196 updateHidden('#detailsInternetPage .wifi-details', !this.wireless); | 262 updateHidden('#detailsInternetPage .wifi-details', !this.wireless); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 212 updateHidden('#detailsInternetPage .apn-list-view', | 278 updateHidden('#detailsInternetPage .apn-list-view', |
| 213 !this.cellular || !this.gsm); | 279 !this.cellular || !this.gsm); |
| 214 updateHidden('#detailsInternetPage .apn-details-view', true); | 280 updateHidden('#detailsInternetPage .apn-details-view', true); |
| 215 | 281 |
| 216 // Password and shared. | 282 // Password and shared. |
| 217 updateHidden('#detailsInternetPage .password-details', | 283 updateHidden('#detailsInternetPage .password-details', |
| 218 !this.wireless || !this.password); | 284 !this.wireless || !this.password); |
| 219 updateHidden('#detailsInternetPage .shared-network', !this.shared); | 285 updateHidden('#detailsInternetPage .shared-network', !this.shared); |
| 220 updateHidden('#detailsInternetPage .prefer-network', | 286 updateHidden('#detailsInternetPage .prefer-network', |
| 221 !this.showPreferred); | 287 !this.showPreferred); |
| 222 } | 288 |
| 289 // Proxy | |
| 290 this.updateProxyBannerVisibility_(); | |
| 291 this.toggleSingleProxy_(); | |
| 292 if ($('manualProxy').checked) | |
| 293 this.enableManualProxy_(); | |
| 294 else | |
| 295 this.disableManualProxy_(); | |
| 296 if (!this.proxyListInitialized_ && this.visible) { | |
| 297 this.proxyListInitialized_ = true; | |
| 298 $('ignoredHostList').redraw(); | |
| 299 } | |
| 300 }, | |
| 301 | |
| 302 /** | |
| 303 * Updates info banner visibility state. This function shows the banner | |
| 304 * if proxy is managed or shared-proxies is off for shared network. | |
| 305 * @private | |
| 306 */ | |
| 307 updateProxyBannerVisibility_: function() { | |
| 308 var bannerDiv = $('info-banner'); | |
| 309 // Show banner and determine its message if necessary. | |
| 310 var controlledBy = $('directProxy').controlledBy; | |
| 311 if (controlledBy == '') { | |
| 312 bannerDiv.hidden = true; | |
| 313 } else { | |
| 314 bannerDiv.hidden = false; | |
| 315 // controlledBy must match strings loaded in proxy_handler.cc and | |
| 316 // set in proxy_cros_settings_provider.cc. | |
| 317 $('banner-text').textContent = localStrings.getString(controlledBy); | |
| 318 } | |
| 319 }, | |
| 320 | |
| 321 /** | |
| 322 * Handler for when the user clicks on the checkbox to allow a | |
| 323 * single proxy usage. | |
| 324 * @private | |
| 325 * @param {Event} e Click Event. | |
| 326 */ | |
| 327 toggleSingleProxy_: function(e) { | |
| 328 if ($('proxyAllProtocols').checked) { | |
| 329 $('multiProxy').style.display = 'none'; | |
| 330 $('singleProxy').style.display = 'block'; | |
| 331 } else { | |
| 332 $('multiProxy').style.display = 'block'; | |
| 333 $('singleProxy').style.display = 'none'; | |
| 334 } | |
| 335 }, | |
|
csilv
2012/03/09 22:30:14
would it be possible to use 'hidden' instead of se
kevers
2012/03/12 13:57:13
Done.
| |
| 336 | |
| 337 /** | |
| 338 * Handler for selecting a radio button that will disable the manual | |
| 339 * controls. | |
| 340 * @private | |
| 341 * @param {Event} e Click event. | |
| 342 */ | |
| 343 disableManualProxy_: function(e) { | |
| 344 $('advancedConfig').hidden = true; | |
| 345 $('proxyAllProtocols').disabled = true; | |
| 346 $('proxyHostName').disabled = true; | |
| 347 $('proxyHostPort').disabled = true; | |
| 348 $('proxyHostSingleName').disabled = true; | |
| 349 $('proxyHostSinglePort').disabled = true; | |
| 350 $('secureProxyHostName').disabled = true; | |
| 351 $('secureProxyPort').disabled = true; | |
| 352 $('ftpProxy').disabled = true; | |
| 353 $('ftpProxyPort').disabled = true; | |
| 354 $('socksHost').disabled = true; | |
| 355 $('socksPort').disabled = true; | |
| 356 $('proxyConfig').disabled = $('autoProxy').disabled || | |
| 357 !$('autoProxy').checked; | |
| 358 }, | |
| 359 | |
| 360 /** | |
| 361 * Handler for selecting a radio button that will enable the manual | |
| 362 * controls. | |
| 363 * @private | |
| 364 * @param {Event} e Click event. | |
| 365 */ | |
| 366 enableManualProxy_: function(e) { | |
| 367 $('advancedConfig').hidden = false; | |
| 368 $('ignoredHostList').redraw(); | |
| 369 var all_disabled = $('manualProxy').disabled; | |
| 370 $('newHost').disabled = all_disabled; | |
| 371 $('removeHost').disabled = all_disabled; | |
| 372 $('addHost').disabled = all_disabled; | |
| 373 $('proxyAllProtocols').disabled = all_disabled; | |
| 374 $('proxyHostName').disabled = all_disabled; | |
| 375 $('proxyHostPort').disabled = all_disabled; | |
| 376 $('proxyHostSingleName').disabled = all_disabled; | |
| 377 $('proxyHostSinglePort').disabled = all_disabled; | |
| 378 $('secureProxyHostName').disabled = all_disabled; | |
| 379 $('secureProxyPort').disabled = all_disabled; | |
| 380 $('ftpProxy').disabled = all_disabled; | |
| 381 $('ftpProxyPort').disabled = all_disabled; | |
| 382 $('socksHost').disabled = all_disabled; | |
| 383 $('socksPort').disabled = all_disabled; | |
| 384 $('proxyConfig').disabled = true; | |
| 385 }, | |
| 223 }; | 386 }; |
| 224 | 387 |
| 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 { | 388 return { |
| 324 DetailsInternetPage: DetailsInternetPage | 389 DetailsInternetPage: DetailsInternetPage |
| 325 }; | 390 }; |
| 326 }); | 391 }); |
| OLD | NEW |