summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/AppConstants.java.in
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/AppConstants.java.in')
-rw-r--r--mobile/android/base/AppConstants.java.in349
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
+}