Added interupt to accessibility interactor
Test: Verified manually Bug: 366219635 Flag: EXEMPT bugfix Change-Id: If1dea7b3efd23e40c6c2668867b175ba84f11550
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.biometrics.fingerprint2.domain.interactor
|
||||
|
||||
import android.util.Log
|
||||
import android.view.accessibility.AccessibilityEvent
|
||||
import android.view.accessibility.AccessibilityEvent.TYPE_ANNOUNCEMENT
|
||||
import android.view.accessibility.AccessibilityManager
|
||||
@@ -30,23 +31,26 @@ import kotlinx.coroutines.flow.stateIn
|
||||
interface AccessibilityInteractor {
|
||||
/** A flow that contains whether or not accessibility is enabled */
|
||||
fun isEnabledFlow(scope: CoroutineScope): Flow<Boolean>
|
||||
|
||||
val isEnabled: Boolean
|
||||
|
||||
fun announce(clazz: Class<*>, announcement: CharSequence?)
|
||||
|
||||
fun interrupt()
|
||||
}
|
||||
|
||||
class AccessibilityInteractorImpl(
|
||||
private val accessibilityManager: AccessibilityManager,
|
||||
) : AccessibilityInteractor {
|
||||
class AccessibilityInteractorImpl(private val accessibilityManager: AccessibilityManager) :
|
||||
AccessibilityInteractor {
|
||||
/** A flow that contains whether or not accessibility is enabled */
|
||||
override fun isEnabledFlow(scope: CoroutineScope): Flow<Boolean> =
|
||||
callbackFlow {
|
||||
val listener =
|
||||
AccessibilityManager.AccessibilityStateChangeListener { enabled -> trySend(enabled) }
|
||||
accessibilityManager.addAccessibilityStateChangeListener(listener)
|
||||
val listener =
|
||||
AccessibilityManager.AccessibilityStateChangeListener { enabled -> trySend(enabled) }
|
||||
accessibilityManager.addAccessibilityStateChangeListener(listener)
|
||||
|
||||
// This clause will be called when no one is listening to the flow
|
||||
awaitClose { accessibilityManager.removeAccessibilityStateChangeListener(listener) }
|
||||
}
|
||||
// This clause will be called when no one is listening to the flow
|
||||
awaitClose { accessibilityManager.removeAccessibilityStateChangeListener(listener) }
|
||||
}
|
||||
.stateIn(
|
||||
scope,
|
||||
SharingStarted.WhileSubscribed(), // When no longer subscribed, we removeTheListener
|
||||
@@ -63,4 +67,17 @@ class AccessibilityInteractorImpl(
|
||||
event.text.add(announcement)
|
||||
accessibilityManager.sendAccessibilityEvent(event)
|
||||
}
|
||||
|
||||
/** Interrupts the current accessibility manager from announcing a phrase. */
|
||||
override fun interrupt() {
|
||||
try {
|
||||
accessibilityManager.interrupt()
|
||||
} catch (e: IllegalStateException) {
|
||||
Log.e(TAG, "Error trying to interrupt when accessibility isn't enabled $e")
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "AccessibilityInteractor"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +78,7 @@ class Injector(step: FingerprintNavigationStep.UiStep) {
|
||||
override val isEnabled: Boolean
|
||||
get() = true
|
||||
override fun announce(clazz: Class<*>, announcement: CharSequence?) {}
|
||||
override fun interrupt() {}
|
||||
}
|
||||
|
||||
var foldStateInteractor =
|
||||
|
||||
@@ -111,6 +111,8 @@ class FingerprintEnrollFindSensorViewModelV2Test {
|
||||
override val isEnabled: Boolean
|
||||
get() = true
|
||||
override fun announce(clazz: Class<*>, announcement: CharSequence?) {}
|
||||
override fun interrupt() {
|
||||
}
|
||||
}
|
||||
foldStateInteractor =
|
||||
object : FoldStateInteractor {
|
||||
|
||||
Reference in New Issue
Block a user