Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e2adc26 authored by Joshua McCloskey's avatar Joshua McCloskey
Browse files

Added interupt to accessibility interactor

Test: Verified manually
Bug: 366219635
Flag: EXEMPT bugfix
Change-Id: If1dea7b3efd23e40c6c2668867b175ba84f11550
parent 01359592
Loading
Loading
Loading
Loading
+26 −9
Original line number Diff line number Diff line
@@ -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,13 +31,16 @@ 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 {
@@ -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"
  }
}
+1 −0
Original line number Diff line number Diff line
@@ -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 =
+2 −0
Original line number Diff line number Diff line
@@ -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 {