var AccountsProgressListener = { onStateChange: function(webProgress, request, stateFlags, status) { const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener; const nsIChannel = Components.interfaces.nsIChannel; if (aStateFlags & nsIWebProgressListener.STATE_START) { progressManager.add(request); } }, init : function(progressManager) { this.progressManager = progressManager; return this; } } var ProgressManager = { add : function(request) { var scud = request.QueryInterface(Components.interfaces.nsIChannel); var lb = document.createElement("label"); lb.setAttribute("value",scud.URI.spec); this.pbox.appendChild(lb); }, init: function() { this.pbox = document.getElementById("progress-box"); var msgwindow = window.arguments[0]; var dshell = msgwindow.rootDocShell; var interfaceRequestor = dshell.QueryInterface(Components.interfaces.nsIInterfaceRequestor); var loadGroup = interfaceRequestor.getInterface(Components.interfaces.nsILoadGroup); var webprogress = dshell.getInterface(Components.interfaces.nsIWebProgress); var reqs = loadGroup.requests; while (reqs.hasMoreElements()) { var req = reqs.getNext(); this.add(req); } var accountsProgressListener = AccountsProgressListener.init(this); webprogress.addProgressListener(accountsProgressListener, Components.interfaces.nsIWebProgress.NOTIFY_ALL); } }