czuckie
05/17/2023, 8:33 AMprivate fun environmentIsSane() {
val clazz =
javaClass.classLoader.loadClass("androidx.compose.ui.platform.AndroidUiDispatcher")
val combinedContextClass =
javaClass.classLoader.loadClass("kotlin.coroutines.CombinedContext")
val companionClazz = clazz.getDeclaredField("Companion").get(clazz)
val combinedContext = companionClazz.javaClass.getDeclaredMethod("getMain")
.invoke(companionClazz) as CoroutineContext
val androidUiDispatcher = clazz.cast(
combinedContextClass.getDeclaredField("element").apply { isAccessible = true }
.get(combinedContext)
)
var scheduledFrameDispatch =
clazz.getDeclaredField("scheduledFrameDispatch").apply { isAccessible = true }
.getBoolean(androidUiDispatcher)
var scheduledTrampolineDispatch =
clazz.getDeclaredField("scheduledTrampolineDispatch").apply { isAccessible = true }
.getBoolean(androidUiDispatcher)
val dispatchCallback = clazz.getDeclaredField("dispatchCallback").apply { isAccessible = true }.get(androidUiDispatcher) as Runnable
if (scheduledFrameDispatch || scheduledTrampolineDispatch) {
dispatchCallback.run()
scheduledFrameDispatch =
clazz.getDeclaredField("scheduledFrameDispatch").apply { isAccessible = true }
.getBoolean(androidUiDispatcher)
scheduledTrampolineDispatch =
clazz.getDeclaredField("scheduledTrampolineDispatch").apply { isAccessible = true }
.getBoolean(androidUiDispatcher)
}
assertFalse(scheduledFrameDispatch)
assertFalse(scheduledTrampolineDispatch)
}