зеркало из https://github.com/mozilla/gecko-dev.git
Bug 74247 - Fizzilla should use $HOME/Library/Mozilla to store profiles. r=pinkerton/sr=sfraser/a=asa
This commit is contained in:
Родитель
d52f557406
Коммит
fdd2288a50
|
@ -35,6 +35,7 @@
|
|||
#include <Folders.h>
|
||||
#include <Script.h>
|
||||
#include <Processes.h>
|
||||
#include <Gestalt.h>
|
||||
#include "nsILocalFileMac.h"
|
||||
#endif
|
||||
#if defined(XP_OS2)
|
||||
|
@ -254,7 +255,11 @@ NS_METHOD nsAppFileLocationProvider::GetProductDirectory(nsILocalFile **aLocalFi
|
|||
#if defined(XP_MAC)
|
||||
NS_WITH_SERVICE(nsIProperties, directoryService, NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = directoryService->Get(NS_MAC_DOCUMENTS_DIR, NS_GET_IID(nsILocalFile), getter_AddRefs(localDir));
|
||||
OSErr err;
|
||||
long response;
|
||||
err = ::Gestalt(gestaltSystemVersion, &response);
|
||||
const char *prop = (!err && response >= 0x00001000) ? NS_MAC_USER_LIB_DIR : NS_MAC_DOCUMENTS_DIR;
|
||||
rv = directoryService->Get(prop, NS_GET_IID(nsILocalFile), getter_AddRefs(localDir));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
#elif defined(XP_OS2)
|
||||
NS_WITH_SERVICE(nsIProperties, directoryService, NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
|
||||
|
|
|
@ -302,6 +302,7 @@ nsIAtom* nsDirectoryService::sDocumentsDirectory = nsnull;
|
|||
nsIAtom* nsDirectoryService::sInternetSearchDirectory = nsnull;
|
||||
nsIAtom* nsDirectoryService::sHomeDirectory = nsnull;
|
||||
nsIAtom* nsDirectoryService::sDefaultDownloadDirectory = nsnull;
|
||||
nsIAtom* nsDirectoryService::sUserLibDirectory = nsnull;
|
||||
#elif defined (XP_WIN)
|
||||
nsIAtom* nsDirectoryService::sSystemDirectory = nsnull;
|
||||
nsIAtom* nsDirectoryService::sWindowsDirectory = nsnull;
|
||||
|
@ -400,6 +401,7 @@ nsDirectoryService::Init()
|
|||
nsDirectoryService::sInternetSearchDirectory = NS_NewAtom(NS_MAC_INTERNET_SEARCH_DIR);
|
||||
nsDirectoryService::sHomeDirectory = NS_NewAtom(NS_MAC_HOME_DIR);
|
||||
nsDirectoryService::sDefaultDownloadDirectory = NS_NewAtom(NS_MAC_DEFAULT_DOWNLOAD_DIR);
|
||||
nsDirectoryService::sUserLibDirectory = NS_NewAtom(NS_MAC_USER_LIB_DIR);
|
||||
#elif defined (XP_WIN)
|
||||
nsDirectoryService::sSystemDirectory = NS_NewAtom(NS_OS_SYSTEM_DIR);
|
||||
nsDirectoryService::sWindowsDirectory = NS_NewAtom(NS_WIN_WINDOWS_DIR);
|
||||
|
@ -479,6 +481,7 @@ nsDirectoryService::~nsDirectoryService()
|
|||
NS_IF_RELEASE(nsDirectoryService::sDocumentsDirectory);
|
||||
NS_IF_RELEASE(nsDirectoryService::sInternetSearchDirectory);
|
||||
NS_IF_RELEASE(nsDirectoryService::sHomeDirectory);
|
||||
NS_IF_RELEASE(nsDirectoryService::sUserLibDirectory);
|
||||
#elif defined (XP_WIN)
|
||||
NS_IF_RELEASE(nsDirectoryService::sSystemDirectory);
|
||||
NS_IF_RELEASE(nsDirectoryService::sWindowsDirectory);
|
||||
|
@ -817,6 +820,11 @@ nsDirectoryService::GetFile(const char *prop, PRBool *persistent, nsIFile **_ret
|
|||
{
|
||||
nsSpecialSystemDirectory fileSpec(nsSpecialSystemDirectory::Mac_DefaultDownloadDirectory);
|
||||
rv = NS_FileSpecToIFile(&fileSpec, getter_AddRefs(localFile));
|
||||
}
|
||||
else if (inAtom == nsDirectoryService::sUserLibDirectory)
|
||||
{
|
||||
nsSpecialSystemDirectory fileSpec(nsSpecialSystemDirectory::Mac_UserLibDirectory);
|
||||
rv = NS_FileSpecToIFile(&fileSpec, getter_AddRefs(localFile));
|
||||
}
|
||||
#elif defined (XP_WIN)
|
||||
else if (inAtom == nsDirectoryService::sSystemDirectory)
|
||||
|
|
|
@ -82,6 +82,7 @@ private:
|
|||
static nsIAtom *sInternetSearchDirectory;
|
||||
static nsIAtom *sHomeDirectory;
|
||||
static nsIAtom *sDefaultDownloadDirectory;
|
||||
static nsIAtom *sUserLibDirectory;
|
||||
#elif defined (XP_WIN)
|
||||
static nsIAtom *sSystemDirectory;
|
||||
static nsIAtom *sWindowsDirectory;
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
#define NS_MAC_INTERNET_SEARCH_DIR "ISrch"
|
||||
#define NS_MAC_HOME_DIR "Home"
|
||||
#define NS_MAC_DEFAULT_DOWNLOAD_DIR "DfltDwnld"
|
||||
#define NS_MAC_USER_LIB_DIR "ULibDir" // Only available under OS X
|
||||
#elif defined (XP_WIN)
|
||||
#define NS_WIN_WINDOWS_DIR "WinD"
|
||||
#define NS_WIN_HOME_DIR "Home"
|
||||
|
|
|
@ -69,6 +69,14 @@
|
|||
#include "nsHashtable.h"
|
||||
#include "prlog.h"
|
||||
|
||||
#if defined (XP_MAC) && UNIVERSAL_INTERFACES_VERSION < 0x0340
|
||||
enum {
|
||||
kUserDomain = -32763,
|
||||
kDomainLibraryFolderType = FOUR_CHAR_CODE('dlib')
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
class SystemDirectoriesKey : public nsHashKey {
|
||||
public:
|
||||
|
||||
|
@ -599,6 +607,19 @@ void nsSpecialSystemDirectory::operator = (SystemDirectories aSystemSystemDirect
|
|||
case Mac_DefaultDownloadDirectory:
|
||||
*this = kDefaultDownloadFolderType;
|
||||
break;
|
||||
|
||||
case Mac_UserLibDirectory:
|
||||
{
|
||||
OSErr err;
|
||||
short vRefNum;
|
||||
long dirID;
|
||||
err = ::FindFolder(kUserDomain, kDomainLibraryFolderType, true, &vRefNum, &dirID);
|
||||
if (!err) {
|
||||
err = ::FSMakeFSSpec(vRefNum, dirID, "\p", &mSpec);
|
||||
}
|
||||
mError = NS_FILE_RESULT(err);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined (XP_WIN)
|
||||
|
|
|
@ -70,6 +70,7 @@ class NS_COM nsSpecialSystemDirectory : public nsFileSpec
|
|||
, Mac_DocumentsDirectory = 111
|
||||
, Mac_InternetSearchDirectory = 112
|
||||
, Mac_DefaultDownloadDirectory = 113
|
||||
, Mac_UserLibDirectory = 114
|
||||
|
||||
, Win_SystemDirectory = 201
|
||||
, Win_WindowsDirectory = 202
|
||||
|
|
Загрузка…
Ссылка в новой задаче