rem: this.isImage.removeAttribute('disabled'); 
context:   onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus)  {      //ignore local/resource:/chrome: files    if (aStatus == NS_NET_STATUS_READ_FROM || aStatus == NS_NET_STATUS_WROTE_TO)      return;    const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener;    const nsIChannel = Components.interfaces.nsIChannel;    var ctype;    if (aStateFlags & nsIWebProgressListener.STATE_START) {      if (aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK) {        // Remember when loading commenced.        this.startTime = (new Date()).getTime();        if (aRequest && aWebProgress.DOMWindow == content)          this.startDocumentLoad(aRequest);        // Turn the throbber on.        this.throbberElement.setAttribute("busy", true);        // XXX: These need to be based on window activity...        this.stopButton.disabled = false;        this.stopMenu.removeAttribute('disabled');        this.stopContext.removeAttribute('disabled');        this.isImage.removeAttribute('disabled');        // Initialize the progress stuff...        this.useRealProgressFlag = false;        this.totalRequests = 0;        this.finishedRequests = 0;      }      if (aStateFlags & nsIWebProgressListener.STATE_IS_REQUEST) {        this.totalRequests += 1;      }    }    else if (aStateFlags & nsIWebProgressListener.STATE_STOP) {      if (aStateFlags & nsIWebProgressListener.STATE_IS_REQUEST) {        this.finishedRequests += 1;        if (!this.useRealProgressFlag)          this.onProgressChange(null, null, 0, 0, this.finishedRequests, this.totalRequests);      }      if (aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK) {        if (aRequest) {          if (aWebProgress.DOMWindow == content)            this.endDocumentLoad(aRequest, aStatus);          var location = aRequest.QueryInterface(nsIChannel).URI.spec;          var msg = "";          if (location != "about:blank") {            // Record page loading time.            var elapsed = ((new Date()).getTime() - this.startTime) / 1000;            msg = gNavigatorBundle.getString("nv_done");            msg = msg.replace(/%elapsed%/, elapsed);          }          this.status = "";          this.setDefaultStatus(msg);          try {            ctype = aRequest.QueryInterface(nsIChannel).contentType;            if (ctype.match(/^image\//))              this.isImage.setAttribute('disabled', 'true');          }          catch (e) {}        }        // Turn the progress meter and throbber off.        this.statusMeter.value = 0;  // be sure to clear the progress bar        this.throbberElement.removeAttribute("busy");        // XXX: These need to be based on window activity...        // XXXjag: <command id="cmd_stop"/> ?        this.stopButton.disabled = true;        this.stopMenu.setAttribute('disabled', 'true');        this.stopContext.setAttribute('disabled', 'true');      }    }    else if (aStateFlags & nsIWebProgressListener.STATE_TRANSFERRING) {      if (aStateFlags & nsIWebProgressListener.STATE_IS_DOCUMENT) {        ctype = aRequest.QueryInterface(nsIChannel).contentType;        if (ctype != "text/html")          this.useRealProgressFlag = true;      }      if (aStateFlags & nsIWebProgressListener.STATE_IS_REQUEST) {        if (!this.useRealProgressFlag)          this.onProgressChange(null, null, 0, 0, this.finishedRequests, this.totalRequests);      }    }  },
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/e005fcf0413ab546e3a121165363858eb82ee858/nsBrowserStatusHandler.js/clean/xpfe/browser/resources/content/nsBrowserStatusHandler.js