diff options
Diffstat (limited to 'mobile/android/base/AppConstants.java.in')
-rw-r--r-- | mobile/android/base/AppConstants.java.in | 349 |
1 files changed, 349 insertions, 0 deletions
diff --git a/mobile/android/base/AppConstants.java.in b/mobile/android/base/AppConstants.java.in new file mode 100644 index 000000000..25a6a456e --- /dev/null +++ b/mobile/android/base/AppConstants.java.in @@ -0,0 +1,349 @@ +//#filter substitution +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * 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/. */ + +package org.mozilla.gecko; + +import android.content.Context; +import android.os.Build; +//#ifdef MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE +import android.support.multidex.MultiDex; +//#endif + +/** + * A collection of constants that pertain to the build and runtime state of the + * application. Typically these are sourced from build-time definitions (see + * Makefile.in). This is a Java-side substitute for nsIXULAppInfo, amongst + * other things. + * + * See also SysInfo.java, which includes some of the values available from + * nsSystemInfo inside Gecko. + */ +// Normally, we'd annotate with @RobocopTarget. Since AppConstants is compiled +// before RobocopTarget, we instead add o.m.g.AppConstants directly to the +// Proguard configuration. +public class AppConstants { + public static final String ANDROID_PACKAGE_NAME = "@ANDROID_PACKAGE_NAME@"; + public static final String MANGLED_ANDROID_PACKAGE_NAME = "@MANGLED_ANDROID_PACKAGE_NAME@"; + + public static final String MOZ_ANDROID_SHARED_FXACCOUNT_TYPE = "@ANDROID_PACKAGE_NAME@_fxaccount"; + + /** + * Encapsulates access to compile-time version definitions, allowing + * for dead code removal for particular APKs. + */ + public static final class Versions { + public static final int MIN_SDK_VERSION = @MOZ_ANDROID_MIN_SDK_VERSION@; + public static final int MAX_SDK_VERSION = +//#ifdef MOZ_ANDROID_MAX_SDK_VERSION + @MOZ_ANDROID_MAX_SDK_VERSION@; +//#else + 999; +//#endif + + /* + * The SDK_INT >= N check can only pass if our MAX_SDK_VERSION is + * _greater than or equal_ to that number, because otherwise we + * won't be installed on the device. + * + * If MIN_SDK_VERSION is greater than or equal to the number, there + * is no need to do the runtime check. + */ + public static final boolean feature16Plus = MIN_SDK_VERSION >= 16 || (MAX_SDK_VERSION >= 16 && Build.VERSION.SDK_INT >= 16); + public static final boolean feature17Plus = MIN_SDK_VERSION >= 17 || (MAX_SDK_VERSION >= 17 && Build.VERSION.SDK_INT >= 17); + public static final boolean feature19Plus = MIN_SDK_VERSION >= 19 || (MAX_SDK_VERSION >= 19 && Build.VERSION.SDK_INT >= 19); + public static final boolean feature20Plus = MIN_SDK_VERSION >= 20 || (MAX_SDK_VERSION >= 20 && Build.VERSION.SDK_INT >= 20); + public static final boolean feature21Plus = MIN_SDK_VERSION >= 21 || (MAX_SDK_VERSION >= 21 && Build.VERSION.SDK_INT >= 21); + + /* + * If our MIN_SDK_VERSION is 14 or higher, we must be an ICS device. + * If our MAX_SDK_VERSION is lower than ICS, we must not be an ICS device. + * Otherwise, we need a range check. + */ + public static final boolean preMarshmallow = MAX_SDK_VERSION < 23 || (MIN_SDK_VERSION < 23 && Build.VERSION.SDK_INT < 23); + public static final boolean preLollipop = MAX_SDK_VERSION < 21 || (MIN_SDK_VERSION < 21 && Build.VERSION.SDK_INT < 21); + public static final boolean preJBMR2 = MAX_SDK_VERSION < 18 || (MIN_SDK_VERSION < 18 && Build.VERSION.SDK_INT < 18); + public static final boolean preJBMR1 = MAX_SDK_VERSION < 17 || (MIN_SDK_VERSION < 17 && Build.VERSION.SDK_INT < 17); + public static final boolean preJB = MAX_SDK_VERSION < 16 || (MIN_SDK_VERSION < 16 && Build.VERSION.SDK_INT < 16); + public static final boolean preN = MAX_SDK_VERSION < 24 || (MIN_SDK_VERSION < 24 && Build.VERSION.SDK_INT < 24); + } + + /** + * The name of the Java class that represents the android application. + */ + public static final String MOZ_ANDROID_APPLICATION_CLASS = "@MOZ_ANDROID_APPLICATION_CLASS@"; + /** + * The name of the Java class that launches the browser activity. + */ + public static final String MOZ_ANDROID_BROWSER_INTENT_CLASS = "@MOZ_ANDROID_BROWSER_INTENT_CLASS@"; + /** + * The name of the Java class that launches the search activity. + */ + public static final String MOZ_ANDROID_SEARCH_INTENT_CLASS = "@MOZ_ANDROID_SEARCH_INTENT_CLASS@"; + + public static final String GRE_MILESTONE = "@GRE_MILESTONE@"; + + public static final String MOZ_APP_ABI = "@MOZ_APP_ABI@"; + public static final String MOZ_APP_BASENAME = "@MOZ_APP_BASENAME@"; + + // For the benefit of future archaeologists: + // GRE_BUILDID is exactly the same as MOZ_APP_BUILDID unless you're running + // on XULRunner, which is never the case on Android. + public static final String MOZ_APP_BUILDID = "@MOZ_BUILDID@"; + public static final String MOZ_APP_ID = "@MOZ_APP_ID@"; + public static final String MOZ_APP_NAME = "@MOZ_APP_NAME@"; + public static final String MOZ_APP_VENDOR = "@MOZ_APP_VENDOR@"; + public static final String MOZ_APP_VERSION = "@MOZ_APP_VERSION@"; + public static final String MOZ_APP_DISPLAYNAME = "@MOZ_APP_DISPLAYNAME@"; + // MOZ_APP_UA_NAME is already quoted when it gets substituted, like MOZILLA_VERSION. + public static final String MOZ_APP_UA_NAME = @MOZ_APP_UA_NAME@; + + // MOZILLA_VERSION is already quoted when it gets substituted in. If we + // add additional quotes we end up with ""x.y"", which is a syntax error. + public static final String MOZILLA_VERSION = @MOZILLA_VERSION@; + + public static final String MOZ_MOZILLA_API_KEY = "@MOZ_MOZILLA_API_KEY@"; + public static final boolean MOZ_STUMBLER_BUILD_TIME_ENABLED = +//#ifdef MOZ_ANDROID_MLS_STUMBLER + true; +//#else + false; +//#endif + + public static final boolean MOZ_ANDROID_GCM = +//#ifdef MOZ_ANDROID_GCM + true; +//#else + false; +//#endif + + public static final String MOZ_ANDROID_GCM_SENDERID = +//#ifdef MOZ_ANDROID_GCM_SENDERID + "@MOZ_ANDROID_GCM_SENDERID@"; +//#else + null; +//#endif + + public static final String MOZ_CHILD_PROCESS_NAME = "@MOZ_CHILD_PROCESS_NAME@"; + public static final String MOZ_UPDATE_CHANNEL = "@MOZ_UPDATE_CHANNEL@"; + public static final String OMNIJAR_NAME = "@OMNIJAR_NAME@"; + public static final String OS_TARGET = "@OS_TARGET@"; + public static final String TARGET_XPCOM_ABI = @TARGET_XPCOM_ABI@; + + public static final String USER_AGENT_BOT_LIKE = "Redirector/" + AppConstants.MOZ_APP_VERSION + + " (Android; rv:" + AppConstants.MOZ_APP_VERSION + ")"; + + public static final String USER_AGENT_FENNEC_MOBILE = "Mozilla/5.0 (Android " + + Build.VERSION.RELEASE + "; Mobile; rv:" + + AppConstants.MOZ_APP_VERSION + ") Gecko/" + + AppConstants.MOZ_APP_VERSION + " Firefox/" + + AppConstants.MOZ_APP_VERSION; + + public static final String USER_AGENT_FENNEC_TABLET = "Mozilla/5.0 (Android " + + Build.VERSION.RELEASE + "; Tablet; rv:" + + AppConstants.MOZ_APP_VERSION + ") Gecko/" + + AppConstants.MOZ_APP_VERSION + " Firefox/" + + AppConstants.MOZ_APP_VERSION; + + public static final int MOZ_MIN_CPU_VERSION = @MOZ_MIN_CPU_VERSION@; + + public static final boolean MOZ_ANDROID_ANR_REPORTER = +//#ifdef MOZ_ANDROID_ANR_REPORTER + true; +//#else + false; +//#endif + + public static final String MOZ_PKG_SPECIAL = +//#ifdef MOZ_PKG_SPECIAL + "@MOZ_PKG_SPECIAL@"; +//#else + null; +//#endif + + public static final boolean MOZ_EXCLUDE_HYPHENATION_DICTIONARIES = +//#ifdef MOZ_EXCLUDE_HYPHENATION_DICTIONARIES + true; +//#else + false; +//#endif + + public static final boolean MOZ_SERVICES_HEALTHREPORT = +//#ifdef MOZ_SERVICES_HEALTHREPORT + true; +//#else + false; +//#endif + + public static final boolean MOZ_TELEMETRY_ON_BY_DEFAULT = +//#ifdef MOZ_TELEMETRY_ON_BY_DEFAULT + true; +//#else + false; +//#endif + + public static final String TELEMETRY_PREF_NAME = + "toolkit.telemetry.enabled"; + + public static final boolean MOZ_TELEMETRY_REPORTING = +//#ifdef MOZ_TELEMETRY_REPORTING + true; +//#else + false; +//#endif + + public static final boolean MOZ_CRASHREPORTER = +//#if MOZ_CRASHREPORTER + true; +//#else + false; +//#endif + + public static final boolean MOZ_DATA_REPORTING = +//#ifdef MOZ_DATA_REPORTING + true; +//#else + false; +//#endif + + public static final boolean MOZ_LOCALE_SWITCHER = +//#ifdef MOZ_LOCALE_SWITCHER + true; +//#else + false; +//#endif + + public static final boolean MOZ_UPDATER = +//#ifdef MOZ_UPDATER + true; +//#else + false; +//#endif + + // Android Beam is only supported on API14+, so we don't even bother building + // it if this APK doesn't include API14 support. + public static final boolean MOZ_ANDROID_BEAM = +//#ifdef MOZ_ANDROID_BEAM + true; +//#else + false; +//#endif + + // 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_OR_BETA = +//#ifdef RELEASE_OR_BETA + true; +//#else + false; +//#endif + + public static final boolean NIGHTLY_BUILD = +//#ifdef NIGHTLY_BUILD + true; +//#else + false; +//#endif + + public static final boolean DEBUG_BUILD = +//#ifdef MOZ_DEBUG + true; +//#else + false; +//#endif + + public static final boolean MOZ_MEDIA_PLAYER = +//#ifdef MOZ_NATIVE_DEVICES + 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. + public static final boolean MOZILLA_OFFICIAL = +//#ifdef MOZILLA_OFFICIAL + true; +//#else + false; +//#endif + + public static final boolean ANDROID_DOWNLOADS_INTEGRATION = +//#ifdef MOZ_ANDROID_DOWNLOADS_INTEGRATION + true; +//#else + false; +//#endif + + public static final boolean MOZ_DRAGGABLE_URLBAR = false; + + public static final boolean MOZ_INSTALL_TRACKING = +//#ifdef MOZ_INSTALL_TRACKING + true; +//#else + false; +//#endif + + public static final boolean MOZ_SWITCHBOARD = +//#ifdef MOZ_SWITCHBOARD + true; +//#else + false; +//#endif + + /** + * Target CPU architecture: "armeabi-v7a", "x86, "mips", .. + */ + public static final String ANDROID_CPU_ARCH = "@ANDROID_CPU_ARCH@"; + + public static final boolean MOZ_ANDROID_EXCLUDE_FONTS = +//#ifdef MOZ_ANDROID_EXCLUDE_FONTS + true; +//#else + false; +//#endif + + public static final boolean MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE = +//#ifdef MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE + true; +//#else + false; +//#endif + + public static final boolean MOZ_ANDROID_CUSTOM_TABS = +//#ifdef MOZ_ANDROID_CUSTOM_TABS + true; +//#else + false; +//#endif + + // (bug 1266820) Temporarily disabled since no one is working on it. + public static final boolean SCREENSHOTS_IN_BOOKMARKS_ENABLED = false; + + /** + * Enables multidex depending on build flags. For more information, + * see `multiDexEnabled true` in mobile/android/app/build.gradle. + * + * As a method, this shouldn't be in AppConstants, but it's + * the only semi-relevant Java file that we pre-process. + */ + public static void maybeInstallMultiDex(final Context context) { +//#ifdef MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE + if (BuildConfig.FLAVOR.equals("automation")) { + MultiDex.install(context); + } +//#else + // Do nothing. +//#endif + } + + public static final boolean MOZ_ANDROID_ACTIVITY_STREAM = +//#ifdef MOZ_ANDROID_ACTIVITY_STREAM + true; +//#else + false; +//#endif +} |