Model overlay permissions and persistent settings for service tests

This commit is contained in:
evgeny committed 2026-10-29 13:34:23 +01:00
1 parent ce756ed6a9
commit 263d1348ec
3 files changed
+19 -1

No files matched your search

@@ -6,8 +6,12 @@ import android.media.AudioAttributes
/** Host-модель SDK/главной очереди: callbacks и их доставку тест контролирует явно, без настоящего Android Looper. */
object Build {
object VERSION { var SDK_INT = 36 }
object VERSION_CODES { const val O = 26; const val P = 28; const val S = 31; const val TIRAMISU = 33; const val UPSIDE_DOWN_CAKE = 34 }
object VERSION_CODES {
const val M = 23; const val O = 26; const val P = 28; const val R = 30; const val S = 31
const val TIRAMISU = 33; const val UPSIDE_DOWN_CAKE = 34
}
}
interface IBinder
class Looper private constructor() {
private data class Task(val handler: Handler, val runnable: Runnable, val deadline: Long)
private val tasks = ConcurrentLinkedQueue<Task>()
@@ -2,6 +2,12 @@ package android.provider
/** Имена настоящих Android actions; host-тест проверяет target/порядок и не открывает системный UI. */
object Settings {
var overlayAllowed = true
var failOverlayQuery = false
fun canDrawOverlays(context: android.content.Context): Boolean {
check(!failOverlayQuery) { "overlay permission query unavailable" }
return overlayAllowed
}
const val ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"
const val ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS = "android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS"
}
@@ -161,6 +161,14 @@ object NativeLib {
/** Управляемая подготовка конфига: тест удерживает реальный worker, считает перекрытия и затем дожидается его завершения. */
class HostConfigProvider {
var radioOverlay = false
var failOverlayWrite = false
fun getRadioOverlay() = radioOverlay
suspend fun setRadioOverlay(enabled: Boolean) {
check(!failOverlayWrite) { "overlay settings write unavailable" }
radioOverlay = enabled
}
fun getInt(key: String): Int { check(key == "radio.auto_enabled"); return if (radioSettings.enabled) 1 else 0 }
var radioSettings = RadioAutoSettings()
var failRadioSettings = false
fun getRadioAutoSettings(): RadioAutoSettings {