Bug 1418156 - Overhaul GetPrefValueFromEntry. r=glandium
This patch:
- partially inlines GetPrefValueFromEntry() at its two call sites, to avoid
repeating the kind check;
- renames it as AssignPrefValueToDomPrefValue().
MozReview-Commit-ID: BUBk3ML6h5O
--- a/modules/libpref/Preferences.cpp
+++ b/modules/libpref/Preferences.cpp
@@ -427,60 +427,57 @@ pref_EntryHasAdvisablySizedValues(PrefHa
return false;
}
}
return true;
}
static void
-GetPrefValueFromEntry(PrefHashEntry* aPref,
- dom::PrefSetting* aSetting,
- PrefValueKind aKind)
+AssignPrefValueToDomPrefValue(PrefType aType,
+ PrefValue* aValue,
+ dom::PrefValue* aDomValue)
{
- PrefValue* value;
- dom::PrefValue* settingValue;
- if (aKind == PrefValueKind::User) {
- value = &aPref->mUserValue;
- aSetting->userValue() = dom::PrefValue();
- settingValue = &aSetting->userValue().get_PrefValue();
- } else {
- value = &aPref->mDefaultValue;
- aSetting->defaultValue() = dom::PrefValue();
- settingValue = &aSetting->defaultValue().get_PrefValue();
- }
-
- switch (aPref->Type()) {
+ switch (aType) {
case PrefType::String:
- *settingValue = nsDependentCString(value->mStringVal);
+ *aDomValue = nsDependentCString(aValue->mStringVal);
return;
+
case PrefType::Int:
- *settingValue = value->mIntVal;
+ *aDomValue = aValue->mIntVal;
return;
+
case PrefType::Bool:
- *settingValue = !!value->mBoolVal;
+ *aDomValue = !!aValue->mBoolVal;
return;
+
default:
MOZ_CRASH();
}
}
static void
pref_GetPrefFromEntry(PrefHashEntry* aPref, dom::PrefSetting* aSetting)
{
aSetting->name() = aPref->mKey;
if (aPref->HasDefaultValue()) {
- GetPrefValueFromEntry(aPref, aSetting, PrefValueKind::Default);
+ aSetting->defaultValue() = dom::PrefValue();
+ AssignPrefValueToDomPrefValue(aPref->Type(),
+ &aPref->mDefaultValue,
+ &aSetting->defaultValue().get_PrefValue());
} else {
aSetting->defaultValue() = null_t();
}
if (aPref->HasUserValue()) {
- GetPrefValueFromEntry(aPref, aSetting, PrefValueKind::User);
+ aSetting->userValue() = dom::PrefValue();
+ AssignPrefValueToDomPrefValue(aPref->Type(),
+ &aPref->mUserValue,
+ &aSetting->userValue().get_PrefValue());
} else {
aSetting->userValue() = null_t();
}
MOZ_ASSERT(aSetting->defaultValue().type() == dom::MaybePrefValue::Tnull_t ||
aSetting->userValue().type() == dom::MaybePrefValue::Tnull_t ||
(aSetting->defaultValue().get_PrefValue().type() ==
aSetting->userValue().get_PrefValue().type()));