Merge m-i to m-c, a=merge

MozReview-Commit-ID: 6YHoSP3exdY
This commit is contained in:
Phil Ringnalda 2016-10-08 16:48:33 -07:00
commit 080c63d412
94 changed files with 247 additions and 178 deletions

View File

@ -1011,7 +1011,7 @@ pref("dom.activities.developer_mode_only", "import-app");
pref("dom.serviceWorkers.enabled", false);
pref("dom.push.enabled", false);
#if defined(RELEASE_BUILD)
#if defined(RELEASE_OR_BETA)
// Bug 1278848: Enable service worker notifications on release B2G once
// they're ready.
pref("dom.webnotifications.serviceworker.enabled", false);

View File

@ -122,7 +122,7 @@ pref("app.update.auto", true);
pref("app.update.silent", false);
// If set to true, the hamburger button will show badges for update events.
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
pref("app.update.badge", true);
#else
pref("app.update.badge", false);
@ -328,7 +328,7 @@ pref("browser.download.folderList", 1);
pref("browser.download.manager.addToRecentDocs", true);
pref("browser.download.manager.resumeOnWakeDelay", 10000);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("browser.download.showPanelDropmarker", false);
#else
pref("browser.download.showPanelDropmarker", true);
@ -1244,14 +1244,14 @@ pref("plain_text.wrap_long_lines", true);
pref("dom.debug.propagate_gesture_events_through_content", false);
// The request URL of the GeoLocation backend.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("geo.wifi.uri", "https://www.googleapis.com/geolocation/v1/geolocate?key=%GOOGLE_API_KEY%");
#else
pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
#endif
#ifdef XP_MACOSX
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("geo.provider.use_corelocation", false);
#else
pref("geo.provider.use_corelocation", true);
@ -1264,7 +1264,7 @@ pref("geo.provider.ms-windows-location", false);
#ifdef MOZ_WIDGET_GTK
#ifdef MOZ_GPSD
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("geo.provider.use_gpsd", false);
#else
pref("geo.provider.use_gpsd", true);
@ -1428,7 +1428,7 @@ pref("privacy.userContext.enabled", false);
pref("privacy.userContext.ui.enabled", false);
#endif
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
// At the moment, autostart.2 is used, while autostart.1 is unused.
// We leave it here set to false to reset users' defaults and allow
// us to change everybody to true in the future, when desired.
@ -1447,7 +1447,7 @@ pref("extensions.interposition.enabled", true);
pref("extensions.interposition.prefetching", true);
// Enable blocking of e10s for add-on users on beta/release.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("extensions.e10sBlocksEnabling", true);
#endif
@ -1530,7 +1530,7 @@ pref("webchannel.allowObject.urlWhitelist", "https://accounts.firefox.com https:
// Whether or not the browser should scan for unsubmitted
// crash reports, and then show a notification for submitting
// those reports.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("browser.crashReports.unsubmittedCheck.enabled", false);
#else
pref("browser.crashReports.unsubmittedCheck.enabled", true);

View File

@ -123,7 +123,7 @@ var DevEdition = {
// If the DevEdition theme is going to be applied in gBrowserInit.onLoad,
// then preload it now. This prevents a flash of unstyled content where the
// normal theme is applied while the DevEdition stylesheet is loading.
if (!AppConstants.RELEASE_BUILD &&
if (!AppConstants.RELEASE_OR_BETA &&
this != Services.appShell.hiddenDOMWindow && DevEdition.isThemeCurrentlyApplied) {
DevEdition.createStyleSheet();
}

View File

@ -703,7 +703,7 @@ BrowserGlue.prototype = {
// Ensure we keep track of places/pw-mananager undo by init'ing this early.
Cu.import("resource:///modules/AutoMigrate.jsm");
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
let themeName = gBrowserBundle.GetStringFromName("deveditionTheme.name");
let vendorShortName = gBrandBundle.GetStringFromName("vendorShortName");
@ -1150,7 +1150,7 @@ BrowserGlue.prototype = {
ShellService.shouldCheckDefaultBrowser;
let promptCount;
let skipDefaultBrowserCheck = false;
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
promptCount =
Services.prefs.getIntPref("browser.shell.defaultBrowserCheckCount");
skipDefaultBrowserCheck =
@ -1195,7 +1195,7 @@ BrowserGlue.prototype = {
}
}
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
if (willPrompt) {
Services.prefs.setIntPref("browser.shell.defaultBrowserCheckCount",
promptCount);

View File

@ -129,8 +129,8 @@ processor
Always defined.
release_build
Whether this is a release build.
release_or_beta
Whether this is a release or beta build.
Values are ``true`` and ``false``.

View File

@ -663,11 +663,11 @@ set_define('MOZ_BUILD_APP', build_project)
add_old_configure_assignment('MOZ_BUILD_APP', build_project)
# set RELEASE_BUILD and NIGHTLY_BUILD variables depending on the cycle we're in
# set RELEASE_OR_BETA and NIGHTLY_BUILD variables depending on the cycle we're in
# The logic works like this:
# - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
# - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
# - otherwise, we're building Release/Beta (define RELEASE_BUILD)
# - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
@depends(check_build_environment, '--help')
@imports(_from='__builtin__', _import='open')
def milestone(build_env, _):
@ -677,26 +677,26 @@ def milestone(build_env, _):
with open(milestone_path, 'r') as fh:
milestone = fh.read().splitlines()[-1]
is_nightly = is_release = None
is_nightly = is_release_or_beta = None
if 'a1' in milestone:
is_nightly = True
elif 'a' not in milestone:
is_release = True
is_release_or_beta = True
return namespace(version=milestone,
is_nightly=is_nightly,
is_release=is_release)
is_release_or_beta=is_release_or_beta)
set_config('GRE_MILESTONE', delayed_getattr(milestone, 'version'))
set_config('NIGHTLY_BUILD', delayed_getattr(milestone, 'is_nightly'))
set_define('NIGHTLY_BUILD', delayed_getattr(milestone, 'is_nightly'))
add_old_configure_assignment('NIGHTLY_BUILD',
delayed_getattr(milestone, 'is_nightly'))
set_config('RELEASE_BUILD', delayed_getattr(milestone, 'is_release'))
set_define('RELEASE_BUILD', delayed_getattr(milestone, 'is_release'))
add_old_configure_assignment('RELEASE_BUILD',
delayed_getattr(milestone, 'is_release'))
set_config('RELEASE_OR_BETA', delayed_getattr(milestone, 'is_release_or_beta'))
set_define('RELEASE_OR_BETA', delayed_getattr(milestone, 'is_release_or_beta'))
add_old_configure_assignment('RELEASE_OR_BETA',
delayed_getattr(milestone, 'is_release_or_beta'))
# The app update channel is 'default' when not supplied. The value is used in
# the application's confvars.sh (and is made available to a project specific

View File

@ -59,7 +59,7 @@ def sendchange(branch, revision, username, master, products):
'products:%s' % ','.join(products),
'-p',
'script_repo_revision:%s' % revision,
'release_build'
'release_or_beta'
]
logging.info("Executing: %s" % cmd)
run_cmd(cmd)

View File

@ -357,7 +357,7 @@ pref("devtools.telemetry.tools.opened.version", "{}");
// Enable the JSON View tool (an inspector for application/json documents) on
// Nightly and Dev. Edition.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("devtools.jsonview.enabled", false);
#else
pref("devtools.jsonview.enabled", true);

View File

@ -1701,7 +1701,7 @@ nsWindowSH::NameStructEnabled(JSContext* aCx, nsGlobalWindow *aWin,
OldBindingConstructorEnabled(nameStruct, aWin, aCx);
}
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
#define USE_CONTROLLERS_SHIM
#endif

View File

@ -860,7 +860,7 @@ nsOuterWindowProxy::defineProperty(JSContext* cx,
return result.failCantDefineWindowElement();
}
#ifndef RELEASE_BUILD // To be turned on in bug 1178638.
#ifndef RELEASE_OR_BETA // To be turned on in bug 1178638.
// For now, allow chrome code to define non-configurable properties
// on windows, until we sort out what exactly the addon SDK is
// doing. In the meantime, this still allows us to test web compat

View File

@ -825,7 +825,7 @@ skip-if = buildapp == 'b2g' || toolkit == 'android' # TC: Bug 1144079 - Re-enabl
[test_window_constructor.html]
[test_window_cross_origin_props.html]
[test_window_define_nonconfigurable.html]
skip-if = release_build
skip-if = release_or_beta
[test_window_define_symbol.html]
[test_window_element_enumeration.html]
[test_window_enumeration.html]

View File

@ -46,12 +46,12 @@ function run(canBeUnprivileged) {
if (canBeUnprivileged) {
ok(exts.indexOf("WEBGL_debug_renderer_info") != -1,
"WEBGL_debug_renderer_info should be listed by getSupportedExtensions in"
+ " non-chrome contexts on non-RELEASE_BUILDs");
+ " non-chrome contexts on non-RELEASE_OR_BETAs");
var ext = gl.getExtension("WEBGL_debug_renderer_info");
ok(!!ext,
"WEBGL_debug_renderer_info should be available through getExtension in non-chrome"
+ " contexts on non-RELEASE_BUILDs");
+ " contexts on non-RELEASE_OR_BETAs");
ok(gl.getParameter(UNMASKED_VENDOR_WEBGL) && gl.getError() == gl.NO_ERROR,
"Should be able to query UNMASKED_VENDOR_WEBGL if enabling"

View File

@ -21,10 +21,10 @@ const UNMASKED_RENDERER_WEBGL = 0x9246;
var Cu = parent.Components.utils;
Cu.import("resource://gre/modules/AppConstants.jsm");
// This gives us `AppConstants` in the global scope.
// We need this because we only expose debug_renderer_info #ifndef MOZ_RELEASE_BUILD.
// This should match AppConstants.RELEASE_BUILD.
// We need this because we only expose debug_renderer_info #ifndef RELEASE_OR_BETA.
// This should match AppConstants.RELEASE_OR_BETA.
const canBeUnprivileged = !AppConstants.RELEASE_BUILD;
const canBeUnprivileged = !AppConstants.RELEASE_OR_BETA;
function isNonEmptyString(s)

View File

@ -155,7 +155,7 @@ private:
DECL_MEDIA_PREF("media.ogg.flac.enabled", FlacInOgg, bool, false);
DECL_MEDIA_PREF("media.flac.enabled", FlacEnabled, bool, true);
#if defined(MOZ_RUST_MP4PARSE) && !defined(RELEASE_BUILD)
#if defined(MOZ_RUST_MP4PARSE) && !defined(RELEASE_OR_BETA)
DECL_MEDIA_PREF("media.rust.test_mode", RustTestMode, bool, false);
#endif

View File

@ -375,7 +375,7 @@ void nsPluginTag::InitMime(const char* const* aMimeTypes,
break;
case nsPluginHost::eSpecialType_None:
default:
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
// Allow async init for all plugins on Nightly and Aurora
mSupportsAsyncInit = true;
#endif

View File

@ -75,7 +75,7 @@ skip-if = !crashreporter || e10s
skip-if = !crashreporter || e10s
[test_hidden_plugin.html]
[test_instance_re-parent.html]
skip-if = release_build # Bug 1172627
skip-if = release_or_beta # Bug 1172627
[test_instance_unparent1.html]
[test_instance_unparent2.html]
[test_instance_unparent3.html]

View File

@ -247,6 +247,10 @@ IMFYCbCrImage::GetTextureClient(KnowsCompositor* aForwarder)
return nullptr;
}
if (!gfx::DeviceManagerDx::Get()->CanInitializeKeyedMutexTextures()) {
return nullptr;
}
if (mData.mYStride < 0 || mData.mCbCrStride < 0) {
// D3D11 only supports unsigned stride values.
return nullptr;

View File

@ -80,8 +80,9 @@ AndroidFlingAnimation::AndroidFlingAnimation(AsyncPanZoomController& aApzc,
, mFlingDuration(0)
{
MOZ_ASSERT(mOverscrollHandoffChain);
MOZ_ASSERT(aPlatformSpecificState->AsAndroidSpecificState());
mOverScroller = aPlatformSpecificState->AsAndroidSpecificState()->mOverScroller;
AndroidSpecificState* state = aPlatformSpecificState->AsAndroidSpecificState();
MOZ_ASSERT(state);
mOverScroller = state->mOverScroller;
MOZ_ASSERT(mOverScroller);
// Drop any velocity on axes where we don't have room to scroll anyways
@ -118,12 +119,27 @@ AndroidFlingAnimation::AndroidFlingAnimation(AsyncPanZoomController& aApzc,
int32_t originX = ClampStart(mStartOffset.x, scrollRangeStartX, scrollRangeEndX);
int32_t originY = ClampStart(mStartOffset.y, scrollRangeStartY, scrollRangeEndY);
if (!state->mLastFling.IsNull()) {
// If it's been too long since the previous fling, or if the new fling's
// velocity is too low, don't allow flywheel to kick in. If we do allow
// flywheel to kick in, then we need to update the timestamp on the
// StackScroller because otherwise it might use a stale velocity.
TimeDuration flingDuration = TimeStamp::Now() - state->mLastFling;
if (flingDuration.ToMilliseconds() < gfxPrefs::APZFlingAccelInterval()
&& velocity.Length() >= gfxPrefs::APZFlingAccelMinVelocity()) {
bool unused = false;
mOverScroller->ComputeScrollOffset(flingDuration.ToMilliseconds(), &unused);
} else {
mOverScroller->ForceFinished(true);
}
}
mOverScroller->Fling(originX, originY,
// Android needs the velocity in pixels per second and it is in pixels per ms.
(int32_t)(velocity.x * 1000.0f), (int32_t)(velocity.y * 1000.0f),
(int32_t)floor(scrollRangeStartX), (int32_t)ceil(scrollRangeEndX),
(int32_t)floor(scrollRangeStartY), (int32_t)ceil(scrollRangeEndY),
0, 0, 0);
state->mLastFling = TimeStamp::Now();
}
/**

View File

@ -23,6 +23,7 @@ public:
}
java::StackScroller::GlobalRef mOverScroller;
TimeStamp mLastFling;
};
class AndroidFlingAnimation: public AsyncPanZoomAnimation {

View File

@ -201,6 +201,11 @@ typedef GenericFlingAnimation FlingAnimation;
* be disabled.\n
* Units: milliseconds
*
* \li\b apz.fling_accel_min_velocity
* The minimum velocity of the second fling for it to be considered for fling
* acceleration.
* Units: screen pixels per milliseconds
*
* \li\b apz.fling_accel_base_mult
* \li\b apz.fling_accel_supplemental_mult
* When applying an acceleration on a fling, the new computed velocity is

View File

@ -67,7 +67,8 @@ public:
// not in APZCs further down the handoff chain during handoff.
bool applyAcceleration = !aFlingIsHandedOff;
if (applyAcceleration && !mApzc.mLastFlingTime.IsNull()
&& (now - mApzc.mLastFlingTime).ToMilliseconds() < gfxPrefs::APZFlingAccelInterval()) {
&& (now - mApzc.mLastFlingTime).ToMilliseconds() < gfxPrefs::APZFlingAccelInterval()
&& velocity.Length() >= gfxPrefs::APZFlingAccelMinVelocity()) {
if (SameDirection(velocity.x, mApzc.mLastFlingVelocity.x)) {
velocity.x = Accelerate(velocity.x, mApzc.mLastFlingVelocity.x);
FLING_LOG("%p Applying fling x-acceleration from %f to %f (delta %f)\n",

View File

@ -94,6 +94,7 @@ protected:
// whether acceleration occured.
const float kAcceleration = 100.0f;
SCOPED_GFX_PREF(APZFlingAccelBaseMultiplier, float, kAcceleration);
SCOPED_GFX_PREF(APZFlingAccelMinVelocity, float, 0.0);
RefPtr<TestAsyncPanZoomController> childApzc = ApzcOf(layers[1]);

View File

@ -1088,7 +1088,8 @@ TextureClient::CreateForDrawing(TextureForwarder* aAllocator,
(!!(aAllocFlags & ALLOC_FOR_OUT_OF_BAND_CONTENT) &&
DeviceManagerDx::Get()->GetContentDevice())) &&
aSize.width <= aMaxTextureSize &&
aSize.height <= aMaxTextureSize)
aSize.height <= aMaxTextureSize &&
!(aAllocFlags & ALLOC_UPDATE_FROM_SURFACE))
{
data = DXGITextureData::Create(aSize, aFormat, aAllocFlags);
}
@ -1202,8 +1203,9 @@ TextureClient::CreateFromSurface(KnowsCompositor* aAllocator,
// Fall back to using UpdateFromSurface
TextureAllocationFlags allocFlags = TextureAllocationFlags(aAllocFlags | ALLOC_UPDATE_FROM_SURFACE);
RefPtr<TextureClient> client = CreateForDrawing(aAllocator, aSurface->GetFormat(), size,
aSelector, aTextureFlags, aAllocFlags);
aSelector, aTextureFlags, allocFlags);
if (!client) {
return nullptr;
}

View File

@ -90,6 +90,10 @@ enum TextureAllocationFlags {
// Disable any cross-device synchronization. This is also for TextureClientD3D11,
// and creates a texture without KeyedMutex.
ALLOC_MANUAL_SYNCHRONIZATION = 1 << 6,
// The texture is going to be updated using UpdateFromSurface and needs to support
// that call.
ALLOC_UPDATE_FROM_SURFACE = 1 << 7,
};
#ifdef XP_WIN

View File

@ -383,6 +383,11 @@ D3D11TextureData::Create(IntSize aSize, SurfaceFormat aFormat, SourceSurface* aS
}
}
if (aSurface && newDesc.MiscFlags == D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX &&
!DeviceManagerDx::Get()->CanInitializeKeyedMutexTextures()) {
return nullptr;
}
D3D11_SUBRESOURCE_DATA uploadData;
D3D11_SUBRESOURCE_DATA* uploadDataPtr = nullptr;
RefPtr<DataSourceSurface> srcSurf;

View File

@ -670,6 +670,18 @@ DeviceManagerDx::TextureSharingWorks()
return mDeviceStatus->textureSharingWorks();
}
bool
DeviceManagerDx::CanInitializeKeyedMutexTextures()
{
MutexAutoLock lock(mDeviceLock);
if (!mDeviceStatus) {
return false;
}
// Disable this on all Intel devices because of crashes.
// See bug 1292923.
return mDeviceStatus->adapter().VendorId != 0x8086;
}
bool
DeviceManagerDx::IsWARP()
{

View File

@ -60,6 +60,13 @@ public:
bool TextureSharingWorks();
bool IsWARP();
// Returns true if we can create a texture with
// D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX and also
// upload texture data during the CreateTexture2D
// call. This crashes on some devices, so we might
// need to avoid it.
bool CanInitializeKeyedMutexTextures();
bool CreateCompositorDevices();
void CreateContentDevices();

View File

@ -174,7 +174,7 @@ gfxFontCache::gfxFontCache()
obs->AddObserver(new Observer, "memory-pressure", false);
}
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
// Currently disabled for release builds, due to unexplained crashes
// during expiration; see bug 717175 & 894798.
mWordCacheExpirationTimer = do_CreateInstance("@mozilla.org/timer;1");
@ -2580,7 +2580,7 @@ gfxFont::GetShapedWord(DrawTarget *aDrawTarget,
Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_HITS_CONTENT :
Telemetry::WORD_CACHE_HITS_CHROME),
aLength);
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
if (aTextPerf) {
aTextPerf->current.wordCacheHit++;
}
@ -2591,7 +2591,7 @@ gfxFont::GetShapedWord(DrawTarget *aDrawTarget,
Telemetry::Accumulate((isContent ? Telemetry::WORD_CACHE_MISSES_CONTENT :
Telemetry::WORD_CACHE_MISSES_CHROME),
aLength);
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
if (aTextPerf) {
aTextPerf->current.wordCacheMiss++;
}
@ -2855,7 +2855,7 @@ gfxFont::ShapeTextWithoutWordCache(DrawTarget *aDrawTarget,
return ok;
}
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
#define TEXT_PERF_INCR(tp, m) (tp ? (tp)->current.m++ : 0)
#else
#define TEXT_PERF_INCR(tp, m)
@ -2895,7 +2895,7 @@ gfxFont::SplitAndInitTextRun(DrawTarget *aDrawTarget,
gfxTextPerfMetrics *tp = nullptr;
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
tp = aTextRun->GetFontGroup()->GetTextPerfMetrics();
if (tp) {
if (mStyle.systemFont) {

View File

@ -390,7 +390,7 @@ NS_IMPL_ISUPPORTS_INHERITED0(CrashTelemetryEvent, Runnable);
void
CrashStatsLogForwarder::CrashAction(LogReason aReason)
{
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
// Non-release builds crash by default, but will use telemetry
// if this environment variable is present.
static bool useTelemetry = gfxEnv::GfxDevCrashTelemetry();

View File

@ -262,6 +262,7 @@ private:
DECL_GFX_PREF(Live, "apz.fling_accel_base_mult", APZFlingAccelBaseMultiplier, float, 1.0f);
DECL_GFX_PREF(Live, "apz.fling_accel_interval_ms", APZFlingAccelInterval, int32_t, 500);
DECL_GFX_PREF(Live, "apz.fling_accel_supplemental_mult", APZFlingAccelSupplementalMultiplier, float, 1.0f);
DECL_GFX_PREF(Live, "apz.fling_accel_min_velocity", APZFlingAccelMinVelocity, float, 1.5f);
DECL_GFX_PREF(Once, "apz.fling_curve_function_x1", APZCurveFunctionX1, float, 0.0f);
DECL_GFX_PREF(Once, "apz.fling_curve_function_x2", APZCurveFunctionX2, float, 1.0f);
DECL_GFX_PREF(Once, "apz.fling_curve_function_y1", APZCurveFunctionY1, float, 0.0f);
@ -342,7 +343,7 @@ private:
#if defined(ANDROID)
DECL_GFX_PREF(Once, "gfx.apitrace.enabled", UseApitrace, bool, false);
#endif
#if defined(RELEASE_BUILD)
#if defined(RELEASE_OR_BETA)
// "Skip" means this is locked to the default value in beta and release.
DECL_GFX_PREF(Skip, "gfx.blocklist.all", BlocklistAll, int32_t, 0);
#else

View File

@ -157,7 +157,7 @@ gfxTextRun::gfxTextRun(const gfxTextRunFactory::Parameters *aParams,
MOZ_COUNT_CTOR(gfxTextRun);
NS_ADDREF(mFontGroup);
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
gfxTextPerfMetrics *tp = aFontGroup->GetTextPerfMetrics();
if (tp) {
tp->current.textrunConst++;
@ -191,7 +191,7 @@ gfxTextRun::~gfxTextRun()
// been told to release its reference to the group, so we mustn't do that
// again here.
if (!mReleasedFontGroup) {
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
gfxTextPerfMetrics *tp = mFontGroup->GetTextPerfMetrics();
if (tp) {
tp->current.textrunDestr++;
@ -2902,7 +2902,7 @@ void gfxFontGroup::ComputeRanges(nsTArray<gfxTextRange>& aRanges,
FindFontForChar(ch, prevCh, nextCh, aRunScript, prevFont,
&matchType);
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
if (MOZ_UNLIKELY(mTextPerf)) {
if (matchType == gfxTextRange::kPrefsFallback) {
mTextPerf->current.fallbackPrefs++;
@ -2961,7 +2961,7 @@ void gfxFontGroup::ComputeRanges(nsTArray<gfxTextRange>& aRanges,
aRanges[lastRangeIndex].end = aLength;
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
LogModule* log = mStyle.systemFont
? gfxPlatform::GetLog(eGfxLog_textrunui)
: gfxPlatform::GetLog(eGfxLog_textrun);

View File

@ -181,7 +181,7 @@ public:
virtual ots::TableAction GetTableAction(uint32_t aTag) override {
// Preserve Graphite, color glyph and SVG tables
if (
#ifdef RELEASE_BUILD // For Beta/Release, also allow OT Layout tables through
#ifdef RELEASE_OR_BETA // For Beta/Release, also allow OT Layout tables through
// unchecked, and rely on harfbuzz to handle them safely.
aTag == TRUETYPE_TAG('G', 'D', 'E', 'F') ||
aTag == TRUETYPE_TAG('G', 'P', 'O', 'S') ||

View File

@ -22,7 +22,7 @@
#include "mozilla/ipc/Faulty.h"
#endif
#if !defined(RELEASE_BUILD) || defined(DEBUG)
#if !defined(RELEASE_OR_BETA) || defined(DEBUG)
#define MOZ_PICKLE_SENTINEL_CHECKING
#endif

View File

@ -46,7 +46,7 @@
#include "nsXPCOMPrivate.h"
#include "prthread.h"
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
#define THREADSAFETY_ASSERT MOZ_ASSERT
#else
#define THREADSAFETY_ASSERT MOZ_RELEASE_ASSERT
@ -332,7 +332,7 @@ class ChildImpl final : public BackgroundChildImpl
// create the background thread after application shutdown has started.
static bool sShutdownHasStarted;
#if defined(DEBUG) || !defined(RELEASE_BUILD)
#if defined(DEBUG) || !defined(RELEASE_OR_BETA)
nsIThread* mBoundThread;
#endif
@ -352,7 +352,7 @@ public:
{
THREADSAFETY_ASSERT(mBoundThread);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
DebugOnly<bool> current;
#else
bool current;
@ -369,7 +369,7 @@ public:
}
ChildImpl()
#if defined(DEBUG) || !defined(RELEASE_BUILD)
#if defined(DEBUG) || !defined(RELEASE_OR_BETA)
: mBoundThread(nullptr)
#endif
#ifdef DEBUG
@ -450,7 +450,7 @@ private:
{
THREADSAFETY_ASSERT(!mBoundThread);
#if defined(DEBUG) || !defined(RELEASE_BUILD)
#if defined(DEBUG) || !defined(RELEASE_OR_BETA)
mBoundThread = NS_GetCurrentThread();
#endif

View File

@ -117,12 +117,12 @@ GetBuildConfiguration(JSContext* cx, unsigned argc, Value* vp)
if (!JS_SetProperty(cx, info, "debug", value))
return false;
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
value = BooleanValue(true);
#else
value = BooleanValue(false);
#endif
if (!JS_SetProperty(cx, info, "release", value))
if (!JS_SetProperty(cx, info, "release_or_beta", value))
return false;
#ifdef JS_HAS_CTYPES

View File

@ -9218,7 +9218,7 @@ template <typename ParseHandler>
bool
Parser<ParseHandler>::warnOnceAboutExprClosure()
{
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
JSContext* cx = context->maybeJSContext();
if (!cx)
return true;

View File

@ -1,10 +1,10 @@
// Expression closure should be warned once and only once.
var release = getBuildConfiguration().release;
var release_or_beta = getBuildConfiguration().release_or_beta;
function testWarn(code) {
if (release) {
// Warning for expression closure is non-release-only.
if (release_or_beta) {
// Warning for expression closure is non-release-only (not Release/Beta).
testPass(code);
return;
}

View File

@ -159,7 +159,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681
// DO NOT CHANGE WTIHOUT REVIEW FROM AN XPCONNECT PEER.
var version = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo).version;
var isNightlyBuild = version.endsWith("a1");
var isReleaseBuild = !version.includes("a");
var isReleaseOrBeta = !version.includes("a");
var gPrototypeProperties = {};
var gConstructorProperties = {};
function constructorProps(arr) {

View File

@ -84,6 +84,6 @@ DEFINES['HAVE_AV_CONFIG_H'] = True
if CONFIG['MOZ_DEBUG']:
# Enable all assertions in debug builds.
DEFINES['ASSERT_LEVEL'] = 2
elif not CONFIG['RELEASE_BUILD']:
elif not CONFIG['RELEASE_OR_BETA']:
# Enable fast assertions in opt builds of Nightly and Aurora.
DEFINES['ASSERT_LEVEL'] = 1

View File

@ -69,7 +69,7 @@ ALLOW_COMPILER_WARNINGS = True
if CONFIG['MOZ_DEBUG']:
# Enable all assertions in debug builds.
DEFINES['ASSERT_LEVEL'] = 2
elif not CONFIG['RELEASE_BUILD']:
elif not CONFIG['RELEASE_OR_BETA']:
# Enable fast assertions in opt builds of Nightly and Aurora.
DEFINES['ASSERT_LEVEL'] = 1

View File

@ -159,7 +159,7 @@ MP4Metadata::MP4Metadata(Stream* aSource)
, mPreferRust(false)
, mReportedAudioTrackTelemetry(false)
, mReportedVideoTrackTelemetry(false)
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
, mRustTestMode(MediaPrefs::RustTestMode())
#endif
#endif
@ -280,7 +280,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType,
mozilla::UniquePtr<mozilla::TrackInfo> infoRust =
mRust->GetTrackInfo(aType, aTrackNumber);
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
if (mRustTestMode && info) {
MOZ_DIAGNOSTIC_ASSERT(infoRust);
MOZ_DIAGNOSTIC_ASSERT(infoRust->mId == info->mId);

View File

@ -42,7 +42,7 @@ private:
mutable bool mPreferRust;
mutable bool mReportedAudioTrackTelemetry;
mutable bool mReportedVideoTrackTelemetry;
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
mutable bool mRustTestMode;
#endif
bool ShouldPreferRust() const;

View File

@ -398,7 +398,7 @@ struct AssertionConditionType
# define MOZ_ASSERT(...) do { } while (0)
#endif /* DEBUG */
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
# define MOZ_DIAGNOSTIC_ASSERT MOZ_ASSERT
#else
# define MOZ_DIAGNOSTIC_ASSERT MOZ_RELEASE_ASSERT

View File

@ -300,7 +300,7 @@ pref("browser.search.noCurrentEngine", true);
// Control media casting & mirroring features
pref("browser.casting.enabled", true);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
// Chromecast mirroring is broken (bug 1131084)
pref("browser.mirroring.enabled", false);
#else
@ -863,13 +863,13 @@ pref("layout.accessiblecaret.hapticfeedback", true);
pref("layout.accessiblecaret.extend_selection_for_phone_number", true);
// Disable sending console to logcat on release builds.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("consoleservice.logcat", false);
#else
pref("consoleservice.logcat", true);
#endif
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
// Enable VR on mobile, making it enable by default.
pref("dom.vr.enabled", true);
#endif

View File

@ -240,8 +240,8 @@ public class AppConstants {
// See this wiki page for more details about channel specific build defines:
// https://wiki.mozilla.org/Platform/Channel-specific_build_defines
public static final boolean RELEASE_BUILD =
//#ifdef RELEASE_BUILD
public static final boolean RELEASE_OR_BETA =
//#ifdef RELEASE_OR_BETA
true;
//#else
false;

View File

@ -804,10 +804,10 @@ public class BrowserApp extends GeckoApp
// Set the maximum bits-per-pixel the favicon system cares about.
IconDirectoryEntry.setMaxBPP(GeckoAppShell.getScreenDepth());
// The update service is enabled for RELEASE_BUILD, which includes the release and beta channels.
// The update service is enabled for RELEASE_OR_BETA, which includes the release and beta channels.
// However, no updates are served. Therefore, we don't trust the update service directly, and
// try to avoid prompting unnecessarily. See Bug 1232798.
if (!AppConstants.RELEASE_BUILD && UpdateServiceHelper.isUpdaterEnabled(this)) {
if (!AppConstants.RELEASE_OR_BETA && UpdateServiceHelper.isUpdaterEnabled(this)) {
Permissions.from(this)
.withPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.doNotPrompt()
@ -4171,7 +4171,7 @@ public class BrowserApp extends GeckoApp
* @return true if update UI was launched.
*/
protected boolean handleUpdaterLaunch() {
if (AppConstants.RELEASE_BUILD) {
if (AppConstants.RELEASE_OR_BETA) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + getPackageName()));
startActivity(intent);

View File

@ -196,7 +196,7 @@ public class Telemetry {
throw new IllegalArgumentException("Expected non-null method - use Method.NONE?");
}
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
final String logString = "SendUIEvent: event = " + eventName + " method = " + method + " timestamp = " +
timestamp + " extras = " + extras;
Log.d(LOGTAG, logString);

View File

@ -44,7 +44,7 @@ public class GeckoMenu extends ListView
* Controls whether off-UI-thread method calls in this class cause an
* exception or just logging.
*/
private static final AssertBehavior THREAD_ASSERT_BEHAVIOR = AppConstants.RELEASE_BUILD ? AssertBehavior.NONE : AssertBehavior.THROW;
private static final AssertBehavior THREAD_ASSERT_BEHAVIOR = AppConstants.RELEASE_OR_BETA ? AssertBehavior.NONE : AssertBehavior.THROW;
/*
* A callback for a menu item click/long click event.

View File

@ -226,7 +226,7 @@ public class UpdateService extends IntentService {
int interval;
if (isRetry) {
interval = INTERVAL_RETRY;
} else if (!AppConstants.RELEASE_BUILD) {
} else if (!AppConstants.RELEASE_OR_BETA) {
interval = INTERVAL_SHORT;
} else {
interval = INTERVAL_LONG;

View File

@ -65,7 +65,7 @@
<div class="bottom-border"></div>
</ul>
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
<div id="aboutDetails">
<p>&aboutPage.logoTrademark;</p>
</div>

View File

@ -133,7 +133,7 @@ var lazilyLoadedBrowserScripts = [
["CastingApps", "chrome://browser/content/CastingApps.js"],
["RemoteDebugger", "chrome://browser/content/RemoteDebugger.js"],
];
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
lazilyLoadedBrowserScripts.push(
["WebcompatReporter", "chrome://browser/content/WebcompatReporter.js"]);
}
@ -520,7 +520,7 @@ var BrowserApp = {
InitLater(() => Services.obs.notifyObservers(window, "browser-delayed-startup-finished", ""));
InitLater(() => Messaging.sendRequest({ type: "Gecko:DelayedStartup" }));
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
InitLater(() => WebcompatReporter.init());
}

View File

@ -59,7 +59,7 @@ chrome.jar:
content/aboutAccounts.js (content/aboutAccounts.js)
content/aboutLogins.xhtml (content/aboutLogins.xhtml)
content/aboutLogins.js (content/aboutLogins.js)
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
content/WebcompatReporter.js (content/WebcompatReporter.js)
#endif

View File

@ -99,7 +99,7 @@ component {d1bbb0fd-1d47-4134-9c12-d7b1be20b721} FxAccountsPush.js
contract @mozilla.org/fxa-push;1 {d1bbb0fd-1d47-4134-9c12-d7b1be20b721}
category android-push-service FxAccountsPush @mozilla.org/fxa-push;1
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
# TabSource.js
component {5850c76e-b916-4218-b99a-31f004e0a7e7} TabSource.js
contract @mozilla.org/tab-source-service;1 {5850c76e-b916-4218-b99a-31f004e0a7e7}

View File

@ -42,7 +42,7 @@ MOZ_NATIVE_DEVICES=1
# Enable install tracking SDK if we have Google Play support; MOZ_NATIVE_DEVICES
# is a proxy flag for that support.
if test "$RELEASE_BUILD"; then
if test "$RELEASE_OR_BETA"; then
if test "$MOZ_NATIVE_DEVICES"; then
MOZ_INSTALL_TRACKING=1
fi

View File

@ -127,10 +127,10 @@ Add the following to your mozconfig to compile with the Adjust SDK::
export MOZ_INSTALL_TRACKING=1
export MOZ_NATIVE_DEVICES=1
export RELEASE_BUILD=1
export RELEASE_OR_BETA=1
ac_add_options --with-adjust-sdk-keyfile="$topsrcdir/mobile/android/base/adjust-sdk-sandbox.token"
``MOZ_NATIVE_DEVICES`` && ``RELEASE_BUILD`` are required for an unknown
``MOZ_NATIVE_DEVICES`` && ``RELEASE_OR_BETA`` are required for an unknown
reason. If you build without them, the ``StubAdjustHelper`` will be
returned.

View File

@ -81,7 +81,7 @@ public final class EventDispatcher {
listeners = type.newInstance();
listenersMap.put(event, listeners);
}
if (!AppConstants.RELEASE_BUILD && listeners.contains(listener)) {
if (!AppConstants.RELEASE_OR_BETA && listeners.contains(listener)) {
throw new IllegalStateException("Already registered " + event);
}
listeners.add(listener);
@ -94,7 +94,7 @@ public final class EventDispatcher {
private void checkNotRegisteredElsewhere(final Map<String, ?> allowedMap,
final String[] events) {
if (AppConstants.RELEASE_BUILD) {
if (AppConstants.RELEASE_OR_BETA) {
// for performance reasons, we only check for
// already-registered listeners in non-release builds.
return;
@ -124,7 +124,7 @@ public final class EventDispatcher {
for (final String event : events) {
List<T> listeners = listenersMap.get(event);
if ((listeners == null ||
!listeners.remove(listener)) && !AppConstants.RELEASE_BUILD) {
!listeners.remove(listener)) && !AppConstants.RELEASE_OR_BETA) {
throw new IllegalArgumentException(event + " was not registered");
}
}
@ -333,7 +333,7 @@ public final class EventDispatcher {
Log.w(LOGTAG, "No listeners for " + type + " in dispatchToThreads");
}
if (!AppConstants.RELEASE_BUILD && jsMessage == null) {
if (!AppConstants.RELEASE_OR_BETA && jsMessage == null) {
// We're dispatching a Bundle message. Because Gecko thread listeners are not
// supported for Bundle messages, do a sanity check to make sure we don't have
// matching Gecko thread listeners.

View File

@ -52,7 +52,7 @@ public final class GeckoProfile {
private static final String PROFILE_CREATION_DATE_JSON_ATTR = "created";
// Only tests should need to do this.
// We can default this to AppConstants.RELEASE_BUILD once we fix Bug 1069687.
// We can default this to AppConstants.RELEASE_OR_BETA once we fix Bug 1069687.
private static volatile boolean sAcceptDirectoryChanges = true;
@RobocopTarget
@ -268,7 +268,7 @@ public final class GeckoProfile {
"Refusing to reuse profile with a different directory.");
}
if (AppConstants.RELEASE_BUILD) {
if (AppConstants.RELEASE_OR_BETA) {
Log.e(LOGTAG, "Release build trying to switch out profile dir. " +
"This is an error, but let's do what we can.");
}

View File

@ -261,9 +261,14 @@ public class StackScroller {
if (mFlywheel && !isFinished()) {
float oldVelocityX = mScrollerX.mCurrVelocity;
float oldVelocityY = mScrollerY.mCurrVelocity;
if (Math.signum(velocityX) == Math.signum(oldVelocityX)
&& Math.signum(velocityY) == Math.signum(oldVelocityY)) {
boolean sameXDirection = (velocityX == 0) || (oldVelocityX == 0) ||
((velocityX < 0) == (oldVelocityX < 0));
boolean sameYDirection = (velocityY == 0) || (oldVelocityY == 0) ||
((velocityY < 0) == (oldVelocityY < 0));
if (sameXDirection) {
velocityX += oldVelocityX;
}
if (sameYDirection) {
velocityY += oldVelocityY;
}
}

View File

@ -317,7 +317,7 @@
@BINPATH@/components/amWebAPI.js
@BINPATH@/components/amWebInstallListener.js
@BINPATH@/components/nsBlocklistService.js
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
@BINPATH@/components/TabSource.js
#endif
@BINPATH@/components/webvtt.xpt

View File

@ -31,7 +31,7 @@
locale/@AB_CD@/browser/handling.properties (%chrome/handling.properties)
locale/@AB_CD@/browser/aboutLogins.dtd (%chrome/aboutLogins.dtd)
locale/@AB_CD@/browser/aboutLogins.properties (%chrome/aboutLogins.properties)
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
locale/@AB_CD@/browser/webcompatReporter.properties (%chrome/webcompatReporter.properties)
#endif
% resource search-plugins chrome://browser/locale/searchplugins/

View File

@ -60,7 +60,7 @@ public class TestGeckoMenu extends InstrumentationTestCase {
semaphore.wait();
}
if (AppConstants.RELEASE_BUILD) {
if (AppConstants.RELEASE_OR_BETA) {
// No exception thrown: release build.
assertNull(exception);
return;

View File

@ -32,7 +32,7 @@ public class testGetUserMedia extends BaseTest {
public void testGetUserMedia() {
// TabShare.js is disabled on release builds.
if (AppConstants.RELEASE_BUILD) {
if (AppConstants.RELEASE_OR_BETA) {
mAsserter.dumpLog(LOGTAG + " is disabled on release builds: returning");
return;
}

View File

@ -188,7 +188,7 @@ pref("dom.enable_performance_observer", false);
// Whether the Gamepad API is enabled
pref("dom.gamepad.enabled", true);
pref("dom.gamepad.test.enabled", false);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("dom.gamepad.non_standard_events.enabled", false);
#else
pref("dom.gamepad.non_standard_events.enabled", true);
@ -298,7 +298,7 @@ pref("mathml.disabled", false);
pref("mathml.scale_stretchy_operators.enabled", true);
// Disable MediaError.message.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("dom.MediaError.message.enabled", false);
#else
pref("dom.MediaError.message.enabled", true);
@ -537,7 +537,7 @@ pref("dom.webaudio.enabled", true);
pref("media.getusermedia.screensharing.enabled", true);
#endif
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("media.getusermedia.screensharing.allowed_domains", "webex.com,*.webex.com,ciscospark.com,*.ciscospark.com,projectsquared.com,*.projectsquared.com,*.room.co,room.co,beta.talky.io,talky.io,*.clearslide.com,appear.in,*.appear.in,tokbox.com,*.tokbox.com,*.sso.francetelecom.fr,*.si.francetelecom.fr,*.sso.infra.ftgroup,*.multimedia-conference.orange-business.com,*.espacecollaboration.orange-business.com,free.gotomeeting.com,g2m.me,*.g2m.me,*.mypurecloud.com,*.mypurecloud.com.au,spreed.me,*.spreed.me,*.spreed.com,air.mozilla.org,*.circuit.com,*.yourcircuit.com,circuit.siemens.com,yourcircuit.siemens.com,circuitsandbox.net,*.unify.com,tandi.circuitsandbox.net,*.ericsson.net,*.cct.ericsson.net,*.opentok.com,*.conf.meetecho.com,meet.jit.si,*.meet.jit.si,web.stage.speakeasyapp.net,web.speakeasyapp.net,*.hipchat.me,*.beta-wspbx.com,*.wspbx.com,*.unifiedcloudit.com,*.smartboxuc.com,*.smartbox-uc.com,*.panterranetworks.com,pexipdemo.com,*.pexipdemo.com,pex.me,*.pex.me,*.rd.pexip.com,1click.io,*.1click.io,*.fuze.com,*.fuzemeeting.com,*.thinkingphones.com,gotomeeting.com,*.gotomeeting.com,gotowebinar.com,*.gotowebinar.com,gototraining.com,*.gototraining.com,citrix.com,*.citrix.com,expertcity.com,*.expertcity.com,citrixonline.com,*.citrixonline.com,g2m.me,*.g2m.me,gotomeet.me,*.gotomeet.me,gotomeet.at,*.gotomeet.at,miriadaxdes.miriadax.net,certificacion.miriadax.net,miriadax.net,*.wire.com,sylaps.com,*.sylaps.com,bluejeans.com,*.bluejeans.com,*.a.bluejeans.com");
#else
// includes Mozilla's test domain: mozilla.github.io (not intended for release)
@ -633,6 +633,7 @@ pref("apz.displayport_expiry_ms", 15000);
pref("apz.enlarge_displayport_when_clipped", false);
pref("apz.fling_accel_base_mult", "1.0");
pref("apz.fling_accel_interval_ms", 500);
pref("apz.fling_accel_min_velocity", "1.5");
pref("apz.fling_accel_supplemental_mult", "1.0");
pref("apz.fling_curve_function_x1", "0.0");
pref("apz.fling_curve_function_y1", "0.0");
@ -838,7 +839,7 @@ pref("canvas.path.enabled", true);
pref("canvas.capturestream.enabled", true);
// Disable the ImageBitmap-extensions in the release build.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("canvas.imagebitmap_extensions.enabled", false);
#else
pref("canvas.imagebitmap_extensions.enabled", true);
@ -1218,7 +1219,7 @@ pref("privacy.trackingprotection.pbmode.enabled", true);
pref("dom.event.contextmenu.enabled", true);
pref("dom.event.clipboardevents.enabled", true);
#if defined(XP_WIN) && !defined(RELEASE_BUILD) || defined(MOZ_WIDGET_GTK) && !defined(RELEASE_BUILD)
#if defined(XP_WIN) && !defined(RELEASE_OR_BETA) || defined(MOZ_WIDGET_GTK) && !defined(RELEASE_OR_BETA)
pref("dom.event.highrestimestamp.enabled", true);
#else
pref("dom.event.highrestimestamp.enabled", false);
@ -1239,7 +1240,7 @@ pref("javascript.options.wasm", false);
pref("javascript.options.wasm_baselinejit", false);
pref("javascript.options.native_regexp", true);
pref("javascript.options.parallel_parsing", true);
#if !defined(RELEASE_BUILD) && !defined(ANDROID) && !defined(MOZ_B2G) && !defined(XP_IOS)
#if !defined(RELEASE_OR_BETA) && !defined(ANDROID) && !defined(MOZ_B2G) && !defined(XP_IOS)
pref("javascript.options.asyncstack", true);
#else
pref("javascript.options.asyncstack", false);
@ -1538,7 +1539,7 @@ pref("network.http.fast-fallback-to-IPv4", true);
// The maximum amount of time the cache session lock can be held
// before a new transaction bypasses the cache. In milliseconds.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("network.http.bypass-cachelock-threshold", 200000);
#else
pref("network.http.bypass-cachelock-threshold", 250);
@ -1668,7 +1669,7 @@ pref("dom.server-events.default-reconnection-time", 5000); // in milliseconds
// by the jar channel.
pref("network.jar.open-unsafe-types", false);
// If true, loading remote JAR files using the jar: protocol will be prevented.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
// Keep allowing remote JAR files for IBM iNotes (see bug 1255139) for now.
pref("network.jar.block-remote-files", false);
#else
@ -2506,14 +2507,14 @@ pref("layout.css.DOMQuad.enabled", true);
pref("layout.css.DOMMatrix.enabled", true);
// Is support for GeometryUtils.getBoxQuads enabled?
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("layout.css.getBoxQuads.enabled", false);
#else
pref("layout.css.getBoxQuads.enabled", true);
#endif
// Is support for GeometryUtils.convert*FromNode enabled?
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("layout.css.convertFromNode.enabled", false);
#else
pref("layout.css.convertFromNode.enabled", true);
@ -2524,7 +2525,7 @@ pref("layout.css.text-align-unsafe-value.enabled", false);
// Is support for CSS "float: inline-{start,end}" and
// "clear: inline-{start,end}" enabled?
#if defined(MOZ_B2G) || !defined(RELEASE_BUILD)
#if defined(MOZ_B2G) || !defined(RELEASE_OR_BETA)
pref("layout.css.float-logical-values.enabled", true);
#else
pref("layout.css.float-logical-values.enabled", false);
@ -2601,7 +2602,7 @@ pref("layout.css.variables.enabled", true);
pref("layout.css.overflow-clip-box.enabled", false);
// Is support for CSS grid enabled?
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("layout.css.grid.enabled", false);
#else
pref("layout.css.grid.enabled", true);
@ -2654,7 +2655,7 @@ pref("layout.css.shape-outside.enabled", false);
pref("layout.css.font-loading-api.enabled", true);
// Should stray control characters be rendered visibly?
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("layout.css.control-characters.visible", false);
#else
pref("layout.css.control-characters.visible", true);
@ -2706,7 +2707,7 @@ pref("layout.float-fragments-inside-column.enabled", true);
// Before enabling this by default, make sure also CSSPseudoElement interface
// has been spec'ed properly, or we should add a separate pref for
// CSSPseudoElement interface. See Bug 1174575 for further details.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("dom.animations-api.core.enabled", false);
#else
pref("dom.animations-api.core.enabled", true);
@ -2854,11 +2855,11 @@ pref("svg.marker-improvements.enabled", true);
// See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
pref("svg.new-getBBox.enabled", false);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("svg.transform-box.enabled", false);
#else
pref("svg.transform-box.enabled", true);
#endif // RELEASE_BUILD
#endif // RELEASE_OR_BETA
// Default font types and sizes by locale
pref("font.default.ar", "sans-serif");
@ -4462,7 +4463,7 @@ pref("webgl.webgl2-compat-mode", false);
pref("webgl.enable-webgl2", true);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
// Keep this disabled on Release and Beta for now. (see bug 1171228)
pref("webgl.enable-debug-renderer-info", false);
#else
@ -4697,7 +4698,7 @@ pref("alerts.showFavicons", false);
// DOM full-screen API.
pref("full-screen-api.enabled", false);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("full-screen-api.unprefix.enabled", false);
#else
pref("full-screen-api.unprefix.enabled", true);
@ -4950,7 +4951,7 @@ pref("dom.browserElement.maxScreenshotDelayMS", 2000);
pref("dom.placeholder.show_on_focus", true);
// VR is disabled by default in release and enabled for nightly and aurora
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("dom.vr.enabled", false);
#else
pref("dom.vr.enabled", true);
@ -5037,7 +5038,7 @@ pref("captivedetect.maxWaitingTime", 5000);
pref("captivedetect.pollingTime", 3000);
pref("captivedetect.maxRetryCount", 5);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("dom.forms.inputmode", false);
#else
pref("dom.forms.inputmode", true);
@ -5302,7 +5303,7 @@ pref("dom.presentation.discoverable.retry_ms", 5000);
pref("dom.presentation.session_transport.data_channel.enable", false);
#ifdef XP_MACOSX
#if !defined(RELEASE_BUILD) || defined(DEBUG)
#if !defined(RELEASE_OR_BETA) || defined(DEBUG)
// In non-release builds we crash by default on insecure text input (when a
// password editor has focus but secure event input isn't enabled). The
// following pref, when turned on, disables this behavior. See bug 1188425.
@ -5513,7 +5514,7 @@ pref("layout.css.color-adjust.enabled", true);
pref("dom.audiochannel.audioCompeting", false);
// Disable Node.rootNode in release builds.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("dom.node.rootNode.enabled", false);
#else
pref("dom.node.rootNode.enabled", true);
@ -5524,7 +5525,7 @@ pref("media.default_volume", "1.0");
// Once bug 1276272 is resolved, we will trun this preference to default ON in
// non-release channels.
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("media.seekToNextFrame.enabled", false);
#else
pref("media.seekToNextFrame.enabled", true);
@ -5534,7 +5535,7 @@ pref("media.seekToNextFrame.enabled", true);
pref("dom.maxHardwareConcurrency", 16);
// Shutdown the osfile worker if its no longer needed.
#if !defined(RELEASE_BUILD)
#if !defined(RELEASE_OR_BETA)
pref("osfile.reset_worker_delay", 30000);
#endif
@ -5553,7 +5554,7 @@ pref("layout.css.servo.enabled", true);
// If a request is mixed-content, send an HSTS priming request to attempt to
// see if it is available over HTTPS.
pref("security.mixed_content.send_hsts_priming", true);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
// Don't change the order of evaluation of mixed-content and HSTS upgrades in
// order to be most compatible with current standards
pref("security.mixed_content.use_hsts", false);

View File

@ -18,7 +18,7 @@ include('build/moz.configure/init.configure')
# To be removed in Bug 1003313
@depends(milestone)
def e10s_testing_only(milestone):
if not milestone.is_release:
if not milestone.is_release_or_beta:
return True
set_config('E10S_TESTING_ONLY', e10s_testing_only)

View File

@ -42,7 +42,7 @@
#define RUSAGE_THREAD 1
#endif
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
/* Official builds have the debuggable flag set to false, which disables
* the backtrace dumper from bionic. However, as it is useful for native
* crashes happening before the crash reporter is registered, re-enable

View File

@ -68,7 +68,7 @@ pref("security.pki.sha1_enforcement_level", 4);
// 2: fall back to the subject common name for certificates valid before 23
// August 2015 if necessary
// 3: only use name information from the subject alternative name extension
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("security.pki.name_matching_mode", 1);
#else
pref("security.pki.name_matching_mode", 2);
@ -80,7 +80,7 @@ pref("security.pki.name_matching_mode", 2);
// 1: it is considered equivalent when the notBefore is before 23 August 2016
// 2: similarly, but for 23 August 2015
// 3: it is never considered equivalent
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
pref("security.pki.netscape_step_up_policy", 1);
#else
pref("security.pki.netscape_step_up_policy", 2);
@ -107,7 +107,7 @@ pref("security.cert_pinning.max_max_age_seconds", 5184000);
// If a request is mixed-content, send an HSTS priming request to attempt to
// see if it is available over HTTPS.
pref("security.mixed_content.send_hsts_priming", true);
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
// Don't change the order of evaluation of mixed-content and HSTS upgrades
pref("security.mixed_content.use_hsts", false);
#else

View File

@ -110,7 +110,7 @@ PBOverrideStatusFromLoadContext(const SerializedLoadContext& aSerialized)
static MOZ_NORETURN MOZ_COLD
void CrashWithReason(const char * reason)
{
#ifndef RELEASE_BUILD
#ifndef RELEASE_OR_BETA
MOZ_CRASH_ANNOTATE(reason);
MOZ_REALLY_CRASH();
#endif

View File

@ -5700,7 +5700,7 @@ if test "$MOZ_TELEMETRY_REPORTING"; then
AC_DEFINE(MOZ_TELEMETRY_REPORTING)
# Enable Telemetry by default for nightly and aurora channels
if test -z "$RELEASE_BUILD"; then
if test -z "$RELEASE_OR_BETA"; then
AC_DEFINE(MOZ_TELEMETRY_ON_BY_DEFAULT)
fi
fi
@ -5998,7 +5998,7 @@ dnl ========================================================
# Refer to bug 1281101 for more details.
# Enable mask-as-shorthand property by default for nightly and aurora channels
if test -z "$RELEASE_BUILD"; then
if test -z "$RELEASE_OR_BETA"; then
dnl mask as shorthand property enabled
MOZ_ENABLE_MASK_AS_SHORTHAND=1
AC_DEFINE(MOZ_ENABLE_MASK_AS_SHORTHAND)

View File

@ -80,7 +80,7 @@ def build_dict(config, env=os.environ):
d['debug'] = substs.get('MOZ_DEBUG') == '1'
d['nightly_build'] = substs.get('NIGHTLY_BUILD') == '1'
d['release_build'] = substs.get('RELEASE_BUILD') == '1'
d['release_or_beta'] = substs.get('RELEASE_OR_BETA') == '1'
d['pgo'] = substs.get('MOZ_PGO') == '1'
d['crashreporter'] = bool(substs.get('MOZ_CRASHREPORTER'))
d['datareporting'] = bool(substs.get('MOZ_DATA_REPORTING'))

View File

@ -19,7 +19,7 @@ config = {
"ignore_locales": ["en-US"],
"balrog_credentials_file": "oauth.txt",
"tools_repo": "https://hg.mozilla.org/build/tools",
"is_release": True,
"is_release_or_beta": True,
"tooltool_config": {
"manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
"output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,

View File

@ -19,7 +19,7 @@ config = {
"ignore_locales": ["en-US"],
"balrog_credentials_file": "oauth.txt",
"tools_repo": "https://hg.mozilla.org/build/tools",
"is_release": True,
"is_release_or_beta": True,
"tooltool_config": {
"manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
"output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,

View File

@ -19,7 +19,7 @@ config = {
"ignore_locales": ["en-US"],
"balrog_credentials_file": "oauth.txt",
"tools_repo": "https://hg.mozilla.org/build/tools",
"is_release": True,
"is_release_or_beta": True,
"tooltool_config": {
"manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
"output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,

View File

@ -19,10 +19,7 @@ config = {
"ignore_locales": ["en-US"],
"balrog_credentials_file": "oauth.txt",
"tools_repo": "https://hg.mozilla.org/build/tools",
"is_release": True,
"balrog_credentials_file": "oauth.txt",
"tools_repo": "https://hg.mozilla.org/build/tools",
"is_release": True,
"is_release_or_beta": True,
"tooltool_config": {
"manifest": "mobile/android/config/tooltool-manifests/android/releng.manifest",
"output_dir": "%(abs_work_dir)s/" + MOZILLA_DIR,

View File

@ -211,7 +211,7 @@ class MobileSingleLocale(MockMixin, LocalesMixin, ReleaseMixin,
replace_dict=replace_dict)
if 'MOZ_SIGNING_SERVERS' in os.environ:
upload_env['MOZ_SIGN_CMD'] = subprocess.list2cmdline(self.query_moz_sign_cmd())
if self.query_is_release():
if self.query_is_release_or_beta():
upload_env['MOZ_PKG_VERSION'] = '%(version)s' % replace_dict
self.upload_env = upload_env
return self.upload_env
@ -649,13 +649,13 @@ class MobileSingleLocale(MockMixin, LocalesMixin, ReleaseMixin,
return os.path.join(apkdir, apks[0])
def query_is_release(self):
def query_is_release_or_beta(self):
return bool(self.config.get("is_release"))
return bool(self.config.get("is_release_or_beta"))
def submit_to_balrog(self):
if not self.query_is_nightly() and not self.query_is_release():
if not self.query_is_nightly() and not self.query_is_release_or_beta():
self.info("Not a nightly or release build, skipping balrog submission.")
return

View File

@ -858,7 +858,7 @@ add_test({
self.assertTestResult(False)
self.assertInLog(TEST_FAIL_STRING)
if not substs.get('RELEASE_BUILD'):
if not substs.get('RELEASE_OR_BETA'):
# async stacks are currently not enabled in release builds.
self.assertInLog("test_simple_uncaught_rejection.js:3:3")
self.assertInLog("Test rejection.")

View File

@ -79,7 +79,7 @@ const CATEGORY_EXTENSION_SCRIPTS_ADDON = "webextension-scripts-addon";
let schemaURLs = new Set();
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
schemaURLs.add("chrome://extensions/content/schemas/experiments.json");
}
@ -1530,7 +1530,7 @@ this.Extension = class extends ExtensionData {
readManifest() {
return super.readManifest().then(manifest => {
if (AppConstants.RELEASE_BUILD) {
if (AppConstants.RELEASE_OR_BETA) {
return manifest;
}

View File

@ -127,6 +127,13 @@ Script.prototype = {
matches(window) {
let uri = window.document.documentURIObject;
// If mozAddonManager is present on this page, don't allow
// content scripts.
if (window.navigator.mozAddonManager !== undefined) {
return false;
}
if (!(this.matches_.matches(uri) || this.matches_host_.matchesIgnoringPath(uri))) {
return false;
}

View File

@ -32,7 +32,7 @@ skip-if = os == "android"
[test_ext_downloads_search.js]
skip-if = os == "android"
[test_ext_experiments.js]
skip-if = release_build
skip-if = release_or_beta
[test_ext_extension.js]
[test_ext_idle.js]
[test_ext_json_parser.js]

View File

@ -25,8 +25,8 @@ Preferences
If ``unified`` is on, this controls whether to record *extended* data.
This preference is controlled through the `Preferences` dialog.
Note that the default value here of this pref depends on the define ``RELEASE_BUILD`` and the channel.
If ``RELEASE_BUILD`` is set, ``MOZ_TELEMETRY_ON_BY_DEFAULT`` gets set, which means this pref will default to ``true``.
Note that the default value here of this pref depends on the define ``RELEASE_OR_BETA`` and the channel.
If ``RELEASE_OR_BETA`` is set, ``MOZ_TELEMETRY_ON_BY_DEFAULT`` gets set, which means this pref will default to ``true``.
This is overridden by the preferences code on the "beta" channel, the pref also defaults to ``true`` there.
``datareporting.healthreport.uploadEnabled``

View File

@ -22,8 +22,8 @@ this.AppConstants = Object.freeze({
false,
#endif
RELEASE_BUILD:
#ifdef RELEASE_BUILD
RELEASE_OR_BETA:
#ifdef RELEASE_OR_BETA
true,
#else
false,

View File

@ -688,7 +688,7 @@ var onBeforeRequest = {
get allowedOptions() {
delete this.allowedOptions;
this.allowedOptions = ["blocking"];
if (!AppConstants.RELEASE_BUILD) {
if (!AppConstants.RELEASE_OR_BETA) {
this.allowedOptions.push("requestBody");
}
return this.allowedOptions;

View File

@ -25,7 +25,7 @@ const PROTOCOL_VERSION = 1;
function RokuApp(service) {
this.service = service;
this.resourceURL = this.service.location;
this.app = AppConstants.RELEASE_BUILD ? "Firefox" : "Firefox Nightly";
this.app = AppConstants.RELEASE_OR_BETA ? "Firefox" : "Firefox Nightly";
this.mediaAppID = -1;
}

View File

@ -230,7 +230,7 @@ const TYPES = {
experiment: 128,
};
if (!AppConstants.RELEASE_BUILD)
if (!AppConstants.RELEASE_OR_BETA)
TYPES.apiextension = 256;
// Some add-on types that we track internally are presented as other types

View File

@ -304,7 +304,7 @@ add_task(function* test_options_ui() {
// Test that experiments permissions add the appropriate dependencies.
add_task(function* test_experiments_dependencies() {
if (AppConstants.RELEASE_BUILD)
if (AppConstants.RELEASE_OR_BETA)
// Experiments are not enabled on release builds.
return;
@ -329,7 +329,7 @@ add_task(function* test_experiments_dependencies() {
// Test that experiments API extensions install correctly.
add_task(function* test_experiments_api() {
if (AppConstants.RELEASE_BUILD)
if (AppConstants.RELEASE_OR_BETA)
// Experiments are not enabled on release builds.
return;

View File

@ -1016,7 +1016,7 @@ nsXULAppInfo::GetLastRunCrashID(nsAString &aLastRunCrashID)
NS_IMETHODIMP
nsXULAppInfo::GetIsReleaseBuild(bool* aResult)
{
#ifdef RELEASE_BUILD
#ifdef RELEASE_OR_BETA
*aResult = true;
#else
*aResult = false;
@ -4870,7 +4870,7 @@ MultiprocessBlockPolicy() {
// For linux nightly and aurora builds skip accessibility
// checks.
bool doAccessibilityCheck = true;
#if defined(MOZ_WIDGET_GTK) && !defined(RELEASE_BUILD)
#if defined(MOZ_WIDGET_GTK) && !defined(RELEASE_OR_BETA)
doAccessibilityCheck = false;
#endif

View File

@ -5,7 +5,7 @@
#include "mozilla/UniquePtr.h"
#if defined(DEBUG) || !defined(RELEASE_BUILD)
#if defined(DEBUG) || !defined(RELEASE_OR_BETA)
#define MOZ_CHECK_JNI
#endif

View File

@ -72,7 +72,7 @@ SOURCES += [
'nsNativeThemeCocoa.mm',
]
if not CONFIG['RELEASE_BUILD'] or CONFIG['MOZ_DEBUG']:
if not CONFIG['RELEASE_OR_BETA'] or CONFIG['MOZ_DEBUG']:
SOURCES += [
'nsSandboxViolationSink.mm',
]

View File

@ -33,7 +33,7 @@
#include "mozilla/HangMonitor.h"
#include "GeckoProfiler.h"
#include "pratom.h"
#if !defined(RELEASE_BUILD) || defined(DEBUG)
#if !defined(RELEASE_OR_BETA) || defined(DEBUG)
#include "nsSandboxViolationSink.h"
#endif
@ -322,7 +322,7 @@ nsAppShell::Init()
CGSSetDebugOptions(0x80000007);
}
#if !defined(RELEASE_BUILD) || defined(DEBUG)
#if !defined(RELEASE_OR_BETA) || defined(DEBUG)
if (Preferences::GetBool("security.sandbox.mac.track.violations", false)) {
nsSandboxViolationSink::Start();
}
@ -681,7 +681,7 @@ nsAppShell::Exit(void)
mTerminated = true;
#if !defined(RELEASE_BUILD) || defined(DEBUG)
#if !defined(RELEASE_OR_BETA) || defined(DEBUG)
nsSandboxViolationSink::Stop();
#endif

View File

@ -5340,7 +5340,7 @@ PanGestureTypeForEvent(NSEvent* aEvent)
[viewWindow orderWindow:NSWindowAbove relativeTo:0];
}
#if !defined(RELEASE_BUILD) || defined(DEBUG)
#if !defined(RELEASE_OR_BETA) || defined(DEBUG)
if (!Preferences::GetBool("intl.allow-insecure-text-input", false) &&
mGeckoChild && mTextInputHandler && mTextInputHandler->IsFocused()) {
#ifdef MOZ_CRASHREPORTER
@ -5372,7 +5372,7 @@ PanGestureTypeForEvent(NSEvent* aEvent)
#undef CRASH_MESSAGE
}
}
#endif // #if !defined(RELEASE_BUILD) || defined(DEBUG)
#endif // #if !defined(RELEASE_OR_BETA) || defined(DEBUG)
nsAutoRetainCocoaObject kungFuDeathGrip(self);
bool handled = false;

View File

@ -31,7 +31,7 @@
// devices, we've chosen to leave logging enabled on desktop, but disabled on
// Android. Given that logging can still be useful for development purposes,
// however, we leave logging enabled on Android developer builds.
#if !defined(ANDROID) || !defined(RELEASE_BUILD)
#if !defined(ANDROID) || !defined(RELEASE_OR_BETA)
#define MOZ_LOGGING_ENABLED 1
#else
#define MOZ_LOGGING_ENABLED 0

View File

@ -253,14 +253,14 @@ class IOInterposerInit
public:
IOInterposerInit()
{
#if !defined(RELEASE_BUILD)
#if !defined(RELEASE_OR_BETA)
IOInterposer::Init();
#endif
}
~IOInterposerInit()
{
#if !defined(RELEASE_BUILD)
#if !defined(RELEASE_OR_BETA)
IOInterposer::Clear();
#endif
}

View File

@ -321,7 +321,7 @@ set_stderr_callback(StderrCallback aCallback)
sStderrCallback = aCallback;
}
#if defined(ANDROID) && !defined(RELEASE_BUILD)
#if defined(ANDROID) && !defined(RELEASE_OR_BETA)
static FILE* sStderrCopy = nullptr;
void

View File

@ -426,14 +426,14 @@ void fprintf_stderr(FILE* aFile, const char* aFmt, ...) MOZ_FORMAT_PRINTF(2, 3);
// advanced performance debugging and display/layers visualization.
void set_stderr_callback(StderrCallback aCallback);
#if defined(ANDROID) && !defined(RELEASE_BUILD)
#if defined(ANDROID) && !defined(RELEASE_OR_BETA)
// Call this if you want a copy of stderr logging sent to a file. This is
// useful to get around logcat overflow problems on android devices, which use
// a circular logcat buffer and can intermittently drop messages if there's too
// much spew.
//
// This is intended for local debugging only, DO NOT USE IN PRODUCTION CODE.
// (This is ifndef RELEASE_BUILD to catch uses of it that accidentally get
// (This is ifndef RELEASE_OR_BETA to catch uses of it that accidentally get
// checked in). Using this will also prevent the profiler from getting a copy of
// the stderr messages which it uses for various visualization features.
//

View File

@ -144,7 +144,7 @@ interface nsIXULRuntime : nsISupports
readonly attribute DOMString lastRunCrashID;
/**
* True if this is a RELEASE_BUILD.
* True if this is RELEASE_OR_BETA.
*/
readonly attribute boolean isReleaseBuild;