From 92d26f7867d65fa16779ac9d90624aec73cbaa44 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Wed, 8 Apr 2015 08:50:40 +0100
Subject: [PATCH] Use strict mode to log potential problems with testing
 builds.

---
 .../android/SplashScreenActivity.java         | 21 +++++++++++++
 .../android/TestingConstants.java             | 31 ++++++++++---------
 2 files changed, 38 insertions(+), 14 deletions(-)

diff --git a/briar-android/src/org/briarproject/android/SplashScreenActivity.java b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
index f66e378c0d..14ef9e0044 100644
--- a/briar-android/src/org/briarproject/android/SplashScreenActivity.java
+++ b/briar-android/src/org/briarproject/android/SplashScreenActivity.java
@@ -5,6 +5,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
 import static java.util.logging.Level.INFO;
 import static org.briarproject.android.TestingConstants.DEFAULT_LOG_LEVEL;
 import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS;
+import static org.briarproject.android.TestingConstants.TESTING;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_MATCH;
 
 import java.io.File;
@@ -16,10 +17,15 @@ import org.briarproject.api.db.DatabaseConfig;
 
 import roboguice.RoboGuice;
 import roboguice.activity.RoboSplashActivity;
+import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Color;
+import android.os.Build;
 import android.os.Bundle;
+import android.os.StrictMode;
+import android.os.StrictMode.ThreadPolicy;
+import android.os.StrictMode.VmPolicy;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
@@ -37,6 +43,7 @@ public class SplashScreenActivity extends RoboSplashActivity {
 
 	public SplashScreenActivity() {
 		Logger.getLogger("").setLevel(DEFAULT_LOG_LEVEL);
+		enableStrictMode();
 		minDisplayMs = 500;
 	}
 
@@ -84,6 +91,20 @@ public class SplashScreenActivity extends RoboSplashActivity {
 		}
 	}
 
+	@SuppressLint("NewApi")
+	private void enableStrictMode() {
+		if(TESTING && Build.VERSION.SDK_INT >= 9) {
+			ThreadPolicy.Builder threadPolicy = new ThreadPolicy.Builder();
+			threadPolicy.detectAll();
+			threadPolicy.penaltyLog();
+			StrictMode.setThreadPolicy(threadPolicy.build());
+			VmPolicy.Builder vmPolicy = new VmPolicy.Builder();
+			vmPolicy.detectAll();
+			vmPolicy.penaltyLog();
+			StrictMode.setVmPolicy(vmPolicy.build());
+		}
+	}
+
 	private void delete(File f) {
 		if(f.isFile()) f.delete();
 		else if(f.isDirectory()) for(File child : f.listFiles()) delete(child);
diff --git a/briar-android/src/org/briarproject/android/TestingConstants.java b/briar-android/src/org/briarproject/android/TestingConstants.java
index e4ad6f8648..aa8dce68f7 100644
--- a/briar-android/src/org/briarproject/android/TestingConstants.java
+++ b/briar-android/src/org/briarproject/android/TestingConstants.java
@@ -1,31 +1,34 @@
 package org.briarproject.android;
 
 import static java.util.logging.Level.INFO;
+import static java.util.logging.Level.OFF;
 
 import java.util.logging.Level;
 
 interface TestingConstants {
 
-	/** Default log level - this should be OFF for release builds. */
-	Level DEFAULT_LOG_LEVEL = INFO;
-
 	/**
-	 * Whether to prevent screenshots from being taken. This should be true for
-	 * release builds, to prevent Recent Apps from storing screenshots of
-	 * private information. Unfortunately this also prevents the user from
-	 * taking screenshots intentionally.
+	 * Whether this is an alpha or beta build. This should be set to false for
+	 * release builds.
 	 */
-	boolean PREVENT_SCREENSHOTS = false;
+	boolean TESTING = true;
+
+	/** Default log level. */
+	Level DEFAULT_LOG_LEVEL = TESTING ? INFO : OFF;
 
 	/**
-	 * Whether to allow TestingActivity to be launched from SettingsActivity.
-	 * This should be false for release builds.
+	 * Whether to prevent screenshots from being taken. Setting this to true
+	 * prevents Recent Apps from storing screenshots of private information.
+	 * Unfortunately this also prevents the user from taking screenshots
+	 * intentionally.
 	 */
-	boolean SHOW_TESTING_ACTIVITY = true;
+	boolean PREVENT_SCREENSHOTS = TESTING ? false : true;
 
 	/**
-	 * Whether to allow crash reports to be submitted by email. This should
-	 * be false for release builds.
+	 * Whether to allow TestingActivity to be launched from SettingsActivity.
 	 */
-	boolean SHARE_CRASH_REPORTS = true;
+	boolean SHOW_TESTING_ACTIVITY = TESTING ? true : false;
+
+	/** Whether to allow crash reports to be submitted by email. */
+	boolean SHARE_CRASH_REPORTS = TESTING ? true : false;
 }
-- 
GitLab