From cc9e4f4d85aea20feb2b9ef7abb3f521b2c428ab Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 28 Oct 2026 14:23:49 +0100 Subject: [PATCH] Model rejected vibration scheduling and partial cancellation --- .../src/main/kotlin/android/os/HostOs.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tools/chatgui-android/router-tests/src/main/kotlin/android/os/HostOs.kt b/tools/chatgui-android/router-tests/src/main/kotlin/android/os/HostOs.kt index 6659fdde8..27c38b69e 100644 --- a/tools/chatgui-android/router-tests/src/main/kotlin/android/os/HostOs.kt +++ b/tools/chatgui-android/router-tests/src/main/kotlin/android/os/HostOs.kt @@ -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>() @@ -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" } } }