diff options
Diffstat (limited to '')
-rw-r--r-- | toolkit/modules/AppConstants.sys.mjs | 475 |
1 files changed, 475 insertions, 0 deletions
diff --git a/toolkit/modules/AppConstants.sys.mjs b/toolkit/modules/AppConstants.sys.mjs new file mode 100644 index 0000000000..b430666f68 --- /dev/null +++ b/toolkit/modules/AppConstants.sys.mjs @@ -0,0 +1,475 @@ +#filter substitution +#include @TOPOBJDIR@/source-repo.h +#include @TOPOBJDIR@/buildid.h +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +const lazy = {}; +ChromeUtils.defineModuleGetter(lazy, "AddonManager", "resource://gre/modules/AddonManager.jsm"); + +// Immutable for export. +export var AppConstants = Object.freeze({ + // See this wiki page for more details about channel specific build + // defines: https://wiki.mozilla.org/Platform/Channel-specific_build_defines + NIGHTLY_BUILD: +#ifdef NIGHTLY_BUILD + true, +#else + false, +#endif + + RELEASE_OR_BETA: +#ifdef RELEASE_OR_BETA + true, +#else + false, +#endif + + EARLY_BETA_OR_EARLIER: +#ifdef EARLY_BETA_OR_EARLIER + true, +#else + false, +#endif + + IS_ESR: +#ifdef MOZ_ESR + true, +#else + false, +#endif + + ACCESSIBILITY: +#ifdef ACCESSIBILITY + true, +#else + false, +#endif + + // Official corresponds, roughly, to whether this build is performed + // on Mozilla's continuous integration infrastructure. You should + // disable developer-only functionality when this flag is set. + MOZILLA_OFFICIAL: +#ifdef MOZILLA_OFFICIAL + true, +#else + false, +#endif + + MOZ_OFFICIAL_BRANDING: +#ifdef MOZ_OFFICIAL_BRANDING + true, +#else + false, +#endif + + MOZ_DEV_EDITION: +#ifdef MOZ_DEV_EDITION + true, +#else + false, +#endif + + MOZ_SERVICES_SYNC: +#ifdef MOZ_SERVICES_SYNC + true, +#else + false, +#endif + + MOZ_SERVICES_HEALTHREPORT: +#ifdef MOZ_SERVICES_HEALTHREPORT + true, +#else + false, +#endif + + MOZ_DATA_REPORTING: +#ifdef MOZ_DATA_REPORTING + true, +#else + false, +#endif + + MOZ_SANDBOX: +#ifdef MOZ_SANDBOX + true, +#else + false, +#endif + + MOZ_TELEMETRY_REPORTING: +#ifdef MOZ_TELEMETRY_REPORTING + true, +#else + false, +#endif + + MOZ_TELEMETRY_ON_BY_DEFAULT: +#ifdef MOZ_TELEMETRY_ON_BY_DEFAULT + true, +#else + false, +#endif + + MOZ_UPDATER: +#ifdef MOZ_UPDATER + true, +#else + false, +#endif + + MOZ_SWITCHBOARD: +#ifdef MOZ_SWITCHBOARD + true, +#else + false, +#endif + + MOZ_WEBRTC: +#ifdef MOZ_WEBRTC + true, +#else + false, +#endif + + MOZ_WIDGET_GTK: +#ifdef MOZ_WIDGET_GTK + true, +#else + false, +#endif + + XP_UNIX: +#ifdef XP_UNIX + true, +#else + false, +#endif + +// NOTE! XP_LINUX has to go after MOZ_WIDGET_ANDROID otherwise Android +// builds will be misidentified as linux. + platform: +#ifdef MOZ_WIDGET_GTK + "linux", +#elif XP_WIN + "win", +#elif XP_MACOSX + "macosx", +#elif MOZ_WIDGET_ANDROID + "android", +#elif XP_LINUX + "linux", +#else + "other", +#endif + +// Most of our frontend code assumes that any desktop Unix platform +// is "linux". Add the distinction for code that needs it. + unixstyle: +#ifdef XP_LINUX + "linux", +#elif XP_OPENBSD + "openbsd", +#elif XP_NETBSD + "netbsd", +#elif XP_FREEBSD + "freebsd", +#elif XP_SOLARIS + "solaris", +#else + "other", +#endif + + isPlatformAndVersionAtLeast(platform, version) { + let platformVersion = Services.sysinfo.getProperty("version"); + return platform == this.platform && + Services.vc.compare(platformVersion, version) >= 0; + }, + + isPlatformAndVersionAtMost(platform, version) { + let platformVersion = Services.sysinfo.getProperty("version"); + return platform == this.platform && + Services.vc.compare(platformVersion, version) <= 0; + }, + + MOZ_CRASHREPORTER: +#ifdef MOZ_CRASHREPORTER + true, +#else + false, +#endif + + MOZ_NORMANDY: +#ifdef MOZ_NORMANDY + true, +#else + false, +#endif + + MOZ_MAINTENANCE_SERVICE: +#ifdef MOZ_MAINTENANCE_SERVICE + true, +#else + false, +#endif + + MOZ_BACKGROUNDTASKS: +#ifdef MOZ_BACKGROUNDTASKS + true, +#else + false, +#endif + + MOZ_UPDATE_AGENT: +#ifdef MOZ_UPDATE_AGENT + true, +#else + false, +#endif + + MOZ_BITS_DOWNLOAD: +#ifdef MOZ_BITS_DOWNLOAD + true, +#else + false, +#endif + + DEBUG: +#ifdef DEBUG + true, +#else + false, +#endif + + ASAN: +#ifdef MOZ_ASAN + true, +#else + false, +#endif + + ASAN_REPORTER: +#ifdef MOZ_ASAN_REPORTER + true, +#else + false, +#endif + + TSAN: +#ifdef MOZ_TSAN + true, +#else + false, +#endif + + MOZ_SYSTEM_NSS: +#ifdef MOZ_SYSTEM_NSS + true, +#else + false, +#endif + + MOZ_PLACES: +#ifdef MOZ_PLACES + true, +#else + false, +#endif + + MOZ_REQUIRE_SIGNING: +#ifdef MOZ_REQUIRE_SIGNING + true, +#else + false, +#endif + + get MOZ_UNSIGNED_SCOPES() { + let result = 0; +#ifdef MOZ_UNSIGNED_APP_SCOPE + result |= lazy.AddonManager.SCOPE_APPLICATION; +#endif +#ifdef MOZ_UNSIGNED_SYSTEM_SCOPE + result |= lazy.AddonManager.SCOPE_SYSTEM; +#endif + return result; + }, + + MOZ_ALLOW_ADDON_SIDELOAD: +#ifdef MOZ_ALLOW_ADDON_SIDELOAD + true, +#else + false, +#endif + + MOZ_WEBEXT_WEBIDL_ENABLED: +#ifdef MOZ_WEBEXT_WEBIDL_ENABLED + true, +#else + false, +#endif + + MENUBAR_CAN_AUTOHIDE: +#ifdef MENUBAR_CAN_AUTOHIDE + true, +#else + false, +#endif + + MOZ_ANDROID_HISTORY: +#ifdef MOZ_ANDROID_HISTORY + true, +#else + false, +#endif + + MOZ_GECKO_PROFILER: +#ifdef MOZ_GECKO_PROFILER + true, +#else + false, +#endif + + DLL_PREFIX: "@DLL_PREFIX@", + DLL_SUFFIX: "@DLL_SUFFIX@", + + MOZ_APP_NAME: "@MOZ_APP_NAME@", + MOZ_APP_BASENAME: "@MOZ_APP_BASENAME@", + // N.b.: you almost certainly want brandShortName/brand-short-name: + // MOZ_APP_DISPLAYNAME should only be used for static user-visible + // fields (e.g., DLL properties, Mac Bundle name, or similar). + MOZ_APP_DISPLAYNAME_DO_NOT_USE: "@MOZ_APP_DISPLAYNAME@", + MOZ_APP_VERSION: "@MOZ_APP_VERSION@", + MOZ_APP_VERSION_DISPLAY: "@MOZ_APP_VERSION_DISPLAY@", + MOZ_BUILDID: "@MOZ_BUILDID@", + MOZ_BUILD_APP: "@MOZ_BUILD_APP@", + MOZ_MACBUNDLE_ID: "@MOZ_MACBUNDLE_ID@", + MOZ_MACBUNDLE_NAME: "@MOZ_MACBUNDLE_NAME@", + MOZ_UPDATE_CHANNEL: "@MOZ_UPDATE_CHANNEL@", + MOZ_WIDGET_TOOLKIT: "@MOZ_WIDGET_TOOLKIT@", + ANDROID_PACKAGE_NAME: "@ANDROID_PACKAGE_NAME@", + + DEBUG_JS_MODULES: "@DEBUG_JS_MODULES@", + + MOZ_BING_API_CLIENTID: "@MOZ_BING_API_CLIENTID@", + MOZ_BING_API_KEY: "@MOZ_BING_API_KEY@", + MOZ_GOOGLE_LOCATION_SERVICE_API_KEY: "@MOZ_GOOGLE_LOCATION_SERVICE_API_KEY@", + MOZ_GOOGLE_SAFEBROWSING_API_KEY: "@MOZ_GOOGLE_SAFEBROWSING_API_KEY@", + MOZ_MOZILLA_API_KEY: "@MOZ_MOZILLA_API_KEY@", + + BROWSER_CHROME_URL: "@BROWSER_CHROME_URL@", + + OMNIJAR_NAME: "@OMNIJAR_NAME@", + + // URL to the hg revision this was built from (e.g. + // "https://hg.mozilla.org/mozilla-central/rev/6256ec9113c1") + // On unofficial builds, this is an empty string. +#ifndef MOZ_SOURCE_URL +#define MOZ_SOURCE_URL +#endif + SOURCE_REVISION_URL: "@MOZ_SOURCE_URL@", + + HAVE_USR_LIB64_DIR: +#ifdef HAVE_USR_LIB64_DIR + true, +#else + false, +#endif + + HAVE_SHELL_SERVICE: +#ifdef HAVE_SHELL_SERVICE + true, +#else + false, +#endif + + MOZ_CODE_COVERAGE: +#ifdef MOZ_CODE_COVERAGE + true, +#else + false, +#endif + + TELEMETRY_PING_FORMAT_VERSION: @TELEMETRY_PING_FORMAT_VERSION@, + + MOZ_NEW_NOTIFICATION_STORE: +#ifdef MOZ_NEW_NOTIFICATION_STORE + true, +#else + false, +#endif + + ENABLE_WEBDRIVER: +#ifdef ENABLE_WEBDRIVER + true, +#else + false, +#endif + + REMOTE_SETTINGS_SERVER_URL: +#ifdef MOZ_THUNDERBIRD + "https://thunderbird-settings.thunderbird.net/v1", +#else + "https://firefox.settings.services.mozilla.com/v1", +#endif + + REMOTE_SETTINGS_VERIFY_SIGNATURE: +#ifdef MOZ_THUNDERBIRD + false, +#else + true, +#endif + + REMOTE_SETTINGS_DEFAULT_BUCKET: +#ifdef MOZ_THUNDERBIRD + "thunderbird", +#else + "main", +#endif + + MOZ_GLEAN_ANDROID: +#ifdef MOZ_GLEAN_ANDROID + true, +#else + false, +#endif + + MOZ_JXL: +#ifdef MOZ_JXL + true, +#else + false, +#endif + + MOZ_CAN_FOLLOW_SYSTEM_TIME: +#ifdef XP_WIN + true, +#elif XP_MACOSX + true, +#elif MOZ_WIDGET_GTK + #ifdef MOZ_ENABLE_DBUS + true, + #else + false, + #endif +#else + false, +#endif + + MOZ_SYSTEM_POLICIES: +#ifdef MOZ_SYSTEM_POLICIES + true, +#else + false, +#endif + + // Returns true for CN region build when distibution id set as 'MozillaOnline' + isChinaRepack() { + return ( + Services.prefs + .getDefaultBranch("") + .getCharPref("distribution.id", "default") === "MozillaOnline" + ); + }, +}); |