Open Bug 448547 Opened 16 years ago Updated 16 years ago

Proxy menu does not update radio button when proxy type changes

Categories

(SeaMonkey :: Preferences, defect)

SeaMonkey 1.1 Branch
PowerPC
macOS
defect
Not set
normal

Tracking

(Not tracked)

People

(Reporter: benc, Unassigned)

Details

(I did a dupe check before filing...)

Seamonkey 1.1.11, Mac OS X 10.5.

STEPS

Start w/ proxy = none (direct), manual config empty, autoconfig empty.

The menu will have "none" selected, and "auto URL" and "manual" will be disabled.

Go into the prefs, and enter some manual entries and a PAC URL. The set the proxy mode to "auto discover"

Click "ok" to save changes.

Then go to menu.

The menu items will all be enabled, but the proxy type will not be updated.

This seems to fail over 50% of the time. When it works, it seems to keep working. When it fails, the radio button never updates.

However, all the changes to enable|disable items seem to work all the time.

If you open a new window, the menu is always correct.

I've looked at code, and I think it might have something to do with the way we pull prefs values and update the UI element:

http://mxr.mozilla.org/seamonkey/source/suite/common/utilityOverlay.js

116   // If no proxy is configured, disable the menuitems.
117   // Checking for proxy manual settings.
118   var proxyManuallyConfigured = false;
119   for (var i = 0; i < kProxyManual.length; i++) {
120     if (GetStringPref(kProxyManual[i]) != "") {
121       proxyManuallyConfigured = true;
122       break;
123     }
124   }
125 
126   if (proxyManuallyConfigured && !proxyLocked) {
127     networkProxyManual.removeAttribute("disabled");
128   }
129   else {
130     networkProxyManual.setAttribute("disabled", "true");
131   }
132 
133   //Checking for proxy PAC settings.
134   var proxyAutoConfigured = false;
135   if (GetStringPref("network.proxy.autoconfig_url") != "")
136     proxyAutoConfigured = true;
137 
138   if (proxyAutoConfigured && !proxyLocked) {
139     networkProxyPac.removeAttribute("disabled");
140   }
141   else {
142     networkProxyPac.setAttribute("disabled", "true");
143   }
144 
145   var networkProxyType;
146   try {
147     networkProxyType = prefBranch.getIntPref("network.proxy.type");
148   } catch(e) {}
149 
150   // The pref value 3 for network.proxy.type is unused to maintain
151   // backwards compatibility. Treat 3 equally to 0. See bug 115720.
152   var networkProxyStatus = [networkProxyNo, networkProxyManual, networkProxyPac,
153                             networkProxyNo, networkProxyWpad];
154   networkProxyStatus[networkProxyType].setAttribute("checked", "true");
155 }

157 function setProxyTypeUI()
158 {
159   var panel = document.getElementById("offline-status");
160   if (!panel)
161     return;
162 
163   var prefService = Components.classes["@mozilla.org/preferences-service;1"];
164   prefService = prefService.getService(Components.interfaces.nsIPrefService);
165   var prefBranch = prefService.getBranch(null);
166 
167   try {
168     var networkProxyType = prefBranch.getIntPref("network.proxy.type");
169   } catch(e) {}
170 
171   var onlineTooltip = "onlineTooltip" + networkProxyType;
172   var bundle = srGetStrBundle("chrome://communicator/locale/utilityOverlay.properties");
173   panel.setAttribute("tooltiptext", bundle.GetStringFromName(onlineTooltip));
174 }

581 var proxyTypeObserver = {
582   observe: function(subject, topic, state) {
583     // sanity checks
584     var ioService = Components.classes[kIOServiceProgID]
585                               .getService(Components.interfaces.nsIIOService);
586     if (state == "network.proxy.type" && !ioService.offline)
587       setProxyTypeUI();
588   }
589 }
590
Fyi, the prefs are being migrated to to toolkit pref system (trunk). The proxy panel is bug 444157.
Component: XP Apps: GUI Features → Preferences
QA Contact: guifeatures → prefs
(In reply to comment #0)
> (I did a dupe check before filing...)
> 
> Seamonkey 1.1.11, Mac OS X 10.5.
> 
> STEPS
> 
> Start w/ proxy = none (direct), manual config empty, autoconfig empty.
> 
> The menu will have "none" selected, and "auto URL" and "manual" will be
> disabled.
> 
> Go into the prefs, and enter some manual entries and a PAC URL. The set the
> proxy mode to "auto discover"
> 
> Click "ok" to save changes.
> 
> Then go to menu.
Which menu is this?
Probably the menu when right-clicking on the Online/Offline symbol in the status bar is meant here.
Happens on Linux and Windows XP too -> All/All
OS: Mac OS X → All
Hardware: Macintosh → All
Actually it's something else I'm seeing on Linux and Windows -> Mac/OS X
OS: All → Mac OS X
Hardware: All → Macintosh
Version: unspecified → SeaMonkey 1.1 Branch
You need to log in before you can comment on or make changes to this bug.