Bug 1275669 - Do not enable adjust if we are in automation. r=grisha
MozReview-Commit-ID: 9i10xv6nZem
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -3,16 +3,17 @@
* 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.Manifest;
import android.app.DownloadManager;
import android.os.Environment;
+import android.support.annotation.CheckResult;
import android.support.annotation.NonNull;
import org.json.JSONArray;
import org.mozilla.gecko.adjust.AdjustHelperInterface;
import org.mozilla.gecko.annotation.RobocopTarget;
import org.mozilla.gecko.AppConstants.Versions;
import org.mozilla.gecko.DynamicToolbar.VisibilityTransition;
import org.mozilla.gecko.Tabs.TabEvents;
import org.mozilla.gecko.animation.PropertyAnimator;
@@ -536,27 +537,28 @@ public class BrowserApp extends GeckoApp
public void onCreate(Bundle savedInstanceState) {
if (!HardwareUtils.isSupportedSystem()) {
// This build does not support the Android version of the device; Exit early.
super.onCreate(savedInstanceState);
return;
}
final Intent intent = getIntent();
- configureForTestsBasedOnEnvironment(intent);
+ final boolean isInAutomation = getIsInAutomationFromEnvironment(intent);
// This has to be prepared prior to calling GeckoApp.onCreate, because
// widget code and BrowserToolbar need it, and they're created by the
// layout, which GeckoApp takes care of.
((GeckoApplication) getApplication()).prepareLightweightTheme();
super.onCreate(savedInstanceState);
final Context appContext = getApplicationContext();
- initSwitchboard(intent);
+ initSwitchboard(this, intent, isInAutomation);
+ initTelemetryUploader(isInAutomation);
mBrowserChrome = (ViewGroup) findViewById(R.id.browser_chrome);
mActionBarFlipper = (ViewFlipper) findViewById(R.id.browser_actionbar);
mActionBar = (ActionModeCompatView) findViewById(R.id.actionbar);
mBrowserToolbar = (BrowserToolbar) findViewById(R.id.browser_toolbar);
mBrowserToolbar.setTouchEventInterceptor(new TouchEventInterceptor() {
@Override
@@ -689,24 +691,17 @@ public class BrowserApp extends GeckoApp
db.setSuggestedSites(suggestedSites);
JavaAddonManager.getInstance().init(appContext);
mSharedPreferencesHelper = new SharedPreferencesHelper(appContext);
mOrderedBroadcastHelper = new OrderedBroadcastHelper(appContext);
mReadingListHelper = new ReadingListHelper(appContext, profile);
mAccountsHelper = new AccountsHelper(appContext, profile);
- final AdjustHelperInterface adjustHelper = AdjustConstants.getAdjustHelper();
- adjustHelper.onCreate(this, AdjustConstants.MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN);
-
- // Adjust stores enabled state so this is only necessary because users may have set
- // their data preferences before this feature was implemented and we need to respect
- // those before upload can occur in Adjust.onResume.
- final SharedPreferences prefs = GeckoSharedPrefs.forApp(this);
- adjustHelper.setEnabled(prefs.getBoolean(GeckoPreferences.PREFS_HEALTHREPORT_UPLOAD_ENABLED, true));
+ initAdjustSDK(this, isInAutomation);
if (AppConstants.MOZ_ANDROID_BEAM) {
NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this);
if (nfc != null) {
nfc.setNdefPushMessageCallback(new NfcAdapter.CreateNdefMessageCallback() {
@Override
public NdefMessage createNdefMessage(NfcEvent event) {
Tab tab = Tabs.getInstance().getSelectedTab();
@@ -753,38 +748,41 @@ public class BrowserApp extends GeckoApp
AudioFocusAgent.getInstance().attachToContext(this);
for (final BrowserAppDelegate delegate : delegates) {
delegate.onCreate(this, savedInstanceState);
}
}
/**
- * Sets up the testing configuration if the environment is configured as such.
+ * Gets whether or not we're in automation from the passed in environment variables.
*
* We need to read environment variables from the intent string
* extra because environment variables from our test harness aren't set
* until Gecko is loaded, and we need to know this before then.
*
- * This method should be called early since other initialization
- * may depend on its results.
+ * The return value of this method should be used early since other
+ * initialization may depend on its results.
*/
- private void configureForTestsBasedOnEnvironment(final Intent intent) {
+ @CheckResult
+ private boolean getIsInAutomationFromEnvironment(final Intent intent) {
final HashMap<String, String> envVars = IntentUtils.getEnvVarMap(intent);
- final boolean isInAutomation = !TextUtils.isEmpty(envVars.get(IntentUtils.ENV_VAR_IN_AUTOMATION));
- Experiments.setIsDisabled(isInAutomation);
- TelemetryUploadService.setDisabled(isInAutomation);
+ return !TextUtils.isEmpty(envVars.get(IntentUtils.ENV_VAR_IN_AUTOMATION));
}
/**
* Initializes the default Switchboard URLs the first time.
* @param intent
*/
- private void initSwitchboard(final Intent intent) {
- if (Experiments.isDisabled() || !AppConstants.MOZ_SWITCHBOARD) {
+ private static void initSwitchboard(final Context context, final Intent intent, final boolean isInAutomation) {
+ if (isInAutomation) {
+ Log.d(LOGTAG, "Switchboard disabled - in automation");
+ return;
+ } else if (!AppConstants.MOZ_SWITCHBOARD) {
+ Log.d(LOGTAG, "Switchboard compile-time disabled");
return;
}
final String hostExtra = IntentUtils.getStringExtraSafe(intent, INTENT_KEY_SWITCHBOARD_HOST);
final String host = TextUtils.isEmpty(hostExtra) ? DEFAULT_SWITCHBOARD_HOST : hostExtra;
final String serverUrl;
try {
@@ -793,17 +791,34 @@ public class BrowserApp extends GeckoApp
Log.e(LOGTAG, "Error creating Switchboard server URL", e);
return;
}
// Loads the Switchboard config from the specified server URL. Eventually, we
// should use the endpoint returned by the server URL, to support migrating
// to a new endpoint. However, if we want to do that, we'll need to find a different
// solution for dynamically changing the server URL from the intent.
- new AsyncConfigLoader(this, serverUrl).execute();
+ new AsyncConfigLoader(context, serverUrl).execute();
+ }
+
+ private static void initTelemetryUploader(final boolean isInAutomation) {
+ TelemetryUploadService.setDisabled(isInAutomation);
+ }
+
+ private static void initAdjustSDK(final Context context, final boolean isInAutomation) {
+ final AdjustHelperInterface adjustHelper = AdjustConstants.getAdjustHelper();
+ adjustHelper.onCreate(context, AdjustConstants.MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN);
+
+ // Adjust stores enabled state so this is only necessary because users may have set
+ // their data preferences before this feature was implemented and we need to respect
+ // those before upload can occur in Adjust.onResume.
+ final SharedPreferences prefs = GeckoSharedPrefs.forApp(context);
+ final boolean enabled = !isInAutomation &&
+ prefs.getBoolean(GeckoPreferences.PREFS_HEALTHREPORT_UPLOAD_ENABLED, true);
+ adjustHelper.setEnabled(enabled);
}
private void showUpdaterPermissionSnackbar() {
SnackbarHelper.SnackbarCallback allowCallback = new SnackbarHelper.SnackbarCallback() {
@Override
public void onClick(View v) {
Permissions.from(BrowserApp.this)
.withPermissions(Manifest.permission.WRITE_EXTERNAL_STORAGE)
--- a/mobile/android/base/java/org/mozilla/gecko/util/Experiments.java
+++ b/mobile/android/base/java/org/mozilla/gecko/util/Experiments.java
@@ -49,29 +49,16 @@ public class Experiments {
public static final String TRIPLE_READERVIEW_BOOKMARK_PROMPT = "triple-readerview-bookmark-prompt";
// Only show origin in URL bar instead of full URL (Bug 1236431)
public static final String URLBAR_SHOW_ORIGIN_ONLY = "urlbar-show-origin-only";
// Show name of organization (EV cert) instead of full URL in URL bar (Bug 1249594).
public static final String URLBAR_SHOW_EV_CERT_OWNER = "urlbar-show-ev-cert-owner";
- private static boolean isDisabled = false;
-
- public static void setIsDisabled(final boolean isDisabled) {
- Experiments.isDisabled = isDisabled;
- if (isDisabled) {
- Log.d(LOGTAG, "Switchboard disabled (env var?)");
- }
- }
-
- public static boolean isDisabled() {
- return isDisabled;
- }
-
/**
* Returns if a user is in certain local experiment.
* @param experiment Name of experiment to look up
* @return returns value for experiment or false if experiment does not exist.
*/
public static boolean isInExperimentLocal(Context context, String experiment) {
if (SwitchBoard.isInBucket(context, 0, 20)) {
return Experiments.ONBOARDING3_A.equals(experiment);