зеркало из https://github.com/mozilla/gecko-dev.git
Updates and bug fixes based on feedback of initial prefservice and prefbranch feedback.
This commit is contained in:
Родитель
b70c603830
Коммит
9564dfc0a3
|
@ -28,16 +28,16 @@
|
|||
[scriptable, uuid(56c35506-f14b-11d3-99d3-ddbfac2ccf65)]
|
||||
interface nsIPrefBranch : nsISupports
|
||||
{
|
||||
const long ePrefInvalid = 0;
|
||||
const long ePrefLocked = 1;
|
||||
const long ePrefUserset = 2;
|
||||
const long ePrefConfig = 4;
|
||||
const long ePrefRemote = 8;
|
||||
const long ePrefLilocal = 16;
|
||||
const long ePrefString = 32;
|
||||
const long ePrefInt = 64;
|
||||
const long ePrefBool = 128;
|
||||
const long ePrefValuetypeMask = (ePrefString | ePrefInt | ePrefBool);
|
||||
const long PREF_INVALID = 0;
|
||||
const long PREF_LOCKED = 1;
|
||||
const long PREF_USER_SET = 2;
|
||||
const long PREF_CONFIG = 4;
|
||||
const long PREF_REMOTE = 8;
|
||||
const long PREF_LI_LOCAL = 16;
|
||||
const long PREF_STRING = 32;
|
||||
const long PREF_INT = 64;
|
||||
const long PREF_BOOL = 128;
|
||||
const long PREF_VALUE_TYPE_MASK = (PREF_STRING | PREF_INT | PREF_BOOL);
|
||||
|
||||
/*
|
||||
* the root of this branch, such as "browser."
|
||||
|
@ -77,14 +77,6 @@ interface nsIPrefBranch : nsISupports
|
|||
* branch-level operations
|
||||
*/
|
||||
|
||||
/*
|
||||
* clearBranch
|
||||
*
|
||||
* clears all user preferences starting at the given preference prefix
|
||||
* pass in null or "" to clear this branch
|
||||
*/
|
||||
void clearBranch(in string aStartingAt);
|
||||
|
||||
/*
|
||||
* deleteBranch
|
||||
*
|
||||
|
@ -106,43 +98,20 @@ interface nsIPrefBranch : nsISupports
|
|||
out unsigned long aCount,
|
||||
[array, size_is(aCount), retval] out string aChildArray);
|
||||
|
||||
|
||||
/*
|
||||
* Listeners
|
||||
* resetBranch
|
||||
*
|
||||
* clears all user preferences starting at the given preference prefix
|
||||
* pass in null or "" to clear this branch
|
||||
*/
|
||||
|
||||
/*
|
||||
* The observers have their |Observe| methods called with
|
||||
* ([the observer], "nsPref:changed", [pref name]).
|
||||
*/
|
||||
void addObserver(in string aDomain, in nsIObserver aObserver);
|
||||
void removeObserver(in string aDomain, in nsIObserver aObserver);
|
||||
void resetBranch(in string aStartingAt);
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* nsIPrefLocalizedString is simply a wrapper for nsISupportsWString so we can have a unique
|
||||
* identifier to distinguish between requests for normal wstrings and localized wstrings
|
||||
*/
|
||||
[scriptable, uuid(ae419e24-1dd1-11b2-b39a-d3e5e7073802)]
|
||||
interface nsIPrefLocalizedString : nsISupports
|
||||
{
|
||||
attribute wstring data;
|
||||
wstring toString();
|
||||
|
||||
// do not include space for null termination in |length|. It is handled
|
||||
// internally. |length| is in characters, not in bytes.
|
||||
void setDataWithLength(in unsigned long length,
|
||||
[size_is(length)] in wstring data);
|
||||
};
|
||||
|
||||
%{C++
|
||||
|
||||
#define NS_PREFBRANCH_CONTRACTID "@mozilla.org/preferencesbranch;1"
|
||||
#define NS_PREFBRANCH_CLASSNAME "Preferences Branch"
|
||||
|
||||
#define NS_SUPPORTS_PREFLOCALIZEDSTRING_CONTRACTID "@mozilla.org/supports-preflocalizedstring;1"
|
||||
#define NS_SUPPORTS_PREFLOCALIZEDSTRING_CLASSNAME "Supports PrefLocalizedString"
|
||||
|
||||
%}
|
||||
|
|
|
@ -30,11 +30,11 @@
|
|||
interface nsIPrefService : nsISupports
|
||||
{
|
||||
/*
|
||||
* ReadCFGFile
|
||||
* readConfigFile
|
||||
*
|
||||
* identify and read the configuration (.cfg) file
|
||||
*/
|
||||
void readCFGFile();
|
||||
void readConfigFile();
|
||||
|
||||
/*
|
||||
* readUserPrefs
|
||||
|
@ -75,6 +75,14 @@ interface nsIPrefService : nsISupports
|
|||
|
||||
%{C++
|
||||
|
||||
#define NS_PREFSERVICE_CID \
|
||||
{ /* {1cd91b88-1dd2-11b2-92e1-ed22ed298000} */ \
|
||||
0x1cd91b88, \
|
||||
0x1dd2, \
|
||||
0x11b2, \
|
||||
{ 0x92, 0xe1, 0xed, 0x22, 0xed, 0x29, 0x80, 0x00 } \
|
||||
}
|
||||
|
||||
#define NS_PREFSERVICE_CONTRACTID "@mozilla.org/preferences-service;1"
|
||||
#define NS_PREFSERVICE_CLASSNAME "Preferences Server"
|
||||
|
||||
|
|
|
@ -76,7 +76,9 @@ static nsresult _convertRes(int res)
|
|||
|
||||
#pragma mark -
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsPrefBranch, nsIPrefBranch)
|
||||
/*
|
||||
* Constructor/Destructor
|
||||
*/
|
||||
|
||||
nsPrefBranch::nsPrefBranch(const char *aPrefRoot, PRBool aDefaultBranch)
|
||||
: mObservers(nsnull)
|
||||
|
@ -118,6 +120,25 @@ nsPrefBranch::~nsPrefBranch()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nsISupports Implementation
|
||||
*/
|
||||
|
||||
NS_IMPL_THREADSAFE_ADDREF(nsPrefBranch)
|
||||
NS_IMPL_THREADSAFE_RELEASE(nsPrefBranch)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsPrefBranch)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIPrefBranch)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIPrefBranch)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIPrefBranchInternal)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
|
||||
/*
|
||||
* nsIPrefBranch Implementation
|
||||
*/
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::GetRoot(char * *aRoot)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRoot);
|
||||
|
@ -135,53 +156,99 @@ NS_IMETHODIMP nsPrefBranch::GetPrefType(const char *aPrefName, PRInt32 *_retval)
|
|||
|
||||
NS_IMETHODIMP nsPrefBranch::GetBoolPref(const char *aPrefName, PRBool *_retval)
|
||||
{
|
||||
return _convertRes(PREF_GetBoolPref(getPrefName(aPrefName), _retval, mIsDefault));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = _convertRes(PREF_GetBoolPref(pref, _retval, mIsDefault));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::SetBoolPref(const char *aPrefName, PRInt32 aValue)
|
||||
{
|
||||
if (PR_FALSE == mIsDefault) {
|
||||
return _convertRes(PREF_SetBoolPref(getPrefName(aPrefName), aValue));
|
||||
} else {
|
||||
return _convertRes(PREF_SetDefaultBoolPref(getPrefName(aPrefName), aValue));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
if (PR_FALSE == mIsDefault) {
|
||||
rv = _convertRes(PREF_SetBoolPref(pref, aValue));
|
||||
} else {
|
||||
rv = _convertRes(PREF_SetDefaultBoolPref(pref, aValue));
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::GetCharPref(const char *aPrefName, char **_retval)
|
||||
{
|
||||
return _convertRes(PREF_CopyCharPref(getPrefName(aPrefName), _retval, mIsDefault));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = _convertRes(PREF_CopyCharPref(pref, _retval, mIsDefault));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::SetCharPref(const char *aPrefName, const char *aValue)
|
||||
{
|
||||
if (PR_FALSE == mIsDefault) {
|
||||
return _convertRes(PREF_SetCharPref(getPrefName(aPrefName), aValue));
|
||||
} else {
|
||||
return _convertRes(PREF_SetDefaultCharPref(getPrefName(aPrefName), aValue));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
if (PR_FALSE == mIsDefault) {
|
||||
rv = _convertRes(PREF_SetCharPref(pref, aValue));
|
||||
} else {
|
||||
rv = _convertRes(PREF_SetDefaultCharPref(pref, aValue));
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::GetIntPref(const char *aPrefName, PRInt32 *_retval)
|
||||
{
|
||||
return _convertRes(PREF_GetIntPref(getPrefName(aPrefName), _retval, mIsDefault));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = _convertRes(PREF_GetIntPref(pref, _retval, mIsDefault));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::SetIntPref(const char *aPrefName, PRInt32 aValue)
|
||||
{
|
||||
if (PR_FALSE == mIsDefault) {
|
||||
return _convertRes(PREF_SetIntPref(getPrefName(aPrefName), aValue));
|
||||
} else {
|
||||
return _convertRes(PREF_SetDefaultIntPref(getPrefName(aPrefName), aValue));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
if (PR_FALSE == mIsDefault) {
|
||||
rv = _convertRes(PREF_SetIntPref(pref, aValue));
|
||||
} else {
|
||||
rv = _convertRes(PREF_SetDefaultIntPref(pref, aValue));
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::GetComplexValue(const char *aPrefName, const nsIID & aType, void * *_retval)
|
||||
{
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
nsXPIDLCString utf8String;
|
||||
|
||||
// if we can't get the pref, there's no point in being here
|
||||
rv = GetCharPref(getPrefName(aPrefName), getter_Copies(utf8String));
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = GetCharPref(pref, getter_Copies(utf8String));
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -260,7 +327,14 @@ NS_IMETHODIMP nsPrefBranch::GetComplexValue(const char *aPrefName, const nsIID &
|
|||
|
||||
NS_IMETHODIMP nsPrefBranch::SetComplexValue(const char *aPrefName, const nsIID & aType, nsISupports *aValue)
|
||||
{
|
||||
nsresult rv;
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
// if we can't get the pref, there's no point in being here
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (aType.Equals(NS_GET_IID(nsILocalFile))) {
|
||||
nsCOMPtr<nsILocalFile> file = do_QueryInterface(aValue);
|
||||
|
@ -268,7 +342,7 @@ NS_IMETHODIMP nsPrefBranch::SetComplexValue(const char *aPrefName, const nsIID &
|
|||
|
||||
rv = file->GetPersistentDescriptor(getter_Copies(descriptorString));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = SetCharPref(getPrefName(aPrefName), descriptorString);
|
||||
rv = SetCharPref(pref, descriptorString);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
@ -281,7 +355,7 @@ NS_IMETHODIMP nsPrefBranch::SetComplexValue(const char *aPrefName, const nsIID &
|
|||
|
||||
rv = theString->GetData(getter_Copies(wideString));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = SetCharPref(getPrefName(aPrefName), NS_ConvertUCS2toUTF8(wideString).get());
|
||||
rv = SetCharPref(pref, NS_ConvertUCS2toUTF8(wideString).get());
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
@ -295,7 +369,7 @@ NS_IMETHODIMP nsPrefBranch::SetComplexValue(const char *aPrefName, const nsIID &
|
|||
|
||||
rv = theString->GetData(getter_Copies(wideString));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = SetCharPref(getPrefName(aPrefName), NS_ConvertUCS2toUTF8(wideString).get());
|
||||
rv = SetCharPref(pref, NS_ConvertUCS2toUTF8(wideString).get());
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
|
@ -308,7 +382,7 @@ NS_IMETHODIMP nsPrefBranch::SetComplexValue(const char *aPrefName, const nsIID &
|
|||
|
||||
rv = file->GetPersistentDescriptorString(getter_Copies(descriptorString));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = SetCharPref(getPrefName(aPrefName), descriptorString);
|
||||
rv = SetCharPref(pref, descriptorString);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
@ -319,31 +393,58 @@ NS_IMETHODIMP nsPrefBranch::SetComplexValue(const char *aPrefName, const nsIID &
|
|||
|
||||
NS_IMETHODIMP nsPrefBranch::ClearUserPref(const char *aPrefName)
|
||||
{
|
||||
return _convertRes(PREF_ClearUserPref(getPrefName(aPrefName)));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = _convertRes(PREF_ClearUserPref(pref));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::LockPref(const char *aPrefName)
|
||||
{
|
||||
return _convertRes(PREF_LockPref(getPrefName(aPrefName)));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = _convertRes(PREF_LockPref(pref));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::PrefIsLocked(const char *aPrefName, PRBool *_retval)
|
||||
{
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
NS_ENSURE_ARG_POINTER(_retval);
|
||||
|
||||
*_retval = PREF_PrefIsLocked(getPrefName(aPrefName));
|
||||
return NS_OK;
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
*_retval = PREF_PrefIsLocked(pref);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::UnlockPref(const char *aPrefName)
|
||||
{
|
||||
return _convertRes(pref_UnlockPref(getPrefName(aPrefName)));
|
||||
const char *pref = getPrefName(aPrefName);
|
||||
nsresult rv;
|
||||
|
||||
rv = QueryObserver(pref);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = _convertRes(pref_UnlockPref(pref));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
/* void clearBranch (in string startingAt); */
|
||||
NS_IMETHODIMP nsPrefBranch::ClearBranch(const char *aStartingAt)
|
||||
/* void resetBranch (in string startingAt); */
|
||||
NS_IMETHODIMP nsPrefBranch::ResetBranch(const char *aStartingAt)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::DeleteBranch(const char *aStartingAt)
|
||||
|
|
|
@ -24,16 +24,19 @@
|
|||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsIPrefBranchInternal.h"
|
||||
#include "nsIPrefLocalizedString.h"
|
||||
#include "nsISupportsArray.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsString.h"
|
||||
#include "nsVoidArray.h"
|
||||
|
||||
class nsPrefBranch : public nsIPrefBranch
|
||||
class nsPrefBranch : public nsIPrefBranchInternal
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIPREFBRANCH
|
||||
NS_DECL_NSIPREFBRANCHINTERNAL
|
||||
|
||||
nsPrefBranch(const char *aPrefRoot, PRBool aDefaultBranch);
|
||||
virtual ~nsPrefBranch();
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
|
||||
#include "nsPrefService.h"
|
||||
#include "jsapi.h"
|
||||
#include "nsIGenericFactory.h"
|
||||
#include "nsIObserverService.h"
|
||||
#include "nsIProfileChangeStatus.h"
|
||||
#include "nsISignatureVerifier.h"
|
||||
|
@ -65,9 +64,12 @@ static nsresult savePrefFile(nsIFile* aFile);
|
|||
|
||||
|
||||
|
||||
NS_IMPL_ISUPPORTS3(nsPrefService, nsIPrefService, nsIObserver, nsIPrefBranch);
|
||||
/*
|
||||
* Constructor/Destructor
|
||||
*/
|
||||
|
||||
nsPrefService::nsPrefService()
|
||||
: mCurrentFile(nsnull)
|
||||
{
|
||||
nsPrefBranch *rootBranch;
|
||||
|
||||
|
@ -93,11 +95,31 @@ nsPrefService::~nsPrefService()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* nsISupports Implementation
|
||||
*/
|
||||
|
||||
NS_IMPL_THREADSAFE_ADDREF(nsPrefService)
|
||||
NS_IMPL_THREADSAFE_RELEASE(nsPrefService)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsPrefService)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIPrefService)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIPrefService)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIObserver)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIPrefBranch)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
|
||||
/*
|
||||
* nsIPrefService Implementation
|
||||
*/
|
||||
|
||||
NS_IMETHODIMP nsPrefService::Init()
|
||||
{
|
||||
nsresult rv;
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (PREF_Init(nsnull) == NS_OK) {
|
||||
if (PREF_Init(nsnull) == PR_TRUE) {
|
||||
NS_WITH_SERVICE(nsIObserverService, observerService, NS_OBSERVERSERVICE_CONTRACTID, &rv);
|
||||
if (observerService) {
|
||||
// Our refcnt must be > 0 when we call this, or we'll get deleted!
|
||||
|
@ -134,7 +156,7 @@ NS_IMETHODIMP nsPrefService::Observe(nsISupports *aSubject, const PRUnichar *aTo
|
|||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefService::ReadCFGFile()
|
||||
NS_IMETHODIMP nsPrefService::ReadConfigFile()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUint32 fileNameLen;
|
||||
|
@ -263,6 +285,51 @@ NS_IMETHODIMP nsPrefService::GetDefaultBranch(const char *aPrefRoot, nsIPrefBran
|
|||
|
||||
#pragma mark -
|
||||
|
||||
nsresult nsPrefService::useDefaultPrefFile()
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIFile> aFile;
|
||||
|
||||
// Anything which calls NS_InitXPCOM will have this
|
||||
rv = NS_GetSpecialDirectory(NS_APP_PREFS_50_FILE, getter_AddRefs(aFile));
|
||||
|
||||
if (!aFile) {
|
||||
// We know we have XPCOM directory services, but we might not have a provider which
|
||||
// knows about NS_APP_PREFS_50_FILE. Put the file in NS_XPCOM_CURRENT_PROCESS_DIR.
|
||||
rv = NS_GetSpecialDirectory(NS_XPCOM_CURRENT_PROCESS_DIR, getter_AddRefs(aFile));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
rv = aFile->Append("default_prefs.js");
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
|
||||
rv = ReadUserPrefs(aFile);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
// need to save the prefs now
|
||||
rv = SavePrefFile(aFile);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult nsPrefService::useUserPrefFile()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsCOMPtr<nsIFile> aFile;
|
||||
|
||||
static const char* userFiles[] = {"user.js"};
|
||||
|
||||
rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, getter_AddRefs(aFile));
|
||||
if (NS_SUCCEEDED(rv) && aFile) {
|
||||
rv = aFile->Append(userFiles[0]);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = openPrefFile(mCurrentFile, PR_FALSE, PR_FALSE, PR_FALSE, PR_TRUE);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
static nsresult openPrefFile(nsIFile* aFile, PRBool aIsErrorFatal, PRBool aVerifyHash,
|
||||
PRBool aIsGlobalContext, PRBool aSkipFirstLine)
|
||||
{
|
||||
|
@ -689,4 +756,3 @@ extern "C" JSRuntime* PREF_GetJSRuntime()
|
|||
return nsnull;
|
||||
}
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsPrefService, Init)
|
Загрузка…
Ссылка в новой задаче