2018-01-08 16:05:03 +03:00
|
|
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#include "DOMPrefs.h"
|
|
|
|
#include "mozilla/Atomics.h"
|
|
|
|
#include "mozilla/Preferences.h"
|
2018-07-26 11:28:39 +03:00
|
|
|
#include "mozilla/StaticPrefs.h"
|
2018-01-08 16:05:03 +03:00
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
|
2018-01-08 16:05:07 +03:00
|
|
|
void
|
|
|
|
DOMPrefs::Initialize()
|
|
|
|
{
|
|
|
|
MOZ_ASSERT(NS_IsMainThread());
|
|
|
|
|
|
|
|
// Let's cache all the values on the main-thread.
|
|
|
|
#if !(defined(DEBUG) || defined(MOZ_ENABLE_JS_DUMP))
|
|
|
|
DOMPrefs::DumpEnabled();
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DOM_PREF(name, pref) DOMPrefs::name();
|
|
|
|
#define DOM_WEBIDL_PREF(name)
|
2018-04-17 21:51:04 +03:00
|
|
|
#define DOM_UINT32_PREF(name, pref, defaultValue) DOMPrefs::name();
|
2018-01-08 16:05:07 +03:00
|
|
|
|
|
|
|
#include "DOMPrefsInternal.h"
|
|
|
|
|
|
|
|
#undef DOM_PREF
|
|
|
|
#undef DOM_WEBIDL_PREF
|
2018-04-17 21:51:04 +03:00
|
|
|
#undef DOM_UINT32_PREF
|
2018-01-08 16:05:07 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
#define DOM_PREF(name, pref) \
|
2018-01-08 16:05:03 +03:00
|
|
|
/* static */ bool \
|
|
|
|
DOMPrefs::name() \
|
|
|
|
{ \
|
|
|
|
static bool initialized = false; \
|
|
|
|
static Atomic<bool> cachedValue; \
|
|
|
|
if (!initialized) { \
|
|
|
|
initialized = true; \
|
|
|
|
Preferences::AddAtomicBoolVarCache(&cachedValue, pref, false); \
|
|
|
|
} \
|
|
|
|
return cachedValue; \
|
|
|
|
}
|
|
|
|
|
2018-01-08 16:05:07 +03:00
|
|
|
#define DOM_WEBIDL_PREF(name) \
|
|
|
|
/* static */ bool \
|
|
|
|
DOMPrefs::name(JSContext* aCx, JSObject* aObj) \
|
|
|
|
{ \
|
|
|
|
return DOMPrefs::name(); \
|
|
|
|
}
|
|
|
|
|
2018-04-17 21:51:04 +03:00
|
|
|
#define DOM_UINT32_PREF(name, pref, defaultValue) \
|
|
|
|
/* static */ uint32_t \
|
|
|
|
DOMPrefs::name() \
|
|
|
|
{ \
|
|
|
|
static bool initialized = false; \
|
|
|
|
static Atomic<uint32_t> cachedValue; \
|
|
|
|
if (!initialized) { \
|
|
|
|
initialized = true; \
|
|
|
|
Preferences::AddAtomicUintVarCache(&cachedValue, pref, defaultValue); \
|
|
|
|
} \
|
|
|
|
return cachedValue; \
|
|
|
|
}
|
|
|
|
|
2018-01-08 16:05:03 +03:00
|
|
|
#if !(defined(DEBUG) || defined(MOZ_ENABLE_JS_DUMP))
|
2018-01-08 16:05:07 +03:00
|
|
|
DOM_PREF(DumpEnabled, "browser.dom.window.dump.enabled")
|
2018-01-08 16:05:03 +03:00
|
|
|
#else
|
|
|
|
/* static */ bool
|
|
|
|
DOMPrefs::DumpEnabled()
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2018-07-26 11:28:39 +03:00
|
|
|
/* static */ bool
|
|
|
|
DOMPrefs::SchedulerTimingEnabled()
|
|
|
|
{
|
|
|
|
return mozilla::StaticPrefs::dom_performance_enable_scheduler_timing();
|
|
|
|
}
|
|
|
|
|
2018-01-08 16:05:07 +03:00
|
|
|
#include "DOMPrefsInternal.h"
|
2018-01-08 16:05:03 +03:00
|
|
|
|
2018-01-08 16:05:07 +03:00
|
|
|
#undef DOM_PREF
|
|
|
|
#undef DOM_WEBIDL_PREF
|
2018-04-17 21:51:04 +03:00
|
|
|
#undef DOM_UINT32_PREF
|
2018-01-08 16:05:03 +03:00
|
|
|
|
|
|
|
} // dom namespace
|
|
|
|
} // mozilla namespace
|