mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 13:51:41 +00:00
Bug 1345294 - nsIPrefBranch should have methods to get/set unicode strings, r=bsmedberg.
This commit is contained in:
parent
2ce3d7d34a
commit
881a50703b
@ -99,7 +99,7 @@ interface nsIPrefBranch : nsISupports
|
||||
float getFloatPrefXPCOM(in string aPrefName);
|
||||
|
||||
/**
|
||||
* Called to get the state of an individual string preference.
|
||||
* Called to get the state of an individual ascii string preference.
|
||||
*
|
||||
* @param aPrefName The string preference to retrieve.
|
||||
* @param aDefaultValue The string to return if the preference is not set.
|
||||
@ -114,7 +114,7 @@ interface nsIPrefBranch : nsISupports
|
||||
string getCharPrefXPCOM(in string aPrefName);
|
||||
|
||||
/**
|
||||
* Called to set the state of an individual string preference.
|
||||
* Called to set the state of an individual ascii string preference.
|
||||
*
|
||||
* @param aPrefName The string preference to set.
|
||||
* @param aValue The string value to set the preference to.
|
||||
@ -126,6 +126,33 @@ interface nsIPrefBranch : nsISupports
|
||||
*/
|
||||
void setCharPref(in string aPrefName, in string aValue);
|
||||
|
||||
/**
|
||||
* Called to get the state of an individual unicode string preference.
|
||||
*
|
||||
* @param aPrefName The string preference to retrieve.
|
||||
* @param aDefaultValue The string to return if the preference is not set.
|
||||
*
|
||||
* @return string The value of the requested string preference.
|
||||
*
|
||||
* @see setStringPref
|
||||
*/
|
||||
[optional_argc]
|
||||
AUTF8String getStringPref(in string aPrefName,
|
||||
[optional] in AUTF8String aDefaultValue);
|
||||
|
||||
/**
|
||||
* Called to set the state of an individual unicode string preference.
|
||||
*
|
||||
* @param aPrefName The string preference to set.
|
||||
* @param aValue The string value to set the preference to.
|
||||
*
|
||||
* @throws Error if setting failed or the preference has a default
|
||||
value of a type other than string.
|
||||
*
|
||||
* @see getStringPref
|
||||
*/
|
||||
void setStringPref(in string aPrefName, in AUTF8String aValue);
|
||||
|
||||
/**
|
||||
* Called to get the state of an individual integer preference.
|
||||
*
|
||||
@ -164,6 +191,7 @@ interface nsIPrefBranch : nsISupports
|
||||
* represents. Interfaces currently supported are:
|
||||
* - nsIFile
|
||||
* - nsISupportsString (UniChar)
|
||||
* (deprecated; see getStringPref)
|
||||
* - nsIPrefLocalizedString (Localized UniChar)
|
||||
* @param aValue The XPCOM object into which to the complex preference
|
||||
* value should be retrieved.
|
||||
@ -185,6 +213,7 @@ interface nsIPrefBranch : nsISupports
|
||||
* represents. Interfaces currently supported are:
|
||||
* - nsIFile
|
||||
* - nsISupportsString (UniChar)
|
||||
* (deprecated; see setStringPref)
|
||||
* - nsIPrefLocalizedString (Localized UniChar)
|
||||
* @param aValue The XPCOM object from which to set the complex preference
|
||||
* value.
|
||||
|
@ -242,6 +242,36 @@ nsresult nsPrefBranch::SetCharPrefInternal(const char *aPrefName, const char *aV
|
||||
return PREF_SetCharPref(pref, aValue, mIsDefault);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::GetStringPref(const char *aPrefName,
|
||||
const nsACString& aDefaultValue,
|
||||
uint8_t _argc,
|
||||
nsACString& _retval)
|
||||
{
|
||||
nsXPIDLCString utf8String;
|
||||
nsresult rv = GetCharPref(aPrefName, getter_Copies(utf8String));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
_retval = utf8String;
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (_argc == 1) {
|
||||
_retval = aDefaultValue;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::SetStringPref(const char *aPrefName, const nsACString& aValue)
|
||||
{
|
||||
nsresult rv = CheckSanityOfStringLength(aPrefName, aValue);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
return SetCharPrefInternal(aPrefName, PromiseFlatCString(aValue).get());
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsPrefBranch::GetIntPrefWithDefault(const char *aPrefName,
|
||||
int32_t aDefaultValue,
|
||||
uint8_t _argc, int32_t *_retval)
|
||||
@ -425,6 +455,10 @@ nsresult nsPrefBranch::CheckSanityOfStringLength(const char* aPrefName, const ns
|
||||
return CheckSanityOfStringLength(aPrefName, aValue.Length());
|
||||
}
|
||||
|
||||
nsresult nsPrefBranch::CheckSanityOfStringLength(const char* aPrefName, const nsACString& aValue) {
|
||||
return CheckSanityOfStringLength(aPrefName, aValue.Length());
|
||||
}
|
||||
|
||||
nsresult nsPrefBranch::CheckSanityOfStringLength(const char* aPrefName, const uint32_t aLength) {
|
||||
if (aLength > MAX_PREF_LENGTH) {
|
||||
return NS_ERROR_ILLEGAL_VALUE;
|
||||
|
@ -212,6 +212,7 @@ protected:
|
||||
nsresult SetCharPrefInternal(const char *aPrefName, const char *aValue);
|
||||
// Reject strings that are more than 1Mb, warn if strings are more than 16kb
|
||||
nsresult CheckSanityOfStringLength(const char* aPrefName, const nsAString& aValue);
|
||||
nsresult CheckSanityOfStringLength(const char* aPrefName, const nsACString& aValue);
|
||||
nsresult CheckSanityOfStringLength(const char* aPrefName, const char* aValue);
|
||||
nsresult CheckSanityOfStringLength(const char* aPrefName, const uint32_t aLength);
|
||||
void RemoveExpiredCallback(PrefCallback *aCallback);
|
||||
|
@ -28,6 +28,22 @@ function run_test() {
|
||||
strictEqual(ps.getCharPref(prefName), "foo");
|
||||
strictEqual(ps.getCharPref(prefName, "string"), "foo");
|
||||
|
||||
prefName = "test.default.values.string";
|
||||
do_check_throws(function() { ps.getCharPref(prefName); },
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
strictEqual(ps.getStringPref(prefName, ""), "");
|
||||
strictEqual(ps.getStringPref(prefName, "éèçàê€"), "éèçàê€");
|
||||
ps.setStringPref(prefName, "éèçàê€");
|
||||
strictEqual(ps.getStringPref(prefName), "éèçàê€");
|
||||
strictEqual(ps.getStringPref(prefName, "string"), "éèçàê€");
|
||||
strictEqual(ps.getStringPref(prefName),
|
||||
ps.getComplexValue(prefName, Ci.nsISupportsString).data);
|
||||
let str = Cc["@mozilla.org/supports-string;1"].
|
||||
createInstance(Ci.nsISupportsString);
|
||||
str.data = "ù€ÚîœïŒëøÇ“";
|
||||
ps.setComplexValue(prefName, Ci.nsISupportsString, str);
|
||||
strictEqual(ps.getStringPref(prefName), "ù€ÚîœïŒëøÇ“");
|
||||
|
||||
prefName = "test.default.values.float";
|
||||
do_check_throws(function() { ps.getFloatPref(prefName); },
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
|
Loading…
Reference in New Issue
Block a user