Bug 1505330 - Only disable explicitly locked preferences. r=Gijs, a=jcristau
authorMichael Kaply <mozilla@kaply.com>
Tue, 04 Jun 2019 15:02:13 +0000
changeset 536877 b9053ab0103505c2813517e9d2ea9055f80be740
parent 536876 2708dccfdc6ac5d499be81bdc605b5cd9d068437
child 536878 813ac8b3a652961ae7e235e188997957484b9703
push id2082
push userffxbld-merge
push dateMon, 01 Jul 2019 08:34:18 +0000
treeherdermozilla-release@2fb19d0466d2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs, jcristau
bugs1505330
milestone68.0
Bug 1505330 - Only disable explicitly locked preferences. r=Gijs, a=jcristau Differential Revision: https://phabricator.services.mozilla.com/D33505
browser/components/preferences/connection.js
browser/components/preferences/in-content/tests/browser.ini
browser/components/preferences/in-content/tests/browser_connection_bug1505330.js
--- a/browser/components/preferences/connection.js
+++ b/browser/components/preferences/connection.js
@@ -291,29 +291,25 @@ var gConnectionsDialog = {
 
   // Update the UI to show/hide the extension controlled message for
   // proxy settings.
   async updateProxySettingsUI() {
     let isLocked = API_PROXY_PREFS.some(
       pref => Services.prefs.prefIsLocked(pref));
 
     function setInputsDisabledState(isControlled) {
-      let disabled = isLocked || isControlled;
       for (let element of gConnectionsDialog.getProxyControls()) {
-        element.disabled = disabled;
+        element.disabled = isControlled;
       }
-      if (!isLocked) {
-        gConnectionsDialog.proxyTypeChanged();
-      }
+      gConnectionsDialog.proxyTypeChanged();
     }
 
     if (isLocked) {
       // An extension can't control this setting if any pref is locked.
       hideControllingExtension(PROXY_KEY);
-      setInputsDisabledState(false);
     } else {
       handleControllingExtension(PREF_SETTING_TYPE, PROXY_KEY)
         .then(setInputsDisabledState);
     }
   },
 
   get dnsOverHttpsResolvers() {
     let rawValue = Preferences.get("network.trr.resolvers", "").value;
--- a/browser/components/preferences/in-content/tests/browser.ini
+++ b/browser/components/preferences/in-content/tests/browser.ini
@@ -41,16 +41,17 @@ support-files =
 [browser_engines.js]
 [browser_change_app_handler.js]
 skip-if = os != "win" # Windows-specific handler application selection dialog
 [browser_checkspelling.js]
 [browser_cloud_storage.js]
 [browser_connection.js]
 [browser_connection_bug388287.js]
 [browser_connection_bug1445991.js]
+[browser_connection_bug1505330.js]
 skip-if = (verify && debug && (os == 'linux' || os == 'mac'))
 [browser_connection_dnsoverhttps.js]
 [browser_contentblocking_categories.js]
 [browser_contentblocking.js]
 [browser_cookies_exceptions.js]
 [browser_defaultbrowser_alwayscheck.js]
 [browser_healthreport.js]
 skip-if = true || !healthreport # Bug 1185403 for the "true"
new file mode 100644
--- /dev/null
+++ b/browser/components/preferences/in-content/tests/browser_connection_bug1505330.js
@@ -0,0 +1,26 @@
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+ "use strict";
+
+ // Test the disabled status of the autoconfig Reload button when the proxy type
+ // is autoconfig (network.proxy.type == 2).
+ add_task(async function testAutoconfigReloadButton() {
+   Services.prefs.lockPref("signon.autologin.proxy");
+
+   await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
+   const connectionURL = "chrome://browser/content/preferences/connection.xul";
+   const promiseDialogLoaded = promiseLoadSubDialog(connectionURL);
+   gBrowser.contentDocument.getElementById("connectionSettings").click();
+   const dialog = await promiseDialogLoaded;
+
+   ok(!dialog.document.getElementById("networkProxyType").firstChild.disabled,
+      "Connection options should not be disabled");
+   ok(dialog.document.getElementById("autologinProxy").disabled,
+      "Proxy autologin should be disabled");
+
+   dialog.close();
+   Services.prefs.unlockPref("signon.autologin.proxy");
+   gBrowser.removeCurrentTab();
+ });