Bug 1264910 - Simplify pref callback register/unregister in nsLayoutUtils. r=dholbert

MozReview-Commit-ID: 39XQHJULIRb

--HG--
extra : source : d210a7a5cb6d46e7546f68c7813b053333373cdc
extra : amend_source : 60628ebad0e6dd318d55bd9eb960117c290306cc
This commit is contained in:
Xidorn Quan 2016-04-18 19:11:15 +10:00
parent 07b6f24132
commit 6694da2b67

View File

@ -7635,6 +7635,24 @@ nsLayoutUtils::SizeOfTextRunsForFrames(nsIFrame* aFrame,
return total;
}
struct PrefCallbacks
{
const char* name;
PrefChangedFunc func;
};
static const PrefCallbacks kPrefCallbacks[] = {
{ GRID_ENABLED_PREF_NAME,
GridEnabledPrefChangeCallback },
{ WEBKIT_PREFIXES_ENABLED_PREF_NAME,
WebkitPrefixEnabledPrefChangeCallback },
{ TEXT_ALIGN_UNSAFE_ENABLED_PREF_NAME,
TextAlignUnsafeEnabledPrefChangeCallback },
{ DISPLAY_CONTENTS_ENABLED_PREF_NAME,
DisplayContentsEnabledPrefChangeCallback },
{ FLOAT_LOGICAL_VALUES_ENABLED_PREF_NAME,
FloatLogicalValuesEnabledPrefChangeCallback },
};
/* static */
void
nsLayoutUtils::Initialize()
@ -7662,30 +7680,13 @@ nsLayoutUtils::Initialize()
Preferences::AddBoolVarCache(&sSVGTransformBoxEnabled,
"svg.transform-box.enabled");
Preferences::RegisterCallback(GridEnabledPrefChangeCallback,
GRID_ENABLED_PREF_NAME);
GridEnabledPrefChangeCallback(GRID_ENABLED_PREF_NAME, nullptr);
Preferences::RegisterCallback(WebkitPrefixEnabledPrefChangeCallback,
WEBKIT_PREFIXES_ENABLED_PREF_NAME);
WebkitPrefixEnabledPrefChangeCallback(WEBKIT_PREFIXES_ENABLED_PREF_NAME,
nullptr);
Preferences::RegisterCallback(TextAlignUnsafeEnabledPrefChangeCallback,
TEXT_ALIGN_UNSAFE_ENABLED_PREF_NAME);
Preferences::RegisterCallback(DisplayContentsEnabledPrefChangeCallback,
DISPLAY_CONTENTS_ENABLED_PREF_NAME);
DisplayContentsEnabledPrefChangeCallback(DISPLAY_CONTENTS_ENABLED_PREF_NAME,
nullptr);
TextAlignUnsafeEnabledPrefChangeCallback(TEXT_ALIGN_UNSAFE_ENABLED_PREF_NAME,
nullptr);
Preferences::RegisterCallback(FloatLogicalValuesEnabledPrefChangeCallback,
FLOAT_LOGICAL_VALUES_ENABLED_PREF_NAME);
FloatLogicalValuesEnabledPrefChangeCallback(FLOAT_LOGICAL_VALUES_ENABLED_PREF_NAME,
nullptr);
for (auto& callback : kPrefCallbacks) {
Preferences::RegisterCallbackAndCall(callback.func, callback.name);
}
Preferences::RegisterCallback(BackgroundClipTextEnabledPrefChangeCallback,
BG_CLIP_TEXT_ENABLED_PREF_NAME);
BackgroundClipTextEnabledPrefChangeCallback(BG_CLIP_TEXT_ENABLED_PREF_NAME,
nullptr);
nsComputedDOMStyle::RegisterPrefChangeCallbacks();
}
@ -7698,10 +7699,9 @@ nsLayoutUtils::Shutdown()
sContentMap = nullptr;
}
Preferences::UnregisterCallback(GridEnabledPrefChangeCallback,
GRID_ENABLED_PREF_NAME);
Preferences::UnregisterCallback(WebkitPrefixEnabledPrefChangeCallback,
WEBKIT_PREFIXES_ENABLED_PREF_NAME);
for (auto& callback : kPrefCallbacks) {
Preferences::UnregisterCallback(callback.func, callback.name);
}
nsComputedDOMStyle::UnregisterPrefChangeCallbacks();
// so the cached initial quotes array doesn't appear to be a leak