bug 284089 - ask every time pref is ignored, Anbo Motohiko <amotohiko_mozillafirebird@yahoo.co.jp>, r=me, a=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@175422 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -526,12 +526,58 @@ function getTargetFile(aFpP, aSkipPrompt)
|
||||
// to place every download - this will force the prompt to ask the user
|
||||
// where to put saved files.
|
||||
var dir = null;
|
||||
try {
|
||||
dir = prefs.getComplexValue("defaultFolder", nsILocalFile);
|
||||
var useDownloadDir = prefs.getBoolPref("useDownloadDir");
|
||||
|
||||
function getSpecialFolderKey(aFolderType)
|
||||
{
|
||||
if (aFolderType == "Desktop")
|
||||
return "Desk";
|
||||
|
||||
if (aFolderType != "Downloads")
|
||||
throw "ASSERTION FAILED: folder type should be 'Desktop' or 'Downloads'";
|
||||
|
||||
#ifdef XP_WIN
|
||||
return "Pers";
|
||||
#else
|
||||
#ifdef XP_MACOSX
|
||||
return "UsrDocs";
|
||||
#else
|
||||
return "Home";
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
catch (e) { }
|
||||
|
||||
if (!aSkipPrompt || !dir) {
|
||||
|
||||
function getDownloadsFolder(aFolder)
|
||||
{
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Components.interfaces.nsIProperties);
|
||||
|
||||
var dir = fileLocator.get(getSpecialFolderKey(aFolder), Components.interfaces.nsILocalFile);
|
||||
|
||||
var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
|
||||
.getService(Components.interfaces.nsIStringBundleService);
|
||||
bundle = bundle.createBundle("chrome://mozapps/locale/downloads/unknownContentType.properties");
|
||||
|
||||
var description = bundle.GetStringFromName("myDownloads");
|
||||
if (aFolder != "Desktop")
|
||||
dir.append(description);
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
switch (prefs.getIntPref("folderList")) {
|
||||
case 0:
|
||||
dir = getDownloadsFolder("Desktop")
|
||||
break;
|
||||
case 1:
|
||||
dir = getDownloadsFolder("Downloads");
|
||||
break;
|
||||
case 2:
|
||||
dir = prefs.getComplexValue("dir", nsILocalFile);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!aSkipPrompt || !useDownloadDir || !dir) {
|
||||
// If we're asking the user where to save the file, root the Save As...
|
||||
// dialog on they place they last picked.
|
||||
try {
|
||||
@@ -539,26 +585,10 @@ function getTargetFile(aFpP, aSkipPrompt)
|
||||
}
|
||||
catch (e) {
|
||||
// No default download location. Default to desktop.
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties);
|
||||
|
||||
function getDesktopKey()
|
||||
{
|
||||
#ifdef XP_WIN
|
||||
return "DeskP";
|
||||
#endif
|
||||
#ifdef XP_MACOSX
|
||||
return "UsrDsk";
|
||||
#endif
|
||||
#ifdef XP_OS2
|
||||
return "Desk";
|
||||
#endif
|
||||
#ifdef XP_BEOS
|
||||
return "Desk";
|
||||
#endif
|
||||
return "Home";
|
||||
}
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Components.interfaces.nsIProperties);
|
||||
|
||||
dir = fileLocator.get(getDesktopKey(), Components.interfaces.nsILocalFile);
|
||||
dir = fileLocator.get(getSpecialFolderKey("Desktop"), nsILocalFile);
|
||||
}
|
||||
|
||||
var fp = makeFilePicker();
|
||||
@@ -590,13 +620,6 @@ function getTargetFile(aFpP, aSkipPrompt)
|
||||
|
||||
if (fp.show() == Components.interfaces.nsIFilePicker.returnCancel || !fp.file)
|
||||
return false;
|
||||
|
||||
var useDownloadDir = false;
|
||||
try {
|
||||
useDownloadDir = prefs.getBoolPref("useDownloadDir");
|
||||
}
|
||||
catch(ex) {
|
||||
}
|
||||
|
||||
var directory = fp.file.parent.QueryInterface(nsILocalFile);
|
||||
prefs.setComplexValue("lastDir", nsILocalFile, directory);
|
||||
@@ -610,10 +633,6 @@ function getTargetFile(aFpP, aSkipPrompt)
|
||||
prefs.setIntPref("save_converter_index", aFpP.saveAsType);
|
||||
}
|
||||
else {
|
||||
// ben 07/31/2003:
|
||||
// We don't nullcheck dir here because dir should never be null if we get here
|
||||
// unless something is badly wrong, and if it is, I want to know about it in
|
||||
// bugs.
|
||||
dir.append(getNormalizedLeafName(aFpP.fileInfo.fileName,
|
||||
aFpP.fileInfo.fileExt));
|
||||
var file = dir;
|
||||
|
||||
@@ -127,72 +127,58 @@ nsUnknownContentTypeDialog.prototype = {
|
||||
// If the user is always downloading to the same location, the default download
|
||||
// folder is stored in preferences. If a value is found stored, use that
|
||||
// automatically and don't ask via a dialog.
|
||||
const kDownloadFolderPref = "browser.download.defaultFolder";
|
||||
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
||||
try {
|
||||
result = prefs.getComplexValue(kDownloadFolderPref, Components.interfaces.nsILocalFile);
|
||||
result = this.validateLeafName(result, aDefaultFile, aSuggestedFileExtension);
|
||||
}
|
||||
catch (e) {
|
||||
// If we get here, it's because we have a new profile and the user has never configured download
|
||||
// options, so "browser.download.defaultFolder" is not set yet. If the default is autodownload,
|
||||
// we need to discover the default save location.
|
||||
var autodownload = prefs.getBoolPref("browser.download.useDownloadDir");
|
||||
if (autodownload) {
|
||||
function getSpecialFolderKey(aFolderType)
|
||||
{
|
||||
if (aFolderType == "Desktop")
|
||||
return "Desk";
|
||||
var autodownload = prefs.getBoolPref("browser.download.useDownloadDir");
|
||||
if (autodownload) {
|
||||
function getSpecialFolderKey(aFolderType)
|
||||
{
|
||||
if (aFolderType == "Desktop")
|
||||
return "Desk";
|
||||
|
||||
if (aFolderType != "Downloads")
|
||||
throw "ASSERTION FAILED: folder type should be 'Desktop' or 'Downloads'";
|
||||
if (aFolderType != "Downloads")
|
||||
throw "ASSERTION FAILED: folder type should be 'Desktop' or 'Downloads'";
|
||||
|
||||
#ifdef XP_WIN
|
||||
return "Pers";
|
||||
return "Pers";
|
||||
#else
|
||||
#ifdef XP_MACOSX
|
||||
return "UsrDocs";
|
||||
return "UsrDocs";
|
||||
#else
|
||||
return "Home";
|
||||
return "Home";
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
function getDownloadsFolder(aFolder)
|
||||
{
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties);
|
||||
|
||||
var dir = fileLocator.get(getSpecialFolderKey(aFolder), Components.interfaces.nsILocalFile);
|
||||
|
||||
var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
|
||||
bundle = bundle.createBundle("chrome://mozapps/locale/downloads/unknownContentType.properties");
|
||||
|
||||
var description = bundle.GetStringFromName("myDownloads");
|
||||
if (aFolder != "Desktop")
|
||||
dir.append(description);
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
var defaultFolder = null;
|
||||
switch (prefs.getIntPref("browser.download.folderList")) {
|
||||
case 0:
|
||||
defaultFolder = getDownloadsFolder("Desktop")
|
||||
break;
|
||||
case 1:
|
||||
defaultFolder = getDownloadsFolder("Downloads");
|
||||
break;
|
||||
case 2:
|
||||
defaultFolder = prefs.getComplexValue("browser.download.dir", Components.interfaces.nsILocalFile);
|
||||
break;
|
||||
}
|
||||
|
||||
// While we're here, set the pref too so that we don't keep coming back into this less efficient
|
||||
// code block.
|
||||
prefs.setComplexValue("browser.download.defaultFolder", Components.interfaces.nsILocalFile, defaultFolder);
|
||||
|
||||
result = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExtension);
|
||||
}
|
||||
|
||||
function getDownloadsFolder(aFolder)
|
||||
{
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties);
|
||||
|
||||
var dir = fileLocator.get(getSpecialFolderKey(aFolder), Components.interfaces.nsILocalFile);
|
||||
|
||||
var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Components.interfaces.nsIStringBundleService);
|
||||
bundle = bundle.createBundle("chrome://mozapps/locale/downloads/unknownContentType.properties");
|
||||
|
||||
var description = bundle.GetStringFromName("myDownloads");
|
||||
if (aFolder != "Desktop")
|
||||
dir.append(description);
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
var defaultFolder = null;
|
||||
switch (prefs.getIntPref("browser.download.folderList")) {
|
||||
case 0:
|
||||
defaultFolder = getDownloadsFolder("Desktop");
|
||||
break;
|
||||
case 1:
|
||||
defaultFolder = getDownloadsFolder("Downloads");
|
||||
break;
|
||||
case 2:
|
||||
defaultFolder = prefs.getComplexValue("browser.download.dir", Components.interfaces.nsILocalFile);
|
||||
break;
|
||||
}
|
||||
|
||||
result = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExtension);
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
@@ -259,6 +245,9 @@ nsUnknownContentTypeDialog.prototype = {
|
||||
|
||||
validateLeafName: function (aLocalFile, aLeafName, aFileExt)
|
||||
{
|
||||
if (!aLocalFile)
|
||||
return null;
|
||||
|
||||
if (aLeafName == "")
|
||||
aLeafName = "unnamed" + (aFileExt ? "." + aFileExt : "");
|
||||
aLocalFile.append(aLeafName);
|
||||
|
||||
Reference in New Issue
Block a user