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

Unified Diff: chrome/browser/resources/settings/internet_page/network_proxy.js

Issue 2499483002: MD Settings: Internet: Allow Shared Proxies (Closed)
Patch Set: Rebase Created 4 years, 1 month 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/settings/internet_page/network_proxy.js
diff --git a/chrome/browser/resources/settings/internet_page/network_proxy.js b/chrome/browser/resources/settings/internet_page/network_proxy.js
index 4042b8761c4d0e75815e792e0195b01e6e0a12cd..974de27c38904e66d76531285ca14bfb7952a91b 100644
--- a/chrome/browser/resources/settings/internet_page/network_proxy.js
+++ b/chrome/browser/resources/settings/internet_page/network_proxy.js
@@ -56,6 +56,12 @@ Polymer({
},
/**
+ * Reflects prefs.settings.use_shared_proxies for data binding.
+ * @private
+ */
+ useSharedProxies_: Boolean,
+
+ /**
* Array of proxy configuration types.
* @private {!Array<string>}
* @const
@@ -88,6 +94,10 @@ Polymer({
},
},
+ observers: [
+ 'useSharedProxiesChanged_(prefs.settings.use_shared_proxies.value)',
+ ],
+
/**
* Saved Manual properties so that switching to another type does not loose
* any set properties while the UI is open.
@@ -111,11 +121,27 @@ Polymer({
/** @private */
networkPropertiesChanged_: function() {
+ this.updateProxy_();
+ },
+
+ /** @private */
+ updateProxy_: function() {
if (!this.networkProperties)
return;
/** @type {!CrOnc.ProxySettings} */
var proxy = this.createDefaultProxySettings_();
+
+ // For shared networks with unmanaged proxy settings, ignore any saved
+ // proxy settings (use the default values).
+ if (this.isShared_()) {
+ let property = this.getProxySettingsTypeProperty_();
+ if (!this.isControlled(property) && !this.useSharedProxies_) {
+ this.setProxyAsync_(proxy);
+ return; // Proxy settings will be ignored.
+ }
+ }
+
/** @type {!chrome.networkingPrivate.ManagedProxySettings|undefined} */
var proxySettings = this.networkProperties.ProxySettings;
if (proxySettings) {
@@ -152,15 +178,23 @@ Polymer({
proxy.ExcludeDomains = proxy.ExcludeDomains || this.savedExcludeDomains_;
proxy.Manual = proxy.Manual || this.savedManual_;
- // Set this.proxy after dom-repeat has been stamped.
- this.async(function() {
- this.proxy = proxy;
- }.bind(this));
-
// Set the Web Proxy Auto Discovery URL.
var ipv4 =
CrOnc.getIPConfigForType(this.networkProperties, CrOnc.IPType.IPV4);
this.WPAD = (ipv4 && ipv4.WebProxyAutoDiscoveryUrl) || '';
+
+ this.setProxyAsync_(proxy);
+ },
+
+ /**
+ * @param {!CrOnc.ProxySettings} proxy
+ * @private
+ */
+ setProxyAsync_: function(proxy) {
+ // Set this.proxy after dom-repeat has been stamped.
+ this.async(function() {
+ this.proxy = proxy;
+ }.bind(this));
},
/** @private */
@@ -170,6 +204,13 @@ Polymer({
this.sendProxyChange_();
},
+ /** @private */
+ useSharedProxiesChanged_: function() {
+ let pref = this.getPref('settings.use_shared_proxies');
+ this.useSharedProxies_ = !!pref && !!pref.value;
+ this.updateProxy_();
+ },
+
/**
* @return {CrOnc.ProxySettings} An empty/default proxy settings object.
* @private
@@ -283,12 +324,20 @@ Polymer({
},
/**
+ * @return {!CrOnc.ManagedProperty|undefined}
+ * @private
+ */
+ getProxySettingsTypeProperty_: function() {
+ return /** @type {!CrOnc.ManagedProperty|undefined} */ (
+ this.get('ProxySettings.Type', this.networkProperties));
+ },
+
+ /**
* @return {boolean}
* @private
*/
getShowNetworkPolicyIndicator_: function() {
- let property = /** @type {!CrOnc.ManagedProperty|undefined}*/ (
- this.get('ProxySettings.Type', this.networkProperties));
+ let property = this.getProxySettingsTypeProperty_();
return !!property && !this.isExtensionControlled(property) &&
this.isNetworkPolicyEnforced(property);
},
@@ -298,19 +347,37 @@ Polymer({
* @private
*/
getShowPrefPolicyIndicator_: function() {
- let property = /** @type {!CrOnc.ManagedProperty|undefined}*/ (
- this.get('ProxySettings.Type', this.networkProperties));
+ let property = this.getProxySettingsTypeProperty_();
return !!property && this.isExtensionControlled(property);
},
/**
+ * @param {!CrOnc.ManagedProperty} property
+ * @return {boolean}
+ * @private
+ */
+ getShowAllowShared_: function(property) {
+ return !this.isControlled(property) && this.isShared_();
+ },
+
+ /**
* @param {!CrOnc.ManagedProperty|undefined} property
* @return {boolean} Whether the property setting is enforced.
* @private
*/
isEditable_: function(property) {
return this.editable && !this.isNetworkPolicyEnforced(property) &&
- !this.isExtensionControlled(property);
+ !this.isExtensionControlled(property) &&
+ (!this.isShared_() || this.useSharedProxies_);
+ },
+
+ /**
+ * @return {boolean}
+ * @private
+ */
+ isShared_: function() {
+ return this.networkProperties.Source == 'Device' ||
+ this.networkProperties.Source == 'DevicePolicy';
},
/**
@@ -321,8 +388,7 @@ Polymer({
* @private
*/
isProxyEditable_: function() {
- let property = /** @type {!CrOnc.ManagedProperty|undefined}*/ (
- this.get('ProxySettings.Type', this.networkProperties));
+ let property = this.getProxySettingsTypeProperty_();
return !!property && this.isEditable_(property);
},
@@ -334,5 +400,36 @@ Polymer({
*/
matches_: function(property, value) {
return property == value;
- }
+ },
+
+ /**
+ * Handles the change event for the shared proxy checkbox. Shows a
+ * confirmation dialog.
+ * @param {Event} event
+ * @private
+ */
+ onAllowSharedProxiesChange_: function(event) {
+ this.$.confirmAllowSharedDialog.showModal();
+ },
+
+ /**
+ * Handles the shared proxy confirmation dialog 'Confirm' button.
+ * @private
+ */
+ onAllowSharedDialogConfirm_: function() {
+ /** @type {!SettingsCheckboxElement} */ (this.$.allowShared)
+ .sendPrefChange();
+ this.$.confirmAllowSharedDialog.close();
+ },
+
+ /**
+ * Handles the shared proxy confirmation dialog 'Cancel' button or a cancel
+ * event.
+ * @private
+ */
+ onAllowSharedDialogCancel_: function() {
+ /** @type {!SettingsCheckboxElement} */ (this.$.allowShared)
+ .resetToPrefValue();
+ this.$.confirmAllowSharedDialog.close();
+ },
});

Powered by Google App Engine
This is Rietveld 408576698