Generate SSD log payloads from typed Jerboa
ober
8b79466ee5e4ba71bd7e4e9030d0cc8a6d034f1c
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -4773,6 +4773,7 @@ (android content SharedPreferences Editor) (android content res Resources) (android content DialogInterface) + (android content pm PackageInfo) (android content pm PackageManager) (android graphics Bitmap) (android graphics Bitmap Config) @@ -4787,6 +4788,7 @@ (android os Build) (android os Environment) (android os ParcelFileDescriptor) + (android os SystemClock) (android provider DocumentsContract) (android provider OpenableColumns) (android provider Settings) @@ -5059,6 +5061,7 @@ (type Matrix) (type Page) (type PdfRenderer) + (type PackageInfo) (type Rect) (type Runnable) (type Thread) @@ -5296,6 +5299,38 @@ (extern (statusLogFieldsRawForUi (text : String)) : JSONObject (kotlin-call statusLogFields)) + (extern (clientLogPayloadJsonRawForUi + (event : String) + (uptimeMillis : Int) + (threadName : String) + (app : JSONObject) + (device : JSONObject) + (pdfName : String) + (page : Int32) + (pageCount : Int32) + (selectedGroupId : String) + (fields : JSONObject)) : JSONObject + (kotlin-call clientLogPayloadJson)) + (extern (appLogPackageInfoRawForUi + (packageName : String)) : JSONObject + (kotlin-call appLogPackageInfo)) + (extern (appLogVersionInfoRawForUi + (packageName : String) + (versionName : String) + (versionCode : Int)) : JSONObject + (kotlin-call appLogVersionInfo)) + (extern (androidPackageVersionCodeRawForUi + (sdk : Int32) + (apiP : Int32) + (longVersionCode : Int) + (legacyVersionCode : Int)) : Int + (kotlin-call androidPackageVersionCode)) + (extern (deviceLogInfoJsonRawForUi + (sdk : Int32) + (release : String) + (manufacturer : String) + (model : String)) : JSONObject + (kotlin-call deviceLogInfoJson)) (extern (windowSetSoftInputMode (window : Window) (mode : Int32)) : Unit (kotlin-member-call setSoftInputMode)) (extern (alertDialogIsShowing (dialog : AlertDialog)) : Bool @@ -5958,11 +5993,6 @@ (activity : MainActivity) (uri : Uri)) : (List SsdPdfChoice) (kotlin-member-call findSsdPdfsFromTree)) - (extern (mainActivityClientLogPayloadRaw - (activity : MainActivity) - (event : String) - (fields : JSONObject)) : JSONObject - (kotlin-member-call clientLogPayload)) (extern (mainActivitySendClientLogRaw (activity : MainActivity) (payload : JSONObject) @@ -5983,10 +6013,44 @@ (extern (mainActivityStatusViewRaw (activity : MainActivity)) : TextView (kotlin-member-get status)) + (extern (mainActivityPackageManagerRaw + (activity : MainActivity)) : PackageManager + (kotlin-member-get packageManager)) + (extern (packageManagerGetPackageInfoRaw + (manager : PackageManager) + (packageName : String) + (flags : Int32)) : PackageInfo + (kotlin-member-call getPackageInfo)) + (extern (packageInfoVersionCodeRaw + (info : PackageInfo)) : Int32 + (kotlin-member-get versionCode)) + (extern (packageInfoLongVersionCodeRaw + (info : PackageInfo)) : Int + (kotlin-member-get longVersionCode)) + (extern (packageInfoVersionNameRaw + (info : PackageInfo)) : (Nullable String) + (kotlin-member-get versionName)) (extern (textViewTextSetRaw (view : TextView) (text : String)) : Unit (kotlin-member-set text)) + (extern (systemClockUptimeMillisRaw) : Int + (kotlin-call SystemClock uptimeMillis)) + (extern (threadCurrentRaw) : Thread + (kotlin-call Thread currentThread)) + (extern (threadNameForUiRaw + (thread : Thread)) : String + (kotlin-member-get name)) + (extern (buildVersionSdkIntRaw) : Int32 + (kotlin-value Build VERSION SDK_INT)) + (extern (buildVersionReleaseRaw) : (Nullable String) + (kotlin-value Build VERSION RELEASE)) + (extern (buildVersionCodesP) : Int32 + (kotlin-value Build VERSION_CODES P)) + (extern (buildManufacturerRaw) : (Nullable String) + (kotlin-value Build MANUFACTURER)) + (extern (buildModelRaw) : (Nullable String) + (kotlin-value Build MODEL)) (extern (clientCrashLoggerInstalledValueRaw) : Bool (kotlin-call clientCrashLoggerInstalledValue)) (extern (clientCrashLoggerInstalledSetRaw @@ -7874,6 +7938,53 @@ event fields (mainActivityClientLogReadTimeoutMillisValue))) + (def (mainActivityAppLogInfo + (activity : MainActivity)) : JSONObject + (let ((packageName + (mainActivityPackageNameRaw activity))) + (let ((fallback + (appLogPackageInfoRawForUi packageName))) + (try + (let ((info + (packageManagerGetPackageInfoRaw + (mainActivityPackageManagerRaw activity) + packageName + (int32 0)))) + (appLogVersionInfoRawForUi + packageName + (nullableTextOrEmpty + (packageInfoVersionNameRaw info)) + (androidPackageVersionCodeRawForUi + (buildVersionSdkIntRaw) + (buildVersionCodesP) + (packageInfoLongVersionCodeRaw info) + (int (packageInfoVersionCodeRaw info))))) + (catch (error : Exception) + fallback))))) + (def (mainActivityDeviceLogInfo) : JSONObject + (deviceLogInfoJsonRawForUi + (buildVersionSdkIntRaw) + (nullableTextOrEmpty (buildVersionReleaseRaw)) + (nullableTextOrEmpty (buildManufacturerRaw)) + (nullableTextOrEmpty (buildModelRaw)))) + (def (mainActivityClientLogPayloadRaw + (activity : MainActivity) + (event : String) + (fields : JSONObject)) : JSONObject + (clientLogPayloadJsonRawForUi + event + (systemClockUptimeMillisRaw) + (nullableTextOrEmpty + (nullable-some + (threadNameForUiRaw (threadCurrentRaw)))) + (mainActivityAppLogInfo activity) + (mainActivityDeviceLogInfo) + (mainActivityPdfNameRaw activity) + (+ (mainActivityPageIndexRaw activity) (int32 1)) + (mainActivityPageCountValueRaw activity) + (nullableTextOrEmpty + (mainActivitySelectedGroupIdRaw activity)) + fields)) (def (mainActivityLogDetectResultRaw (activity : MainActivity) (stage : String) @@ -11284,7 +11395,7 @@ (activity : MainActivity) (event : String) (fields : JSONObject)) : JSONObject - (kotlin-member-call clientLogPayload)) + (kotlin-call mainActivityClientLogPayloadRaw)) (extern (mainActivityCrashSendClientLogRaw (activity : MainActivity) (payload : JSONObject) @@ -12544,41 +12655,8 @@ " connection.disconnect()" " }" " }" - "" - " internal fun clientLogPayload(event: String, fields: JSONObject): JSONObject =" - " clientLogPayloadJson(" - " event," - " SystemClock.uptimeMillis()," - " nullableTextOrEmpty(Thread.currentThread().name)," - " appLogInfo()," - " deviceLogInfo()," - " pdfName," - " pageIndex + 1," - " pageCount," - " nullableTextOrEmpty(selectedGroupId)," - " fields" - " )" - "" - " private fun appLogInfo(): JSONObject {" - " val out = appLogPackageInfo(packageName)" - " return try {" - " val info = packageManager.getPackageInfo(packageName, 0)" - " @Suppress(\"DEPRECATION\")" - " val legacyVersionCode = info.versionCode.toLong()" - " val versionCode = androidPackageVersionCode(Build.VERSION.SDK_INT, Build.VERSION_CODES.P, info.longVersionCode, legacyVersionCode)" - " appLogVersionInfo(packageName, nullableTextOrEmpty(info.versionName), versionCode)" - " } catch (_: Exception) { out }" - " }" - "" - " private fun deviceLogInfo(): JSONObject =" - " deviceLogInfoJson(" - " Build.VERSION.SDK_INT," - " nullableTextOrEmpty(Build.VERSION.RELEASE)," - " nullableTextOrEmpty(Build.MANUFACTURER)," - " nullableTextOrEmpty(Build.MODEL)" - " )" - "" - " internal fun throwableLog(error: Throwable): JSONObject {" + "" + " internal fun throwableLog(error: Throwable): JSONObject {" " val writer = StringWriter()" " error.printStackTrace(PrintWriter(writer))" " val stack = writer.toString()"