Chromium Code Reviews| Index: chrome/browser/resources/options2/chromeos/internet_detail.js |
| diff --git a/chrome/browser/resources/options2/chromeos/internet_detail.js b/chrome/browser/resources/options2/chromeos/internet_detail.js |
| index 6e99b47ca8668807c9235b84f482c7a5758c0b63..639db2c68fafe0f16a23594f1049b2215a5caea6 100644 |
| --- a/chrome/browser/resources/options2/chromeos/internet_detail.js |
| +++ b/chrome/browser/resources/options2/chromeos/internet_detail.js |
| @@ -17,6 +17,22 @@ cr.define('options.internet', function() { |
| } |
| } |
| + /** |
| + * Monitor pref change of given element. |
| + * @param {Element} el Target element. |
| + */ |
| + function observePrefsUI(el) { |
| + Preferences.getInstance().addEventListener(el.pref, handlePrefUpdate); |
| + } |
| + |
| + /** |
| + * UI pref change handler. |
| + * @param {Event} e The update event. |
| + */ |
| + function handlePrefUpdate(e) { |
| + DetailsInternetPage.prototype.updateControls_; |
|
csilv
2012/03/09 22:30:14
should be 'updateControls'.
kevers
2012/03/12 13:57:13
Done.
|
| + } |
| + |
| ///////////////////////////////////////////////////////////////////////////// |
| // DetailsInternetPage class: |
| @@ -34,6 +50,12 @@ cr.define('options.internet', function() { |
| __proto__: OptionsPage.prototype, |
| /** |
| + * Indicates if the list of proxy exceptions has been initialized. |
| + * @type {boolean} |
| + */ |
| + proxyListInitialized_: false, |
| + |
| + /** |
| * Initializes DetailsInternetPage page. |
| * Calls base class implementation to starts preference initialization. |
| */ |
| @@ -177,13 +199,57 @@ cr.define('options.internet', function() { |
| $('change-pin').addEventListener('click', function(event) { |
| chrome.send('changePin'); |
| }); |
| + |
| + // Proxy |
| + options.proxyexceptions.ProxyExceptions.decorate($('ignoredHostList')); |
| + |
| + this.addEventListener('visibleChange', this.handleVisibleChange_); |
|
csilv
2012/03/09 22:30:14
handleVisibleChange_ is undefined.
kevers
2012/03/12 13:57:13
Done.
|
| + $('removeHost').addEventListener('click', |
| + this.handleRemoveProxyExceptions_); |
| + $('addHost').addEventListener('click', this.handleAddProxyException_); |
| + $('directProxy').addEventListener('click', this.disableManualProxy_); |
| + $('manualProxy').addEventListener('click', this.enableManualProxy_); |
| + $('autoProxy').addEventListener('click', this.disableManualProxy_); |
| + $('proxyAllProtocols').addEventListener('click', |
| + this.toggleSingleProxy_); |
| + |
| + observePrefsUI($('directProxy')); |
| + observePrefsUI($('manualProxy')); |
| + observePrefsUI($('autoProxy')); |
| + observePrefsUI($('proxyAllProtocols')); |
| + }, |
| + |
| + /** |
| + * Handler for "add" event fired from userNameEdit. |
| + * @param {Event} e Add event fired from userNameEdit. |
| + * @private |
| + */ |
| + handleAddProxyException_: function(e) { |
| + var exception = $('newHost').value; |
| + $('newHost').value = ''; |
| + |
| + exception = exception.trim(); |
| + if (exception) |
| + $('ignoredHostList').addException(exception); |
| + }, |
| + |
| + /** |
| + * Handler for when the remove button is clicked |
| + * @param {Event} e The click event. |
| + * @private |
| + */ |
| + handleRemoveProxyExceptions_: function(e) { |
| + var selectedItems = $('ignoredHostList').selectedItems; |
| + for (var x = 0; x < selectedItems.length; x++) { |
| + $('ignoredHostList').removeException(selectedItems[x]); |
| + } |
| }, |
| /** |
| * Update details page controls. |
| * @private |
| */ |
| - updateControls_: function() { |
| + updateControls: function() { |
| // Only show ipconfig section if network is connected OR if nothing on |
| // this device is connected. This is so that you can fix the ip configs |
| // if you can't connect to any network. |
| @@ -219,106 +285,105 @@ cr.define('options.internet', function() { |
| updateHidden('#detailsInternetPage .shared-network', !this.shared); |
| updateHidden('#detailsInternetPage .prefer-network', |
| !this.showPreferred); |
| - } |
| - }; |
| - |
| - /** |
| - * Whether the underlying network is connected. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'connected', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - /** |
| - * Whether the underlying network is wifi. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'wireless', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - |
| - /** |
| - * Whether the underlying network shared wifi. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'shared', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - |
| - /** |
| - * Whether the underlying network is a vpn. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'vpn', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - |
| - /** |
| - * Whether the underlying network is ethernet. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'ethernet', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - |
| - /** |
| - * Whether the underlying network is cellular. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'cellular', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - |
| - /** |
| - * Whether the network is loading cell plan. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'cellplanloading', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| + // Proxy |
| + this.updateProxyBannerVisibility_(); |
| + this.toggleSingleProxy_(); |
| + if ($('manualProxy').checked) |
| + this.enableManualProxy_(); |
| + else |
| + this.disableManualProxy_(); |
| + if (!this.proxyListInitialized_ && this.visible) { |
| + this.proxyListInitialized_ = true; |
| + $('ignoredHostList').redraw(); |
| + } |
| + }, |
| - /** |
| - * Whether the network has cell plan(s). Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'hascellplan', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| + /** |
| + * Updates info banner visibility state. This function shows the banner |
| + * if proxy is managed or shared-proxies is off for shared network. |
| + * @private |
| + */ |
| + updateProxyBannerVisibility_: function() { |
| + var bannerDiv = $('info-banner'); |
| + // Show banner and determine its message if necessary. |
| + var controlledBy = $('directProxy').controlledBy; |
| + if (controlledBy == '') { |
| + bannerDiv.hidden = true; |
| + } else { |
| + bannerDiv.hidden = false; |
| + // controlledBy must match strings loaded in proxy_handler.cc and |
| + // set in proxy_cros_settings_provider.cc. |
| + $('banner-text').textContent = localStrings.getString(controlledBy); |
| + } |
| + }, |
| - /** |
| - * Whether the network has no cell plan. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'nocellplan', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| + /** |
| + * Handler for when the user clicks on the checkbox to allow a |
| + * single proxy usage. |
| + * @private |
| + * @param {Event} e Click Event. |
| + */ |
| + toggleSingleProxy_: function(e) { |
| + if ($('proxyAllProtocols').checked) { |
| + $('multiProxy').style.display = 'none'; |
| + $('singleProxy').style.display = 'block'; |
| + } else { |
| + $('multiProxy').style.display = 'block'; |
| + $('singleProxy').style.display = 'none'; |
| + } |
| + }, |
|
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.
|
| - /** |
| - * Whether the network is gsm. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'gsm', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| + /** |
| + * Handler for selecting a radio button that will disable the manual |
| + * controls. |
| + * @private |
| + * @param {Event} e Click event. |
| + */ |
| + disableManualProxy_: function(e) { |
| + $('advancedConfig').hidden = true; |
| + $('proxyAllProtocols').disabled = true; |
| + $('proxyHostName').disabled = true; |
| + $('proxyHostPort').disabled = true; |
| + $('proxyHostSingleName').disabled = true; |
| + $('proxyHostSinglePort').disabled = true; |
| + $('secureProxyHostName').disabled = true; |
| + $('secureProxyPort').disabled = true; |
| + $('ftpProxy').disabled = true; |
| + $('ftpProxyPort').disabled = true; |
| + $('socksHost').disabled = true; |
| + $('socksPort').disabled = true; |
| + $('proxyConfig').disabled = $('autoProxy').disabled || |
| + !$('autoProxy').checked; |
| + }, |
| - /** |
| - * Whether show password details for network. Only used for display purpose. |
| - * @type {boolean} |
| - */ |
| - cr.defineProperty(DetailsInternetPage, 'password', |
| - cr.PropertyKind.JS, |
| - DetailsInternetPage.prototype.updateControls_); |
| - |
| - // TODO(xiyuan): Check to see if it is safe to remove these attributes. |
| - cr.defineProperty(DetailsInternetPage, 'hasactiveplan', |
| - cr.PropertyKind.JS); |
| - cr.defineProperty(DetailsInternetPage, 'activated', |
| - cr.PropertyKind.JS); |
| - cr.defineProperty(DetailsInternetPage, 'connecting', |
| - cr.PropertyKind.JS); |
| - cr.defineProperty(DetailsInternetPage, 'connected', |
| - cr.PropertyKind.JS); |
| + /** |
| + * Handler for selecting a radio button that will enable the manual |
| + * controls. |
| + * @private |
| + * @param {Event} e Click event. |
| + */ |
| + enableManualProxy_: function(e) { |
| + $('advancedConfig').hidden = false; |
| + $('ignoredHostList').redraw(); |
| + var all_disabled = $('manualProxy').disabled; |
| + $('newHost').disabled = all_disabled; |
| + $('removeHost').disabled = all_disabled; |
| + $('addHost').disabled = all_disabled; |
| + $('proxyAllProtocols').disabled = all_disabled; |
| + $('proxyHostName').disabled = all_disabled; |
| + $('proxyHostPort').disabled = all_disabled; |
| + $('proxyHostSingleName').disabled = all_disabled; |
| + $('proxyHostSinglePort').disabled = all_disabled; |
| + $('secureProxyHostName').disabled = all_disabled; |
| + $('secureProxyPort').disabled = all_disabled; |
| + $('ftpProxy').disabled = all_disabled; |
| + $('ftpProxyPort').disabled = all_disabled; |
| + $('socksHost').disabled = all_disabled; |
| + $('socksPort').disabled = all_disabled; |
| + $('proxyConfig').disabled = true; |
| + }, |
| + }; |
| return { |
| DetailsInternetPage: DetailsInternetPage |