Bug 1445991 - ensure prefs inited before autoconfig reload button updated; r=Gijs a=jcristau
authorMyk Melez <myk@mykzilla.org>
Thu, 15 Mar 2018 17:49:22 -0700
changeset 462747 4f2e5b33fec12d0763e686a338aec7f779d7bf54
parent 462746 382437b9db024f51e49655de0a61885b35352813
child 462748 013a1953f0fc8a5e4f5cd76afeb63903c0f0a964
push id1683
push usersfraser@mozilla.com
push dateThu, 26 Apr 2018 16:43:40 +0000
treeherdermozilla-release@5af6cb21869d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs, jcristau
bugs1445991
milestone60.0
Bug 1445991 - ensure prefs inited before autoconfig reload button updated; r=Gijs a=jcristau Reorder the construction of Preference objects so network.proxy.autoconfig_url gets constructed before network.proxy.type, which will ensure that networkProxyAutoconfigURL is set to the value of network.proxy.autoconfig_url before network.proxy.type construction triggers the call to updateReloadButton. MozReview-Commit-ID: BQL0RlvnCOo
browser/components/preferences/connection.js
browser/components/preferences/in-content/tests/browser.ini
browser/components/preferences/in-content/tests/browser_connection_bug1445991.js
--- a/browser/components/preferences/connection.js
+++ b/browser/components/preferences/connection.js
@@ -3,29 +3,32 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /* import-globals-from ../../base/content/utilityOverlay.js */
 /* import-globals-from ../../../toolkit/content/preferencesBindings.js */
 /* import-globals-from in-content/extensionControlled.js */
 
 Preferences.addAll([
+  // Add network.proxy.autoconfig_url before network.proxy.type so they're
+  // both initialized when network.proxy.type initialization triggers a call to
+  // gConnectionsDialog.updateReloadButton().
+  { id: "network.proxy.autoconfig_url", type: "string" },
   { id: "network.proxy.type", type: "int" },
   { id: "network.proxy.http", type: "string" },
   { id: "network.proxy.http_port", type: "int" },
   { id: "network.proxy.ftp", type: "string" },
   { id: "network.proxy.ftp_port", type: "int" },
   { id: "network.proxy.ssl", type: "string" },
   { id: "network.proxy.ssl_port", type: "int" },
   { id: "network.proxy.socks", type: "string" },
   { id: "network.proxy.socks_port", type: "int" },
   { id: "network.proxy.socks_version", type: "int" },
   { id: "network.proxy.socks_remote_dns", type: "bool" },
   { id: "network.proxy.no_proxies_on", type: "string" },
-  { id: "network.proxy.autoconfig_url", type: "string" },
   { id: "network.proxy.share_proxy_settings", type: "bool" },
   { id: "signon.autologin.proxy", type: "bool" },
   { id: "pref.advanced.proxies.disable_button.reload", type: "bool" },
   { id: "network.proxy.backup.ftp", type: "string" },
   { id: "network.proxy.backup.ftp_port", type: "int" },
   { id: "network.proxy.backup.ssl", type: "string" },
   { id: "network.proxy.backup.ssl_port", type: "int" },
   { id: "network.proxy.backup.socks", type: "string" },
--- a/browser/components/preferences/in-content/tests/browser.ini
+++ b/browser/components/preferences/in-content/tests/browser.ini
@@ -43,16 +43,17 @@ support-files =
 [browser_change_app_handler.js]
 skip-if = os != "win" || (os == "win" && os_version == "6.1")
 # This test tests the windows-specific app selection dialog, so can't run on non-Windows.
 # Skip the test on Window 7, see the detail at Bug 1381706.
 [browser_checkspelling.js]
 [browser_clearSiteData.js]
 [browser_connection.js]
 [browser_connection_bug388287.js]
+[browser_connection_bug1445991.js]
 [browser_cookies_exceptions.js]
 [browser_defaultbrowser_alwayscheck.js]
 [browser_healthreport.js]
 skip-if = true || !healthreport # Bug 1185403 for the "true"
 [browser_homepages_filter_aboutpreferences.js]
 [browser_extension_controlled.js]
 [browser_languages_subdialog.js]
 [browser_layersacceleration.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/preferences/in-content/tests/browser_connection_bug1445991.js
@@ -0,0 +1,29 @@
+/* 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() {
+  await SpecialPowers.pushPrefEnv({
+    set: [
+      ["network.proxy.type", 2],
+      ["network.proxy.autoconfig_url", "file:///nonexistent.pac"],
+    ],
+  });
+
+  await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });
+  const connectionURL = "chrome://browser/content/preferences/connection.xul";
+  const promiseDialogLoaded = promiseLoadSubDialog(connectionURL);
+  // eslint-disable-next-line mozilla/no-cpows-in-tests
+  gBrowser.contentDocument.getElementById("connectionSettings").click();
+  const dialog = await promiseDialogLoaded;
+
+  ok(!dialog.document.getElementById("autoReload").disabled,
+     "Reload button is enabled when proxy type is autoconfig");
+
+  dialog.close();
+  gBrowser.removeCurrentTab();
+});