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

Unified 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: Address reviewer feedback. 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 side-by-side diff with in-line comments
Download patch
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..0a64bcd26b89a4079f659192dd4d3b8ffe40078b 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;
+ }
+
/////////////////////////////////////////////////////////////////////////////
// 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,54 @@ cr.define('options.internet', function() {
$('change-pin').addEventListener('click', function(event) {
chrome.send('changePin');
});
+
+ // Proxy
+ options.proxyexceptions.ProxyExceptions.decorate($('ignoredHostList'));
+ $('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 +282,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').hidden = true;
+ $('singleProxy').hidden = false;
+ } else {
+ $('multiProxy').hidden = false;
+ $('singleProxy').hidden = true;
+ }
+ },
- /**
- * 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

Powered by Google App Engine
This is Rietveld 408576698