rem: var url = uri.QueryInterface(Components.interfaces.nsIURL); 
add: var url = uri.QueryInterface(nsIURL); 
context:   _getDataFromDragSession: function (aDragSession, aPosition)  {    var fileData = { };    // if this fails we do not have valid data to drop    try {      var xfer = Components.classes["@mozilla.org/widget/transferable;1"]                           .createInstance(Components.interfaces.nsITransferable);      xfer.addDataFlavor("text/x-moz-url");      xfer.addDataFlavor("application/x-moz-file", "nsIFile");      aDragSession.getData(xfer, aPosition);      var flavour = { }, data = { }, length = { };      xfer.getAnyTransferData(flavour, data, length);      var selectedFlavour = this.getSupportedFlavours().flavourTable[flavour.value];      var xferData = new FlavourData(data.value, length.value, selectedFlavour);      var fileURL = transferUtils.retrieveURLFromData(xferData.data,                                                      xferData.flavour.contentType);      fileData.fileURL = fileURL;      var uri = this._ioServ.newURI(fileURL, null, null);      var url = uri.QueryInterface(Components.interfaces.nsIURL);      fileData.fileName = url.fileName;      switch (url.fileExtension) {        case "xpi":          fileData.type = nsIUpdateItem.TYPE_EXTENSION;          break;        case "jar":          fileData.type = nsIUpdateItem.TYPE_THEME;          break;        default:          return null;      }    }    catch (e) {      return null;    }    return fileData;  },
meta: 8395	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/8395/e70cc1872d3fa7a9c82c261be41c9d7d67b9d270/extensions.js/clean/toolkit/mozapps/extensions/content/extensions.js