rem: if (title) {  title = title.replace(/\"/g, ""); title = TrimString(title); title = title.replace(/[ \.\\@\/:]/g, "_"); if (title.length > 0) return title + extension; }   return GetString("untitled") + extension; 
add:  return GenerateValidFilename(title, extension) || GetString("untitled") + extension; 
context: function GetSuggestedFileName(aDocumentURLString, aMIMEType){  var extension = GetExtensionBasedOnMimeType(aMIMEType);  if (extension)    extension = "." + extension;  // check for existing file name we can use  if (aDocumentURLString.length >= 0 && !IsUrlAboutBlank(aDocumentURLString))  {    var docURI = null;    try {      var ioService = GetIOService();      docURI = ioService.newURI(aDocumentURLString, GetCurrentEditor().documentCharacterSet, null);      docURI = docURI.QueryInterface(Components.interfaces.nsIURL);      // grab the file name      var url = docURI.fileBaseName;      if (url)        return url+extension;    } catch(e) {}  }   // check if there is a title we can use  var title = GetDocumentTitle();  if (title) // we have a title; let's see if it's usable  {    // clean up the title to make it a usable filename    title = title.replace(/\"/g, "");  // Strip out quote character: "    title = TrimString(title); // trim whitespace from beginning and end    title = title.replace(/[ \.\\@\/:]/g, "_");  //Replace "bad" filename characters with "_"    if (title.length > 0)      return title + extension;  }  // if we still don't have a file name, let's just go with "untitled"  return GetString("untitled") + extension;}
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/f40d86059a0c12073e9931c2dd571bc33e238d9b/ComposerCommands.js/clean/editor/ui/composer/content/ComposerCommands.js