LockAgent: Add option to synthesize Java crash logging

Add the ability to dump a "crash" to logcat.

Test: m
Test: manual
Change-Id: I0692a91df995883e526a718fe95f0d3568ac9328
diff --git a/tools/lock_agent/agent.cpp b/tools/lock_agent/agent.cpp
index 5b1d52e..c639427 100644
--- a/tools/lock_agent/agent.cpp
+++ b/tools/lock_agent/agent.cpp
@@ -68,6 +68,7 @@
 
 JavaVM* gJavaVM = nullptr;
 bool gForkCrash = false;
+bool gJavaCrash = false;
 
 // Converts a class name to a type descriptor
 // (ex. "java.lang.String" to "Ljava/lang/String;")
@@ -394,6 +395,8 @@
     for (const std::string& c : config) {
         if (c == "native_crash") {
             gForkCrash = true;
+        } else if (c == "java_crash") {
+            gJavaCrash = true;
         }
     }
 
@@ -405,6 +408,11 @@
     return gForkCrash ? JNI_TRUE : JNI_FALSE;
 }
 
+extern "C" JNIEXPORT jboolean JNICALL
+Java_com_android_lock_1checker_LockHook_getSimulateCrashConfig(JNIEnv*, jclass) {
+    return gJavaCrash ? JNI_TRUE : JNI_FALSE;
+}
+
 extern "C" JNIEXPORT void JNICALL Java_com_android_lock_1checker_LockHook_nWtf(JNIEnv* env, jclass,
         jstring msg) {
     if (!gForkCrash || msg == nullptr) {