Bug 1473634: Part 2 - Update some callers to use RegisterCallbacks where appropriate. r?njn
MozReview-Commit-ID: IqUmuOeSbNm
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -12552,47 +12552,47 @@ ArrayContainsTable(const nsTArray<nsCStr
return true;
}
}
return false;
}
namespace {
+static const char* gCallbackPrefs[] = {
+ // We only need to register string-typed preferences.
+ "urlclassifier.flashAllowTable",
+ "urlclassifier.flashAllowExceptTable",
+ "urlclassifier.flashTable",
+ "urlclassifier.flashExceptTable",
+ "urlclassifier.flashSubDocTable",
+ "urlclassifier.flashSubDocExceptTable",
+ nullptr,
+};
+
// An object to store all preferences we need for flash blocking feature.
struct PrefStore
{
PrefStore()
: mFlashBlockEnabled(false)
, mPluginsHttpOnly(false)
{
Preferences::AddBoolVarCache(&mFlashBlockEnabled,
"plugins.flashBlock.enabled");
Preferences::AddBoolVarCache(&mPluginsHttpOnly,
"plugins.http_https_only");
- // We only need to register string-typed preferences.
- Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowTable", this);
- Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowExceptTable", this);
- Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashTable", this);
- Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashExceptTable", this);
- Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocTable", this);
- Preferences::RegisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocExceptTable", this);
+ Preferences::RegisterCallbacks(UpdateStringPrefs, gCallbackPrefs, this);
UpdateStringPrefs();
}
~PrefStore()
{
- Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowTable", this);
- Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashAllowExceptTable", this);
- Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashTable", this);
- Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashExceptTable", this);
- Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocTable", this);
- Preferences::UnregisterCallback(UpdateStringPrefs, "urlclassifier.flashSubDocExceptTable", this);
+ Preferences::UnregisterCallbacks(UpdateStringPrefs, gCallbackPrefs, this);
}
void UpdateStringPrefs()
{
Preferences::GetCString("urlclassifier.flashAllowTable", mAllowTables);
Preferences::GetCString("urlclassifier.flashAllowExceptTable", mAllowExceptionsTables);
Preferences::GetCString("urlclassifier.flashTable", mDenyTables);
Preferences::GetCString("urlclassifier.flashExceptTable", mDenyExceptionsTables);
--- a/dom/media/CubebUtils.cpp
+++ b/dom/media/CubebUtils.cpp
@@ -517,60 +517,63 @@ uint32_t GetCubebMSGLatencyInFrames(cube
if (cubeb_get_min_latency(context, params, &latency_frames) != CUBEB_OK) {
NS_WARNING("Could not get minimal latency from cubeb.");
return sCubebMSGLatencyInFrames; // default 512
}
return latency_frames;
#endif
}
+static const char* gInitCallbackPrefs[] = {
+ PREF_VOLUME_SCALE,
+ PREF_CUBEB_LATENCY_PLAYBACK,
+ PREF_CUBEB_LATENCY_MSG,
+ PREF_CUBEB_BACKEND,
+ PREF_CUBEB_FORCE_NULL_CONTEXT,
+ PREF_CUBEB_SANDBOX,
+ PREF_AUDIOIPC_POOL_SIZE,
+ PREF_AUDIOIPC_STACK_SIZE,
+ nullptr,
+};
+static const char* gCallbackPrefs[] = {
+ // We don't want to call the callback on startup, because the pref is the
+ // empty string by default ("", which means "logging disabled"). Because the
+ // logging can be enabled via environment variables (MOZ_LOG="module:5"),
+ // calling this callback on init would immediately re-disable the logging.
+ PREF_CUBEB_FORCE_SAMPLE_RATE,
+ PREF_CUBEB_LOGGING_LEVEL,
+ nullptr,
+};
+
void InitLibrary()
{
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_VOLUME_SCALE);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_CUBEB_LATENCY_PLAYBACK);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_CUBEB_LATENCY_MSG);
- Preferences::RegisterCallback(PrefChanged, PREF_CUBEB_FORCE_SAMPLE_RATE);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_CUBEB_BACKEND);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_CUBEB_FORCE_NULL_CONTEXT);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_CUBEB_SANDBOX);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_AUDIOIPC_POOL_SIZE);
- Preferences::RegisterCallbackAndCall(PrefChanged, PREF_AUDIOIPC_STACK_SIZE);
+ Preferences::RegisterCallbacksAndCall(PrefChanged, gInitCallbackPrefs);
+ Preferences::RegisterCallbacks(PrefChanged, gCallbackPrefs);
+
if (MOZ_LOG_TEST(gCubebLog, LogLevel::Verbose)) {
cubeb_set_log_callback(CUBEB_LOG_VERBOSE, CubebLogCallback);
} else if (MOZ_LOG_TEST(gCubebLog, LogLevel::Error)) {
cubeb_set_log_callback(CUBEB_LOG_NORMAL, CubebLogCallback);
}
- // We don't want to call the callback on startup, because the pref is the
- // empty string by default ("", which means "logging disabled"). Because the
- // logging can be enabled via environment variables (MOZ_LOG="module:5"),
- // calling this callback on init would immediately re-disable the logging.
- Preferences::RegisterCallback(PrefChanged, PREF_CUBEB_LOGGING_LEVEL);
+
#ifndef MOZ_WIDGET_ANDROID
AbstractThread::MainThread()->Dispatch(
NS_NewRunnableFunction("CubebUtils::InitLibrary", &InitBrandName));
#endif
#ifdef MOZ_CUBEB_REMOTING
if (sCubebSandbox && XRE_IsContentProcess()) {
InitAudioIPCConnection();
}
#endif
}
void ShutdownLibrary()
{
- Preferences::UnregisterCallback(PrefChanged, PREF_VOLUME_SCALE);
- Preferences::UnregisterCallback(PrefChanged, PREF_AUDIOIPC_STACK_SIZE);
- Preferences::UnregisterCallback(PrefChanged, PREF_AUDIOIPC_POOL_SIZE);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_SANDBOX);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_BACKEND);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_LATENCY_PLAYBACK);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_FORCE_SAMPLE_RATE);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_LATENCY_MSG);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_LOGGING_LEVEL);
- Preferences::UnregisterCallback(PrefChanged, PREF_CUBEB_FORCE_NULL_CONTEXT);
+ Preferences::UnregisterCallbacks(PrefChanged, gInitCallbackPrefs);
+ Preferences::UnregisterCallbacks(PrefChanged, gCallbackPrefs);
StaticMutexAutoLock lock(sMutex);
if (sCubebContext) {
cubeb_destroy(sCubebContext);
sCubebContext = nullptr;
}
sBrandName = nullptr;
sCubebBackendName = nullptr;
--- a/layout/base/nsPresContext.cpp
+++ b/layout/base/nsPresContext.cpp
@@ -286,75 +286,55 @@ nsPresContext::nsPresContext(nsIDocument
mTextPerf = new gfxTextPerfMetrics();
}
if (Preferences::GetBool(GFX_MISSING_FONTS_NOTIFY_PREF)) {
mMissingFonts = new gfxMissingFontRecorder();
}
}
+static const char* gExactCallbackPrefs[] = {
+ "browser.underline_anchors",
+ "browser.anchor_color",
+ "browser.active_color",
+ "browser.visited_color",
+ "image.animation_mode",
+ "dom.send_after_paint_to_content",
+ "layout.css.dpi",
+ "layout.css.devPixelsPerPx",
+ "nglayout.debug.paint_flashing",
+ "nglayout.debug.paint_flashing_chrome",
+ kUseStandinsForNativeColors,
+ "intl.accept_languages",
+ nullptr,
+};
+
+static const char* gPrefixCallbackPrefs[] = {
+ "font.",
+ "browser.display.",
+ "bidi.",
+ "gfx.font_rendering.",
+ nullptr,
+};
+
void
nsPresContext::Destroy()
{
if (mEventManager) {
// unclear if these are needed, but can't hurt
mEventManager->NotifyDestroyPresContext(this);
mEventManager->SetPresContext(nullptr);
mEventManager = nullptr;
}
// Unregister preference callbacks
- Preferences::UnregisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "font.",
- this);
- Preferences::UnregisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "browser.display.",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "browser.underline_anchors",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "browser.anchor_color",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "browser.active_color",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "browser.visited_color",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "image.animation_mode",
- this);
- Preferences::UnregisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "bidi.",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "dom.send_after_paint_to_content",
- this);
- Preferences::UnregisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "gfx.font_rendering.",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "layout.css.dpi",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "layout.css.devPixelsPerPx",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "nglayout.debug.paint_flashing",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "nglayout.debug.paint_flashing_chrome",
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- kUseStandinsForNativeColors,
- this);
- Preferences::UnregisterCallback(nsPresContext::PrefChangedCallback,
- "intl.accept_languages",
- this);
+ Preferences::UnregisterPrefixCallbacks(nsPresContext::PrefChangedCallback,
+ gPrefixCallbackPrefs, this);
+ Preferences::UnregisterCallbacks(nsPresContext::PrefChangedCallback,
+ gExactCallbackPrefs, this);
mRefreshDriver = nullptr;
}
nsPresContext::~nsPresContext()
{
MOZ_ASSERT(!mShell, "Presshell forgot to clear our mShell pointer");
DetachShell();
@@ -878,64 +858,20 @@ nsPresContext::Init(nsDeviceContext* aDe
}
if (!mRefreshDriver) {
mRefreshDriver = new nsRefreshDriver(this);
}
}
// Register callbacks so we're notified when the preferences change
- Preferences::RegisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "font.",
- this);
- Preferences::RegisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "browser.display.",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "browser.underline_anchors",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "browser.anchor_color",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "browser.active_color",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "browser.visited_color",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "image.animation_mode",
- this);
- Preferences::RegisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "bidi.",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "dom.send_after_paint_to_content",
- this);
- Preferences::RegisterPrefixCallback(nsPresContext::PrefChangedCallback,
- "gfx.font_rendering.",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "layout.css.dpi",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "layout.css.devPixelsPerPx",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "nglayout.debug.paint_flashing",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "nglayout.debug.paint_flashing_chrome",
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- kUseStandinsForNativeColors,
- this);
- Preferences::RegisterCallback(nsPresContext::PrefChangedCallback,
- "intl.accept_languages",
- this);
+ Preferences::RegisterPrefixCallbacks(nsPresContext::PrefChangedCallback,
+ gPrefixCallbackPrefs, this);
+ Preferences::RegisterCallbacks(nsPresContext::PrefChangedCallback,
+ gExactCallbackPrefs, this);
nsresult rv = mEventManager->Init();
NS_ENSURE_SUCCESS(rv, rv);
mEventManager->SetPresContext(this);
#ifdef DEBUG
mInitialized = true;