Bug 1416638 - Introduce PrefValueKind. r=glandium
This is nicer than a bool for tracking the Default vs. User distinction, and it
replaces the Preferences.cpp-only WhichValue type.
MozReview-Commit-ID: 8CrdDN2vBJQ
--- a/modules/libpref/Preferences.cpp
+++ b/modules/libpref/Preferences.cpp
@@ -449,28 +449,22 @@ PREF_SetBoolPref(const char* aPrefName,
{
PrefValue pref;
pref.mBoolVal = aValue;
return pref_SetPref(
aPrefName, pref, PrefType::Bool, aSetDefault ? kPrefSetDefault : 0);
}
-enum WhichValue
-{
- DEFAULT_VALUE,
- USER_VALUE
-};
-
static nsresult
SetPrefValue(const char* aPrefName,
const dom::PrefValue& aValue,
- WhichValue aWhich)
+ PrefValueKind aKind)
{
- bool setDefault = (aWhich == DEFAULT_VALUE);
+ bool setDefault = (aKind == PrefValueKind::Default);
switch (aValue.type()) {
case dom::PrefValue::TnsCString:
return PREF_SetCStringPref(aPrefName, aValue.get_nsCString(), setDefault);
case dom::PrefValue::Tint32_t:
return PREF_SetIntPref(aPrefName, aValue.get_int32_t(), setDefault);
@@ -549,21 +543,21 @@ pref_EntryHasAdvisablySizedValues(PrefHa
}
return true;
}
static void
GetPrefValueFromEntry(PrefHashEntry* aHashEntry,
dom::PrefSetting* aPref,
- WhichValue aWhich)
+ PrefValueKind aKind)
{
PrefValue* value;
dom::PrefValue* settingValue;
- if (aWhich == USER_VALUE) {
+ if (aKind == PrefValueKind::User) {
value = &aHashEntry->mUserPref;
aPref->userValue() = dom::PrefValue();
settingValue = &aPref->userValue().get_PrefValue();
} else {
value = &aHashEntry->mDefaultPref;
aPref->defaultValue() = dom::PrefValue();
settingValue = &aPref->defaultValue().get_PrefValue();
}
@@ -584,23 +578,23 @@ GetPrefValueFromEntry(PrefHashEntry* aHa
}
static void
pref_GetPrefFromEntry(PrefHashEntry* aHashEntry, dom::PrefSetting* aPref)
{
aPref->name() = aHashEntry->mKey;
if (aHashEntry->mPrefFlags.HasDefault()) {
- GetPrefValueFromEntry(aHashEntry, aPref, DEFAULT_VALUE);
+ GetPrefValueFromEntry(aHashEntry, aPref, PrefValueKind::Default);
} else {
aPref->defaultValue() = null_t();
}
if (aHashEntry->mPrefFlags.HasUserValue()) {
- GetPrefValueFromEntry(aHashEntry, aPref, USER_VALUE);
+ GetPrefValueFromEntry(aHashEntry, aPref, PrefValueKind::User);
} else {
aPref->userValue() = null_t();
}
MOZ_ASSERT(aPref->defaultValue().type() == dom::MaybePrefValue::Tnull_t ||
aPref->userValue().type() == dom::MaybePrefValue::Tnull_t ||
(aPref->defaultValue().get_PrefValue().type() ==
aPref->userValue().get_PrefValue().type()));
@@ -3851,25 +3845,25 @@ Preferences::SavePrefFile(nsIFile* aFile
void
Preferences::SetPreference(const PrefSetting& aPref)
{
const char* prefName = aPref.name().get();
const dom::MaybePrefValue& defaultValue = aPref.defaultValue();
const dom::MaybePrefValue& userValue = aPref.userValue();
if (defaultValue.type() == dom::MaybePrefValue::TPrefValue) {
- nsresult rv =
- SetPrefValue(prefName, defaultValue.get_PrefValue(), DEFAULT_VALUE);
+ nsresult rv = SetPrefValue(
+ prefName, defaultValue.get_PrefValue(), PrefValueKind::Default);
if (NS_FAILED(rv)) {
return;
}
}
if (userValue.type() == dom::MaybePrefValue::TPrefValue) {
- SetPrefValue(prefName, userValue.get_PrefValue(), USER_VALUE);
+ SetPrefValue(prefName, userValue.get_PrefValue(), PrefValueKind::User);
} else {
PREF_ClearUserPref(prefName);
}
// NB: we should never try to clear a default value, that doesn't
// make sense
}
--- a/modules/libpref/Preferences.h
+++ b/modules/libpref/Preferences.h
@@ -44,16 +44,22 @@ enum pref_initPhase
#endif
namespace mozilla {
namespace dom {
class PrefSetting;
} // namespace dom
+enum class PrefValueKind
+{
+ Default,
+ User
+};
+
class Preferences final
: public nsIPrefService
, public nsIObserver
, public nsIPrefBranch
, public nsSupportsWeakReference
{
public:
typedef mozilla::dom::PrefSetting PrefSetting;