diff --git a/b2g/app/b2g.js b/b2g/app/b2g.js index d811a90b6b22..28d255149b80 100644 --- a/b2g/app/b2g.js +++ b/b2g/app/b2g.js @@ -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); diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index 1194867930cf..1124b1635845 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -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); diff --git a/browser/base/content/browser-devedition.js b/browser/base/content/browser-devedition.js index dc2f90f65436..5b305b816b03 100644 --- a/browser/base/content/browser-devedition.js +++ b/browser/base/content/browser-devedition.js @@ -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(); } diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 22e0b88b1ed4..f6a9cb3294fa 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -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); diff --git a/build/docs/mozinfo.rst b/build/docs/mozinfo.rst index 252a83940a1e..d74ca75e6064 100644 --- a/build/docs/mozinfo.rst +++ b/build/docs/mozinfo.rst @@ -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``. diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure index 99bd5e75dd9e..e17b6ac48378 100644 --- a/build/moz.configure/init.configure +++ b/build/moz.configure/init.configure @@ -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 diff --git a/build/release/sanity.py b/build/release/sanity.py index cd89eb3d77cf..aba8559894ba 100644 --- a/build/release/sanity.py +++ b/build/release/sanity.py @@ -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) diff --git a/devtools/client/preferences/devtools.js b/devtools/client/preferences/devtools.js index 9199bfd99459..6aa07a5870a9 100644 --- a/devtools/client/preferences/devtools.js +++ b/devtools/client/preferences/devtools.js @@ -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); diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp index b61fe1f94882..19afe2d7fb89 100644 --- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -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 diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp index acdd0308c4df..d618578b739f 100644 --- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -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 diff --git a/dom/base/test/mochitest.ini b/dom/base/test/mochitest.ini index 4004ff39e912..e30cb9a80a4f 100644 --- a/dom/base/test/mochitest.ini +++ b/dom/base/test/mochitest.ini @@ -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] diff --git a/dom/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html b/dom/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html index 1e31e2b03c68..4668f2baf375 100644 --- a/dom/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html +++ b/dom/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html @@ -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" diff --git a/dom/canvas/test/chrome/test_webgl_debug_renderer_info.html b/dom/canvas/test/chrome/test_webgl_debug_renderer_info.html index 89cfe2cf3700..9d4d38c3cdac 100644 --- a/dom/canvas/test/chrome/test_webgl_debug_renderer_info.html +++ b/dom/canvas/test/chrome/test_webgl_debug_renderer_info.html @@ -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) diff --git a/dom/media/MediaPrefs.h b/dom/media/MediaPrefs.h index 59fbf1b551e1..8e1be0478d7a 100644 --- a/dom/media/MediaPrefs.h +++ b/dom/media/MediaPrefs.h @@ -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 diff --git a/dom/plugins/base/nsPluginTags.cpp b/dom/plugins/base/nsPluginTags.cpp index ab75790240a2..ddc3968fdddd 100644 --- a/dom/plugins/base/nsPluginTags.cpp +++ b/dom/plugins/base/nsPluginTags.cpp @@ -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 diff --git a/dom/plugins/test/mochitest/mochitest.ini b/dom/plugins/test/mochitest/mochitest.ini index b03a39f2eab7..94a36fa8c9e2 100644 --- a/dom/plugins/test/mochitest/mochitest.ini +++ b/dom/plugins/test/mochitest/mochitest.ini @@ -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] diff --git a/gfx/layers/IMFYCbCrImage.cpp b/gfx/layers/IMFYCbCrImage.cpp index 6750e394abcd..d5943b030362 100644 --- a/gfx/layers/IMFYCbCrImage.cpp +++ b/gfx/layers/IMFYCbCrImage.cpp @@ -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; diff --git a/gfx/layers/apz/src/AndroidAPZ.cpp b/gfx/layers/apz/src/AndroidAPZ.cpp index 2991bbca453e..70042a87033c 100644 --- a/gfx/layers/apz/src/AndroidAPZ.cpp +++ b/gfx/layers/apz/src/AndroidAPZ.cpp @@ -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(); } /** diff --git a/gfx/layers/apz/src/AndroidAPZ.h b/gfx/layers/apz/src/AndroidAPZ.h index d52685024926..404892da5ea6 100644 --- a/gfx/layers/apz/src/AndroidAPZ.h +++ b/gfx/layers/apz/src/AndroidAPZ.h @@ -23,6 +23,7 @@ public: } java::StackScroller::GlobalRef mOverScroller; + TimeStamp mLastFling; }; class AndroidFlingAnimation: public AsyncPanZoomAnimation { diff --git a/gfx/layers/apz/src/AsyncPanZoomController.cpp b/gfx/layers/apz/src/AsyncPanZoomController.cpp index 0fc165a965a5..626f02a582b6 100644 --- a/gfx/layers/apz/src/AsyncPanZoomController.cpp +++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp @@ -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 diff --git a/gfx/layers/apz/src/GenericFlingAnimation.h b/gfx/layers/apz/src/GenericFlingAnimation.h index 9eeb953fe8a1..deec37b47433 100644 --- a/gfx/layers/apz/src/GenericFlingAnimation.h +++ b/gfx/layers/apz/src/GenericFlingAnimation.h @@ -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", diff --git a/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp b/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp index ceb75e989424..f8797c2737a6 100644 --- a/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp +++ b/gfx/layers/apz/test/gtest/TestScrollHandoff.cpp @@ -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 childApzc = ApzcOf(layers[1]); diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 135a85c2c3b1..62785be48c5f 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -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 client = CreateForDrawing(aAllocator, aSurface->GetFormat(), size, - aSelector, aTextureFlags, aAllocFlags); + aSelector, aTextureFlags, allocFlags); if (!client) { return nullptr; } diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index f8cce039a8a7..32beebfb062b 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -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 diff --git a/gfx/layers/d3d11/TextureD3D11.cpp b/gfx/layers/d3d11/TextureD3D11.cpp index 7800e0b3fe2c..aae0707e4f95 100644 --- a/gfx/layers/d3d11/TextureD3D11.cpp +++ b/gfx/layers/d3d11/TextureD3D11.cpp @@ -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 srcSurf; diff --git a/gfx/thebes/DeviceManagerDx.cpp b/gfx/thebes/DeviceManagerDx.cpp index b2c49498ec91..03fd46731ba2 100644 --- a/gfx/thebes/DeviceManagerDx.cpp +++ b/gfx/thebes/DeviceManagerDx.cpp @@ -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() { diff --git a/gfx/thebes/DeviceManagerDx.h b/gfx/thebes/DeviceManagerDx.h index 013facab947b..617b098e5186 100644 --- a/gfx/thebes/DeviceManagerDx.h +++ b/gfx/thebes/DeviceManagerDx.h @@ -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(); diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp index d7afaf5230ff..388d6e728257 100644 --- a/gfx/thebes/gfxFont.cpp +++ b/gfx/thebes/gfxFont.cpp @@ -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) { diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index 64663748ae3e..7b3b192a35ca 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -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(); diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h index 421d96aec767..bd6452a9d26d 100644 --- a/gfx/thebes/gfxPrefs.h +++ b/gfx/thebes/gfxPrefs.h @@ -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 diff --git a/gfx/thebes/gfxTextRun.cpp b/gfx/thebes/gfxTextRun.cpp index e1bf9638105f..98d0a2826478 100644 --- a/gfx/thebes/gfxTextRun.cpp +++ b/gfx/thebes/gfxTextRun.cpp @@ -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& 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& aRanges, aRanges[lastRangeIndex].end = aLength; -#ifndef RELEASE_BUILD +#ifndef RELEASE_OR_BETA LogModule* log = mStyle.systemFont ? gfxPlatform::GetLog(eGfxLog_textrunui) : gfxPlatform::GetLog(eGfxLog_textrun); diff --git a/gfx/thebes/gfxUserFontSet.cpp b/gfx/thebes/gfxUserFontSet.cpp index 9f28cf2e1868..717292a7ffe2 100644 --- a/gfx/thebes/gfxUserFontSet.cpp +++ b/gfx/thebes/gfxUserFontSet.cpp @@ -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') || diff --git a/ipc/chromium/src/base/pickle.h b/ipc/chromium/src/base/pickle.h index c247c1e1ad77..d031f6124594 100644 --- a/ipc/chromium/src/base/pickle.h +++ b/ipc/chromium/src/base/pickle.h @@ -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 diff --git a/ipc/glue/BackgroundImpl.cpp b/ipc/glue/BackgroundImpl.cpp index dae97c6993f6..16ec2c01ab21 100644 --- a/ipc/glue/BackgroundImpl.cpp +++ b/ipc/glue/BackgroundImpl.cpp @@ -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 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 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp index 2597a62b13dc..02e93a411893 100644 --- a/js/src/builtin/TestingFunctions.cpp +++ b/js/src/builtin/TestingFunctions.cpp @@ -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 diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index 5693b6ed9038..6af61405d968 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -9218,7 +9218,7 @@ template bool Parser::warnOnceAboutExprClosure() { -#ifndef RELEASE_BUILD +#ifndef RELEASE_OR_BETA JSContext* cx = context->maybeJSContext(); if (!cx) return true; diff --git a/js/src/jit-test/tests/parser/expr-closure-warn.js b/js/src/jit-test/tests/parser/expr-closure-warn.js index 3029a8a16ff8..faadd8eb613e 100644 --- a/js/src/jit-test/tests/parser/expr-closure-warn.js +++ b/js/src/jit-test/tests/parser/expr-closure-warn.js @@ -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; } diff --git a/js/xpconnect/tests/chrome/test_xrayToJS.xul b/js/xpconnect/tests/chrome/test_xrayToJS.xul index 809d8988e157..53f0100c6537 100644 --- a/js/xpconnect/tests/chrome/test_xrayToJS.xul +++ b/js/xpconnect/tests/chrome/test_xrayToJS.xul @@ -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) { diff --git a/media/ffvpx/ffvpxcommon.mozbuild b/media/ffvpx/ffvpxcommon.mozbuild index e0cccfd709ce..3a83f781d3f3 100644 --- a/media/ffvpx/ffvpxcommon.mozbuild +++ b/media/ffvpx/ffvpxcommon.mozbuild @@ -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 diff --git a/media/libav/moz.build b/media/libav/moz.build index 94a92a8e9ec8..ec0de8bd048a 100644 --- a/media/libav/moz.build +++ b/media/libav/moz.build @@ -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 diff --git a/media/libstagefright/binding/MP4Metadata.cpp b/media/libstagefright/binding/MP4Metadata.cpp index 027a5fbeb13e..a50730845247 100644 --- a/media/libstagefright/binding/MP4Metadata.cpp +++ b/media/libstagefright/binding/MP4Metadata.cpp @@ -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 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); diff --git a/media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h b/media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h index 9a43dd352684..83eca69d33c4 100644 --- a/media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h +++ b/media/libstagefright/binding/include/mp4_demuxer/MP4Metadata.h @@ -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; diff --git a/mfbt/Assertions.h b/mfbt/Assertions.h index 4361c253a649..cf2b5232572d 100644 --- a/mfbt/Assertions.h +++ b/mfbt/Assertions.h @@ -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 diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js index 256bbc8537ee..8cad5465ec61 100644 --- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -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 diff --git a/mobile/android/base/AppConstants.java.in b/mobile/android/base/AppConstants.java.in index 6fd2532fd661..fa50440d5fe7 100644 --- a/mobile/android/base/AppConstants.java.in +++ b/mobile/android/base/AppConstants.java.in @@ -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; diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index b025b3529b1a..1f3d6bbb327f 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -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); diff --git a/mobile/android/base/java/org/mozilla/gecko/Telemetry.java b/mobile/android/base/java/org/mozilla/gecko/Telemetry.java index 306cdd0cb97a..342445bf21c9 100644 --- a/mobile/android/base/java/org/mozilla/gecko/Telemetry.java +++ b/mobile/android/base/java/org/mozilla/gecko/Telemetry.java @@ -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); diff --git a/mobile/android/base/java/org/mozilla/gecko/menu/GeckoMenu.java b/mobile/android/base/java/org/mozilla/gecko/menu/GeckoMenu.java index b7b1102f552f..512f320025d7 100644 --- a/mobile/android/base/java/org/mozilla/gecko/menu/GeckoMenu.java +++ b/mobile/android/base/java/org/mozilla/gecko/menu/GeckoMenu.java @@ -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. diff --git a/mobile/android/base/java/org/mozilla/gecko/updater/UpdateService.java b/mobile/android/base/java/org/mozilla/gecko/updater/UpdateService.java index 018a59c67e77..21f33fc26afd 100644 --- a/mobile/android/base/java/org/mozilla/gecko/updater/UpdateService.java +++ b/mobile/android/base/java/org/mozilla/gecko/updater/UpdateService.java @@ -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; diff --git a/mobile/android/chrome/content/about.xhtml b/mobile/android/chrome/content/about.xhtml index 0a490f506705..8a4c283571c6 100644 --- a/mobile/android/chrome/content/about.xhtml +++ b/mobile/android/chrome/content/about.xhtml @@ -65,7 +65,7 @@
-#ifdef RELEASE_BUILD +#ifdef RELEASE_OR_BETA

&aboutPage.logoTrademark;

diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 9465ec5a78b5..b31cba1b9b52 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -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()); } diff --git a/mobile/android/chrome/jar.mn b/mobile/android/chrome/jar.mn index fd5074d53f42..199a4511bab6 100644 --- a/mobile/android/chrome/jar.mn +++ b/mobile/android/chrome/jar.mn @@ -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 diff --git a/mobile/android/components/MobileComponents.manifest b/mobile/android/components/MobileComponents.manifest index 462fc70a1654..ed38b9fa8587 100644 --- a/mobile/android/components/MobileComponents.manifest +++ b/mobile/android/components/MobileComponents.manifest @@ -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} diff --git a/mobile/android/confvars.sh b/mobile/android/confvars.sh index 448f074cd70e..f4f83768adfc 100644 --- a/mobile/android/confvars.sh +++ b/mobile/android/confvars.sh @@ -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 diff --git a/mobile/android/docs/adjust.rst b/mobile/android/docs/adjust.rst index a37e172c5d58..16cb85b2bb24 100644 --- a/mobile/android/docs/adjust.rst +++ b/mobile/android/docs/adjust.rst @@ -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. diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/EventDispatcher.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/EventDispatcher.java index 61a72f83880a..6c4e67b433a0 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/EventDispatcher.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/EventDispatcher.java @@ -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 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 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. diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoProfile.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoProfile.java index 07f2b4915976..27ec4f1dd6af 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoProfile.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoProfile.java @@ -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."); } diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/StackScroller.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/StackScroller.java index aae8235bc614..293268cba14f 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/StackScroller.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/StackScroller.java @@ -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; } } diff --git a/mobile/android/installer/package-manifest.in b/mobile/android/installer/package-manifest.in index 282ea000e6e1..186b51b674cb 100644 --- a/mobile/android/installer/package-manifest.in +++ b/mobile/android/installer/package-manifest.in @@ -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 diff --git a/mobile/android/locales/jar.mn b/mobile/android/locales/jar.mn index a2146319a7ac..011e409c2cb2 100644 --- a/mobile/android/locales/jar.mn +++ b/mobile/android/locales/jar.mn @@ -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/ diff --git a/mobile/android/tests/browser/junit3/src/org/mozilla/tests/browser/junit3/TestGeckoMenu.java b/mobile/android/tests/browser/junit3/src/org/mozilla/tests/browser/junit3/TestGeckoMenu.java index c8374401d907..15be26004107 100644 --- a/mobile/android/tests/browser/junit3/src/org/mozilla/tests/browser/junit3/TestGeckoMenu.java +++ b/mobile/android/tests/browser/junit3/src/org/mozilla/tests/browser/junit3/TestGeckoMenu.java @@ -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; diff --git a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGetUserMedia.java b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGetUserMedia.java index 5bbf366ef1b4..405ddef7a8a6 100644 --- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGetUserMedia.java +++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGetUserMedia.java @@ -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; } diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 48758e31f111..4f4404b03cc2 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -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); diff --git a/moz.configure b/moz.configure index 3b9269b10011..4802e5ed4996 100644 --- a/moz.configure +++ b/moz.configure @@ -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) diff --git a/mozglue/android/APKOpen.cpp b/mozglue/android/APKOpen.cpp index 1b5dc987bb65..9a70cf1251af 100644 --- a/mozglue/android/APKOpen.cpp +++ b/mozglue/android/APKOpen.cpp @@ -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 diff --git a/netwerk/base/security-prefs.js b/netwerk/base/security-prefs.js index c4696a0057a8..b0c9916c87f5 100644 --- a/netwerk/base/security-prefs.js +++ b/netwerk/base/security-prefs.js @@ -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 diff --git a/netwerk/ipc/NeckoParent.cpp b/netwerk/ipc/NeckoParent.cpp index 4998dfbafdb5..5553378d3498 100644 --- a/netwerk/ipc/NeckoParent.cpp +++ b/netwerk/ipc/NeckoParent.cpp @@ -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 diff --git a/old-configure.in b/old-configure.in index c25d1372c1b8..85c2fbbddbe2 100644 --- a/old-configure.in +++ b/old-configure.in @@ -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) diff --git a/python/mozbuild/mozbuild/mozinfo.py b/python/mozbuild/mozbuild/mozinfo.py index 35a3a7c00728..f0b0df9bb0af 100755 --- a/python/mozbuild/mozbuild/mozinfo.py +++ b/python/mozbuild/mozbuild/mozinfo.py @@ -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')) diff --git a/testing/mozharness/configs/single_locale/release_mozilla-beta_android_api_15.py b/testing/mozharness/configs/single_locale/release_mozilla-beta_android_api_15.py index e2e9c9c34218..976f21f44407 100644 --- a/testing/mozharness/configs/single_locale/release_mozilla-beta_android_api_15.py +++ b/testing/mozharness/configs/single_locale/release_mozilla-beta_android_api_15.py @@ -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, diff --git a/testing/mozharness/configs/single_locale/release_mozilla-release_android_api_15.py b/testing/mozharness/configs/single_locale/release_mozilla-release_android_api_15.py index eaa2309e994f..22d0074bbae9 100644 --- a/testing/mozharness/configs/single_locale/release_mozilla-release_android_api_15.py +++ b/testing/mozharness/configs/single_locale/release_mozilla-release_android_api_15.py @@ -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, diff --git a/testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android_api_15.py b/testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android_api_15.py index fae2e89d9a87..7f7d3e4e27f5 100644 --- a/testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android_api_15.py +++ b/testing/mozharness/configs/single_locale/staging_release_mozilla-beta_android_api_15.py @@ -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, diff --git a/testing/mozharness/configs/single_locale/staging_release_mozilla-release_android_api_15.py b/testing/mozharness/configs/single_locale/staging_release_mozilla-release_android_api_15.py index 7fed4f454302..da4803a60f4f 100644 --- a/testing/mozharness/configs/single_locale/staging_release_mozilla-release_android_api_15.py +++ b/testing/mozharness/configs/single_locale/staging_release_mozilla-release_android_api_15.py @@ -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, diff --git a/testing/mozharness/scripts/mobile_l10n.py b/testing/mozharness/scripts/mobile_l10n.py index 456947727e95..cbac6fa678f9 100755 --- a/testing/mozharness/scripts/mobile_l10n.py +++ b/testing/mozharness/scripts/mobile_l10n.py @@ -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 diff --git a/testing/xpcshell/selftest.py b/testing/xpcshell/selftest.py index 845a03cfb567..e725fcb6d925 100755 --- a/testing/xpcshell/selftest.py +++ b/testing/xpcshell/selftest.py @@ -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.") diff --git a/toolkit/components/extensions/Extension.jsm b/toolkit/components/extensions/Extension.jsm index 73fe32c201d0..f52917637cb7 100644 --- a/toolkit/components/extensions/Extension.jsm +++ b/toolkit/components/extensions/Extension.jsm @@ -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; } diff --git a/toolkit/components/extensions/ExtensionContent.jsm b/toolkit/components/extensions/ExtensionContent.jsm index 0399a0e79792..4cc6d55a51ea 100644 --- a/toolkit/components/extensions/ExtensionContent.jsm +++ b/toolkit/components/extensions/ExtensionContent.jsm @@ -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; } diff --git a/toolkit/components/extensions/test/xpcshell/xpcshell.ini b/toolkit/components/extensions/test/xpcshell/xpcshell.ini index 26a4918a7ffe..54199bef2a0b 100644 --- a/toolkit/components/extensions/test/xpcshell/xpcshell.ini +++ b/toolkit/components/extensions/test/xpcshell/xpcshell.ini @@ -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] diff --git a/toolkit/components/telemetry/docs/internals/preferences.rst b/toolkit/components/telemetry/docs/internals/preferences.rst index 177c61ce80e4..bd5e0ec00c99 100644 --- a/toolkit/components/telemetry/docs/internals/preferences.rst +++ b/toolkit/components/telemetry/docs/internals/preferences.rst @@ -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`` diff --git a/toolkit/modules/AppConstants.jsm b/toolkit/modules/AppConstants.jsm index ebbd143b4ddd..7ce8e1f09af4 100644 --- a/toolkit/modules/AppConstants.jsm +++ b/toolkit/modules/AppConstants.jsm @@ -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, diff --git a/toolkit/modules/addons/WebRequest.jsm b/toolkit/modules/addons/WebRequest.jsm index cc3000b4c7ee..b7c413ca04e8 100644 --- a/toolkit/modules/addons/WebRequest.jsm +++ b/toolkit/modules/addons/WebRequest.jsm @@ -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; diff --git a/toolkit/modules/secondscreen/RokuApp.jsm b/toolkit/modules/secondscreen/RokuApp.jsm index 496ab1cd1f3b..6b8d8181d902 100644 --- a/toolkit/modules/secondscreen/RokuApp.jsm +++ b/toolkit/modules/secondscreen/RokuApp.jsm @@ -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; } diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index 80d4cda57556..3d4f5944a7fe 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -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 diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js b/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js index 5711844a6513..9933ec0ea16a 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_webextension.js @@ -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; diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp index 93f455cb6679..39143329aa28 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp @@ -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 diff --git a/widget/android/jni/Utils.h b/widget/android/jni/Utils.h index 6753b661831a..38e0b6b0c889 100644 --- a/widget/android/jni/Utils.h +++ b/widget/android/jni/Utils.h @@ -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 diff --git a/widget/cocoa/moz.build b/widget/cocoa/moz.build index 66ba2de18bd7..7c995d900ae9 100644 --- a/widget/cocoa/moz.build +++ b/widget/cocoa/moz.build @@ -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', ] diff --git a/widget/cocoa/nsAppShell.mm b/widget/cocoa/nsAppShell.mm index da4e4f526594..b57904389e49 100644 --- a/widget/cocoa/nsAppShell.mm +++ b/widget/cocoa/nsAppShell.mm @@ -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 diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm index 78213b7841f8..64dea31a94da 100644 --- a/widget/cocoa/nsChildView.mm +++ b/widget/cocoa/nsChildView.mm @@ -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; diff --git a/xpcom/base/Logging.h b/xpcom/base/Logging.h index ff8a0e64ac5b..040fb9c49720 100644 --- a/xpcom/base/Logging.h +++ b/xpcom/base/Logging.h @@ -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 diff --git a/xpcom/build/IOInterposer.h b/xpcom/build/IOInterposer.h index e5abc51a55f8..a07dfe9d947c 100644 --- a/xpcom/build/IOInterposer.h +++ b/xpcom/build/IOInterposer.h @@ -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 } diff --git a/xpcom/glue/nsCRTGlue.cpp b/xpcom/glue/nsCRTGlue.cpp index 3438f46e1959..7a9f6db03031 100644 --- a/xpcom/glue/nsCRTGlue.cpp +++ b/xpcom/glue/nsCRTGlue.cpp @@ -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 diff --git a/xpcom/glue/nsDebug.h b/xpcom/glue/nsDebug.h index 86495e47f0aa..7365f9ce34b4 100644 --- a/xpcom/glue/nsDebug.h +++ b/xpcom/glue/nsDebug.h @@ -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. // diff --git a/xpcom/system/nsIXULRuntime.idl b/xpcom/system/nsIXULRuntime.idl index edb2d3e96fb2..128592fd4289 100644 --- a/xpcom/system/nsIXULRuntime.idl +++ b/xpcom/system/nsIXULRuntime.idl @@ -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;