Model rejected vibration scheduling and partial cancellation

This commit is contained in:
evgeny committed 2026-10-28 14:43:27 +01:00
1 parent 7ed1a63b36
commit cc9e4f4d85
1 file changed
+12 -2
@@ -32,8 +32,9 @@ class Looper private constructor() {
}
}
class Handler(val looper: Looper) {
companion object { var rejectDelayed = false }
fun post(task: Runnable): Boolean = looper.post(this, task, 0)
fun postDelayed(task: Runnable, delay: Long): Boolean = looper.post(this, task, delay)
fun postDelayed(task: Runnable, delay: Long): Boolean = !rejectDelayed && looper.post(this, task, delay)
fun removeCallbacks(task: Runnable) = looper.remove(this, task)
}
object SystemClock { fun elapsedRealtime(): Long = System.nanoTime() / 1_000_000 }
@@ -46,7 +47,11 @@ class Vibrator {
var available = true
var failQuery = false
var failPulse = false
var failPulseAfter = false
var failCancel = false
var failCancelAfter = false
var active = false
private set
var pulseAttempts = 0
var cancelCalls = 0
val effects = mutableListOf<Pair<VibrationEffect, AudioAttributes?>>()
@@ -56,6 +61,11 @@ class Vibrator {
pulseAttempts++
check(!failPulse) { "vibration denied" }
effects.add(effect to attributes)
active = true
check(!failPulseAfter) { "vibration failed after effect" }
}
fun cancel() {
cancelCalls++; check(!failCancel) { "cancel denied" }
active = false; check(!failCancelAfter) { "cancel failed after effect" }
}
fun cancel() { cancelCalls++; check(!failCancel) { "cancel denied" } }
}