diff options
| author | 2022-08-09 16:24:57 +0000 | |
|---|---|---|
| committer | 2022-08-09 16:24:57 +0000 | |
| commit | 4cdf6319fc15d6ded0dde3d4a136e0761d4a4ceb (patch) | |
| tree | 0f4d1b273906a012db237d300af4202fbd063678 | |
| parent | 50d7d1fa0c8ba6ffaef93977f662c6de2efbd52a (diff) | |
| parent | 1fcdd5423ce5ead4420375ec4d5031bb34dc357a (diff) | |
Merge "Fix focus at ttt chip" into tm-qpr-dev am: cd4712486d am: 1fcdd5423c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19531389
Change-Id: If7028d75858a3a86dc16c407e9626af21f0d1031
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2 files changed, 23 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttChipControllerCommon.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttChipControllerCommon.kt index 5f478ce32590..9ab83b84277e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttChipControllerCommon.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/common/MediaTttChipControllerCommon.kt @@ -56,7 +56,7 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>( internal val logger: MediaTttLogger, internal val windowManager: WindowManager, private val viewUtil: ViewUtil, - @Main private val mainExecutor: DelayableExecutor, + @Main internal val mainExecutor: DelayableExecutor, private val accessibilityManager: AccessibilityManager, private val configurationController: ConfigurationController, private val powerManager: PowerManager, @@ -205,13 +205,15 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>( * * @param appPackageName the package name of the app playing the media. Will be used to fetch * the app icon and app name if overrides aren't provided. + * + * @return the content description of the icon. */ internal fun setIcon( currentChipView: ViewGroup, appPackageName: String?, appIconDrawableOverride: Drawable? = null, appNameOverride: CharSequence? = null, - ) { + ): CharSequence { val appIconView = currentChipView.requireViewById<CachingIconView>(R.id.app_icon) val iconInfo = getIconInfo(appPackageName) @@ -224,6 +226,7 @@ abstract class MediaTttChipControllerCommon<T : ChipInfoCommon>( appIconView.contentDescription = appNameOverride ?: iconInfo.iconName appIconView.setImageDrawable(appIconDrawableOverride ?: iconInfo.icon) + return appIconView.contentDescription.toString() } /** diff --git a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt index 3ea11b8aa4dd..b94b8bfabfc1 100644 --- a/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt +++ b/packages/SystemUI/src/com/android/systemui/media/taptotransfer/sender/MediaTttChipControllerSender.kt @@ -122,13 +122,12 @@ class MediaTttChipControllerSender @Inject constructor( val chipState = newChipInfo.state // App icon - setIcon(currentChipView, newChipInfo.routeInfo.packageName) + val iconName = setIcon(currentChipView, newChipInfo.routeInfo.packageName) // Text val otherDeviceName = newChipInfo.routeInfo.name.toString() - currentChipView.requireViewById<TextView>(R.id.text).apply { - text = chipState.getChipTextString(context, otherDeviceName) - } + val chipText = chipState.getChipTextString(context, otherDeviceName) + currentChipView.requireViewById<TextView>(R.id.text).text = chipText // Loading currentChipView.requireViewById<View>(R.id.loading).visibility = @@ -145,17 +144,29 @@ class MediaTttChipControllerSender @Inject constructor( // Failure currentChipView.requireViewById<View>(R.id.failure_icon).visibility = chipState.isTransferFailure.visibleIfTrue() + + // For accessibility + currentChipView.requireViewById<ViewGroup>( + R.id.media_ttt_sender_chip_inner + ).contentDescription = "$iconName $chipText" } override fun animateChipIn(chipView: ViewGroup) { + val chipInnerView = chipView.requireViewById<ViewGroup>(R.id.media_ttt_sender_chip_inner) ViewHierarchyAnimator.animateAddition( - chipView.requireViewById<ViewGroup>(R.id.media_ttt_sender_chip_inner), + chipInnerView, ViewHierarchyAnimator.Hotspot.TOP, Interpolators.EMPHASIZED_DECELERATE, - duration = 500L, + duration = ANIMATION_DURATION, includeMargins = true, includeFadeIn = true, ) + + // We can only request focus once the animation finishes. + mainExecutor.executeDelayed( + { chipInnerView.requestAccessibilityFocus() }, + ANIMATION_DURATION + ) } override fun removeChip(removalReason: String) { @@ -186,3 +197,4 @@ data class ChipSenderInfo( } const val SENDER_TAG = "MediaTapToTransferSender" +private const val ANIMATION_DURATION = 500L |