Bug 1264910 - Simplify pref callback register/unregister in nsLayoutUtils. r?dholbert
MozReview-Commit-ID: 39XQHJULIRb
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -7596,16 +7596,34 @@ nsLayoutUtils::SizeOfTextRunsForFrames(n
for (nsFrameList::Enumerator e(childLists.CurrentList());
!e.AtEnd(); e.Next()) {
total += SizeOfTextRunsForFrames(e.get(), aMallocSizeOf, clear);
}
}
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()
{
Preferences::AddUintVarCache(&sFontSizeInflationMaxRatio,
"font.size.inflation.maxRatio");
Preferences::AddUintVarCache(&sFontSizeInflationEmPerLine,
"font.size.inflation.emPerLine");
@@ -7623,52 +7641,34 @@ nsLayoutUtils::Initialize()
"nglayout.debug.invalidation");
Preferences::AddBoolVarCache(&sCSSVariablesEnabled,
"layout.css.variables.enabled");
Preferences::AddBoolVarCache(&sInterruptibleReflowEnabled,
"layout.interruptible-reflow.enabled");
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);
+ }
nsComputedDOMStyle::RegisterPrefChangeCallbacks();
}
/* static */
void
nsLayoutUtils::Shutdown()
{
if (sContentMap) {
delete sContentMap;
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
nsStyleList::Shutdown();
}
/* static */
void