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

Commit cd699d9d authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Clean up media_controls_drawables_reuse_bugfix flag." into main

parents ce5a90dc 9c1a26e8
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -1380,16 +1380,6 @@ flag {
  bug: "360196209"
}

flag {
  name: "media_controls_drawables_reuse_bugfix"
  namespace: "systemui"
  description: "Re-use created media drawables for media controls"
  bug: "358402034"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
  name: "media_controls_umo_inflation_in_background"
  namespace: "systemui"
+0 −19
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.media.controls.shared

import android.content.Context
import android.graphics.drawable.Drawable
import com.android.systemui.Flags.mediaControlsDrawablesReuseBugfix
import com.android.systemui.res.R

object MediaControlDrawables {
@@ -34,23 +33,14 @@ object MediaControlDrawables {
    private var homeDevices: Drawable? = null

    fun getNextIcon(context: Context): Drawable? {
        if (!mediaControlsDrawablesReuseBugfix()) {
            return context.getDrawable(R.drawable.ic_media_next)
        }
        return nextIcon ?: context.getDrawable(R.drawable.ic_media_next).also { nextIcon = it }
    }

    fun getPrevIcon(context: Context): Drawable? {
        if (!mediaControlsDrawablesReuseBugfix()) {
            return context.getDrawable(R.drawable.ic_media_prev)
        }
        return prevIcon ?: context.getDrawable(R.drawable.ic_media_prev).also { prevIcon = it }
    }

    fun getLeAudioSharing(context: Context): Drawable? {
        if (!mediaControlsDrawablesReuseBugfix()) {
            return context.getDrawable(com.android.settingslib.R.drawable.ic_bt_le_audio_sharing)
        }
        return leAudioSharing
            ?: context.getDrawable(com.android.settingslib.R.drawable.ic_bt_le_audio_sharing).also {
                leAudioSharing = it
@@ -58,17 +48,11 @@ object MediaControlDrawables {
    }

    fun getAntenna(context: Context): Drawable? {
        if (!mediaControlsDrawablesReuseBugfix()) {
            return context.getDrawable(R.drawable.settings_input_antenna)
        }
        return antenna
            ?: context.getDrawable(R.drawable.settings_input_antenna).also { antenna = it }
    }

    fun getGroupDevice(context: Context): Drawable? {
        if (!mediaControlsDrawablesReuseBugfix()) {
            return context.getDrawable(com.android.settingslib.R.drawable.ic_media_group_device)
        }
        return groupDevice
            ?: context.getDrawable(com.android.settingslib.R.drawable.ic_media_group_device).also {
                groupDevice = it
@@ -76,9 +60,6 @@ object MediaControlDrawables {
    }

    fun getHomeDevices(context: Context): Drawable? {
        if (!mediaControlsDrawablesReuseBugfix()) {
            return context.getDrawable(R.drawable.ic_media_home_devices)
        }
        return homeDevices
            ?: context.getDrawable(R.drawable.ic_media_home_devices).also { homeDevices = it }
    }
+0 −35
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import android.net.Uri
import android.os.Bundle
import android.os.UserHandle
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.service.notification.StatusBarNotification
import android.testing.TestableLooper.RunWithLooper
import androidx.media.utils.MediaConstants
@@ -1167,7 +1166,6 @@ class MediaDataProcessorTest() : SysuiTestCase() {
    }

    @Test
    @EnableFlags(Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX)
    fun postWithPlaybackActions_drawablesReused() {
        whenever(notificationLockscreenUserManager.isCurrentProfile(USER_ID)).thenReturn(true)
        whenever(notificationLockscreenUserManager.isProfileAvailable(USER_ID)).thenReturn(true)
@@ -1199,39 +1197,6 @@ class MediaDataProcessorTest() : SysuiTestCase() {
            .isEqualTo(firstSemanticActions.prevOrCustom?.icon)
    }

    @Test
    @DisableFlags(Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX)
    fun postWithPlaybackActions_drawablesNotReused() {
        whenever(notificationLockscreenUserManager.isCurrentProfile(USER_ID)).thenReturn(true)
        whenever(notificationLockscreenUserManager.isProfileAvailable(USER_ID)).thenReturn(true)
        val stateActions =
            PlaybackState.ACTION_PAUSE or
                PlaybackState.ACTION_SKIP_TO_PREVIOUS or
                PlaybackState.ACTION_SKIP_TO_NEXT
        val stateBuilder =
            PlaybackState.Builder()
                .setState(PlaybackState.STATE_PLAYING, 0, 10f)
                .setActions(stateActions)
        whenever(controller.playbackState).thenReturn(stateBuilder.build())
        val userEntries by testScope.collectLastValue(mediaFilterRepository.currentUserEntries)

        mediaDataProcessor.addInternalListener(mediaDataFilter)
        mediaDataFilter.mediaDataProcessor = mediaDataProcessor
        addNotificationAndLoad()

        assertThat(userEntries).hasSize(1)
        val firstSemanticActions = userEntries?.values?.toList()?.get(0)?.semanticActions!!

        addNotificationAndLoad()

        assertThat(userEntries).hasSize(1)
        val secondSemanticActions = userEntries?.values?.toList()?.get(0)?.semanticActions!!
        assertThat(secondSemanticActions.nextOrCustom?.icon)
            .isNotEqualTo(firstSemanticActions.nextOrCustom?.icon)
        assertThat(secondSemanticActions.prevOrCustom?.icon)
            .isNotEqualTo(firstSemanticActions.prevOrCustom?.icon)
    }

    @DisableFlags(Flags.FLAG_MEDIA_CONTROLS_BUTTON_MEDIA3)
    @Test
    fun testPlaybackActions_reservedSpace() {
+3 −78
Original line number Diff line number Diff line
@@ -471,7 +471,6 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas
    }

    @Test
    @EnableFlags(com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX)
    fun onMediaDataLoaded_withRemotePlaybackType_usesNonNullRoutingSessionName_drawableReused() {
        whenever(routingSession.name).thenReturn(REMOTE_DEVICE_NAME)
        whenever(routingSession.selectedRoutes).thenReturn(listOf("selectedRoute", "selectedRoute"))
@@ -484,20 +483,6 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas
        assertThat(secondData.icon).isEqualTo(firstData.icon)
    }

    @Test
    @DisableFlags(com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX)
    fun onMediaDataLoaded_withRemotePlaybackType_usesNonNullRoutingSessionName_drawableNotReused() {
        whenever(routingSession.name).thenReturn(REMOTE_DEVICE_NAME)
        whenever(routingSession.selectedRoutes).thenReturn(listOf("selectedRoute", "selectedRoute"))
        whenever(playbackInfo.playbackType).thenReturn(PlaybackInfo.PLAYBACK_TYPE_REMOTE)

        val firstData = loadMediaAndCaptureDeviceData()
        reset(listener)
        val secondData = loadMediaAndCaptureDeviceData()

        assertThat(secondData.icon).isNotEqualTo(firstData.icon)
    }

    @RequiresFlagsDisabled(FLAG_USE_PLAYBACK_INFO_FOR_ROUTING_CONTROLS)
    @Test
    fun onMediaDataLoaded_withRemotePlaybackInfo_noMatchingRoutingSession_setsDisabledDevice() {
@@ -527,8 +512,7 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas

    @Test
    @RequiresFlagsEnabled(FLAG_USE_PLAYBACK_INFO_FOR_ROUTING_CONTROLS)
    @EnableFlags(com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX)
    fun onMediaDataLoaded_withRemotePlaybackInfo_noMatchingRoutingSession_drawableReused() {
    fun onMediaDataLoaded_withRemotePlaybackInfo_noMatchingRoutingSession() {
        whenever(playbackInfo.playbackType).thenReturn(PlaybackInfo.PLAYBACK_TYPE_REMOTE)
        whenever(mr2.getRoutingSessionForMediaController(any())).thenReturn(null)
        context.orCreateTestableResources.removeOverride(R.drawable.ic_media_home_devices)
@@ -540,21 +524,6 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas
        assertThat(secondData.icon).isEqualTo(firstData.icon)
    }

    @Test
    @RequiresFlagsEnabled(FLAG_USE_PLAYBACK_INFO_FOR_ROUTING_CONTROLS)
    @DisableFlags(com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX)
    fun onMediaDataLoaded_withRemotePlaybackInfo_noMatchingRoutingSession_drawableNotReused() {
        whenever(playbackInfo.playbackType).thenReturn(PlaybackInfo.PLAYBACK_TYPE_REMOTE)
        whenever(mr2.getRoutingSessionForMediaController(any())).thenReturn(null)
        context.orCreateTestableResources.removeOverride(R.drawable.ic_media_home_devices)

        val firstData = loadMediaAndCaptureDeviceData()
        reset(listener)
        val secondData = loadMediaAndCaptureDeviceData()

        assertThat(secondData.icon).isNotEqualTo(firstData.icon)
    }

    @RequiresFlagsDisabled(FLAG_USE_PLAYBACK_INFO_FOR_ROUTING_CONTROLS)
    @Test
    fun onSelectedDeviceStateChanged_withRemotePlaybackInfo_noMatchingRoutingSession_setsDisabledDevice() {
@@ -922,10 +891,7 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas

    @Test
    @DisableFlags(Flags.FLAG_LEGACY_LE_AUDIO_SHARING)
    @EnableFlags(
        Flags.FLAG_ENABLE_LE_AUDIO_SHARING,
        com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX,
    )
    @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
    fun onBroadcastStarted_currentMediaDeviceDataIsBroadcasting_drawablesReused() {
        val broadcastCallback = setupBroadcastCallback()
        setupLeAudioConfiguration(true)
@@ -940,29 +906,7 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas
    }

    @Test
    @DisableFlags(
        Flags.FLAG_LEGACY_LE_AUDIO_SHARING,
        com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX,
    )
    @EnableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
    fun onBroadcastStarted_currentMediaDeviceDataIsBroadcasting_drawablesNotReused() {
        val broadcastCallback = setupBroadcastCallback()
        setupLeAudioConfiguration(true)
        setupBroadcastPackage(BROADCAST_APP_NAME)
        broadcastCallback.onBroadcastStarted(1, 1)

        val firstDeviceData = loadMediaAndCaptureDeviceData()
        reset(listener)
        val secondDeviceData = loadMediaAndCaptureDeviceData()

        assertThat(firstDeviceData.icon).isNotEqualTo(secondDeviceData.icon)
    }

    @Test
    @EnableFlags(
        Flags.FLAG_LEGACY_LE_AUDIO_SHARING,
        com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX,
    )
    @EnableFlags(Flags.FLAG_LEGACY_LE_AUDIO_SHARING)
    @DisableFlags(Flags.FLAG_ENABLE_LE_AUDIO_SHARING)
    fun onBroadcastStarted_legacy_currentMediaDeviceDataIsNotBroadcasting_drawableReused() {
        val broadcastCallback = setupBroadcastCallback()
@@ -977,25 +921,6 @@ public class MediaDeviceManagerTest(flags: FlagsParameterization) : SysuiTestCas
        assertThat(firstDeviceData.icon).isEqualTo(secondDeviceData.icon)
    }

    @Test
    @EnableFlags(Flags.FLAG_LEGACY_LE_AUDIO_SHARING)
    @DisableFlags(
        Flags.FLAG_ENABLE_LE_AUDIO_SHARING,
        com.android.systemui.Flags.FLAG_MEDIA_CONTROLS_DRAWABLES_REUSE_BUGFIX,
    )
    fun onBroadcastStarted_legacy_currentMediaDeviceDataIsNotBroadcasting_drawableNotReused() {
        val broadcastCallback = setupBroadcastCallback()
        setupLeAudioConfiguration(true)
        setupBroadcastPackage(NORMAL_APP_NAME)
        broadcastCallback.onBroadcastStarted(1, 1)

        val firstDeviceData = loadMediaAndCaptureDeviceData()
        reset(listener)
        val secondDeviceData = loadMediaAndCaptureDeviceData()

        assertThat(firstDeviceData.icon).isNotEqualTo(secondDeviceData.icon)
    }

    @Test
    @DisableFlags(
        Flags.FLAG_LEGACY_LE_AUDIO_SHARING,