Found what's causing it.
\lib\ui.js
Code: Select all
/**
* Observer waiting for the browsing session to be restored on startup.
*/
function SessionRestoreObserver(/**function*/ callback)
{
sessionRestoreObserver = this;
this.callback = callback;
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
// Just in case, don't wait longer than 5 seconds
this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
this.timer.init(this, 5000, Ci.nsITimer.TYPE_ONE_SHOT);
}
SessionRestoreObserver.prototype =
{
callback: null,
timer: null,
observe: function(subject, topic, data)
{
Services.obs.removeObserver(this, "sessionstore-windows-restored");
sessionRestoreObserver = null;
this.timer.cancel();
this.timer = null;
if (!onShutdown.done)
this.callback();
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference])
}
If you halt restoring the session for 5 or more seconds (with a master password prompt or by any other means), ABP will fail initialize.
On "slow" computers where Firefox takes more then 5 seconds to fully initialize, most probably will result in no ABP icon.
Since master password prompt can be triggered before browser initialized I found it the easiest way reproduce it by forcing master password prompt on startup with "master password+" extension, or "session manager" with enabled encryption for sessions. Then when MP prompt showed, wait 5 seconds before submitting the password.
There should NEVER be such thing as "wait NN seconds before...", there are plenty of events and observers for that.