rem: username = ioService.newURI(host, null, null).username; 
add: user = ioService.newURI(host, null, null).username; if (user == "") { user = "<>"; } 
context: function LoadSignons() {  // loads signons into table  var enumerator = passwordmanager.enumerator;  var count = 0;  while (enumerator.hasMoreElements()) {    var nextPassword;    try {      nextPassword = enumerator.getNext();      nextPassword = nextPassword.QueryInterface(Components.interfaces.nsIPassword);      var host = nextPassword.host;      var user = nextPassword.user;      var rawuser = user;      // if no username supplied, try to parse it out of the url      if (user == "") {        var unused = { };        var ioService = Components.classes["@mozilla.org/network/io-service;1"]                      .getService(Components.interfaces.nsIIOService);        var username;        try {          username = ioService.newURI(host, null, null).username;        } catch(e) {          username = "";        }        if (username != "") {          user = username;        } else {          user = "<>";        }      }      if (encrypted) {        user = kSignonBundle.getFormattedString("encrypted", [user], 1);      }      signons[count] = new Signon(count++, host, user, rawuser);    } catch(e) {      /* An entry is corrupt. Go to next element. */    }  }  signonsTreeView.rowCount = signons.length;  // sort and display the table  signonsTree.treeBoxObject.view = signonsTreeView;  SignonColumnSort('host');  // disable "remove all signons" button if there are no signons  var element = document.getElementById("removeAllSignons");  if (signons.length == 0 || gSelectUserInUse) {    element.setAttribute("disabled","true");  } else {    element.removeAttribute("disabled");  }   return true;}
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/2d75748e851538a51abf05d07efab75fd3bab835/SignonViewer.js/buggy/extensions/wallet/signonviewer/resources/content/SignonViewer.js