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

Commit 9e134019 authored by Caitlin Cassidy's avatar Caitlin Cassidy
Browse files

[Media TTT] Update timeout to take accessibility settings into account.

This will extend the timeout for the chip to at least 10s if a11y is on,
or longer if the user has it set to longer.

Also update the default timeout to 4s to make it a bit longer.

Fixes: 229558433
Test: manual
Test: media.taptotransfer tests
Change-Id: I65110c83009c883b5107cf9eb3f46f4db3eba728
parent 8bcab9fe
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -27,4 +27,4 @@ interface ChipInfoCommon {
    fun getTimeoutMs(): Long
}

const val DEFAULT_TIMEOUT_MILLIS = 3000L
const val DEFAULT_TIMEOUT_MILLIS = 4000L
+12 −1
Original line number Diff line number Diff line
@@ -31,6 +31,10 @@ import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS
import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_ICONS
import android.view.accessibility.AccessibilityManager.FLAG_CONTENT_TEXT
import android.widget.LinearLayout
import com.android.internal.widget.CachingIconView
import com.android.settingslib.Utils
@@ -56,6 +60,7 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
    private val windowManager: WindowManager,
    private val viewUtil: ViewUtil,
    @Main private val mainExecutor: DelayableExecutor,
    private val accessibilityManager: AccessibilityManager,
    private val tapGestureDetector: TapGestureDetector,
    private val powerManager: PowerManager,
    @LayoutRes private val chipLayoutRes: Int
@@ -110,10 +115,16 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>(
        }

        // Cancel and re-set the chip timeout each time we get a new state.
        val timeout = accessibilityManager.getRecommendedTimeoutMillis(
            chipInfo.getTimeoutMs().toInt(),
            // Not all chips have controls so FLAG_CONTENT_CONTROLS might be superfluous, but
            // include it just to be safe.
            FLAG_CONTENT_ICONS or FLAG_CONTENT_TEXT or FLAG_CONTENT_CONTROLS
       )
        cancelChipViewTimeout?.run()
        cancelChipViewTimeout = mainExecutor.executeDelayed(
            { removeChip(MediaTttRemovalReason.REASON_TIMEOUT) },
            chipInfo.getTimeoutMs()
            timeout.toLong()
        )
    }

+3 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.os.PowerManager
import android.util.Log
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import com.android.systemui.R
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
@@ -52,6 +53,7 @@ class MediaTttChipControllerReceiver @Inject constructor(
    windowManager: WindowManager,
    viewUtil: ViewUtil,
    mainExecutor: DelayableExecutor,
    accessibilityManager: AccessibilityManager,
    tapGestureDetector: TapGestureDetector,
    powerManager: PowerManager,
    @Main private val mainHandler: Handler,
@@ -62,6 +64,7 @@ class MediaTttChipControllerReceiver @Inject constructor(
    windowManager,
    viewUtil,
    mainExecutor,
    accessibilityManager,
    tapGestureDetector,
    powerManager,
    R.layout.media_ttt_chip_receiver
+3 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.widget.TextView
import com.android.internal.statusbar.IUndoMediaTransferCallback
import com.android.systemui.R
@@ -53,6 +54,7 @@ class MediaTttChipControllerSender @Inject constructor(
    windowManager: WindowManager,
    viewUtil: ViewUtil,
    @Main mainExecutor: DelayableExecutor,
    accessibilityManager: AccessibilityManager,
    tapGestureDetector: TapGestureDetector,
    powerManager: PowerManager,
    private val uiEventLogger: MediaTttSenderUiEventLogger
@@ -62,6 +64,7 @@ class MediaTttChipControllerSender @Inject constructor(
    windowManager,
    viewUtil,
    mainExecutor,
    accessibilityManager,
    tapGestureDetector,
    powerManager,
    R.layout.media_ttt_chip
+17 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.widget.ImageView
import androidx.test.filters.SmallTest
import com.android.systemui.R
@@ -65,6 +66,8 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
    @Mock
    private lateinit var logger: MediaTttLogger
    @Mock
    private lateinit var accessibilityManager: AccessibilityManager
    @Mock
    private lateinit var windowManager: WindowManager
    @Mock
    private lateinit var viewUtil: ViewUtil
@@ -88,11 +91,21 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
        )).thenReturn(applicationInfo)
        context.setMockPackageManager(packageManager)

        whenever(accessibilityManager.getRecommendedTimeoutMillis(any(), any()))
            .thenReturn(TIMEOUT_MS.toInt())

        fakeClock = FakeSystemClock()
        fakeExecutor = FakeExecutor(fakeClock)

        controllerCommon = TestControllerCommon(
            context, logger, windowManager, viewUtil, fakeExecutor, tapGestureDetector, powerManager
            context,
            logger,
            windowManager,
            viewUtil,
            fakeExecutor,
            accessibilityManager,
            tapGestureDetector,
            powerManager
        )
    }

@@ -344,6 +357,7 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
        windowManager: WindowManager,
        viewUtil: ViewUtil,
        @Main mainExecutor: DelayableExecutor,
        accessibilityManager: AccessibilityManager,
        tapGestureDetector: TapGestureDetector,
        powerManager: PowerManager
    ) : MediaTttChipControllerCommon<ChipInfo>(
@@ -352,6 +366,7 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
        windowManager,
        viewUtil,
        mainExecutor,
        accessibilityManager,
        tapGestureDetector,
        powerManager,
        R.layout.media_ttt_chip
@@ -364,7 +379,7 @@ class MediaTttChipControllerCommonTest : SysuiTestCase() {
    }

    inner class ChipInfo : ChipInfoCommon {
        override fun getTimeoutMs() = TIMEOUT_MS
        override fun getTimeoutMs() = 1L
    }
}

Loading