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

Commit d81bde19 authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Support ambient aod wallpaper on foldables" into main

parents 4c34b85b 1f1914cd
Loading
Loading
Loading
Loading
+57 −0
Original line number Diff line number Diff line
@@ -247,6 +247,63 @@ class WallpaperRepositoryImplTest : SysuiTestCase() {
            assertThat(latest).isFalse()
        }

    @Test
    @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD)
    fun wallpaperSupportsAmbientMode_sysuiOverrideFalse_deviceDoesSupport_false() =
        testScope.runTest {
            underTest = kosmos.wallpaperRepository
            secureSettings.putInt(Settings.Secure.DOZE_ALWAYS_ON_WALLPAPER_ENABLED, 1)
            context.orCreateTestableResources.addOverride(
                R.bool.config_dozeSupportsAodWallpaper,
                true,
            )
            context.orCreateTestableResources.addOverride(
                SysUIR.integer.config_dozeSupportsAodWallpaperOverride,
                0,
            )

            val latest by collectLastValue(underTest.wallpaperSupportsAmbientMode)
            assertThat(latest).isFalse()
        }

    @Test
    @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD)
    fun wallpaperSupportsAmbientMode_sysuiOverrideTrue_deviceDoesSupport_true() =
        testScope.runTest {
            underTest = kosmos.wallpaperRepository
            secureSettings.putInt(Settings.Secure.DOZE_ALWAYS_ON_WALLPAPER_ENABLED, 1)
            context.orCreateTestableResources.addOverride(
                R.bool.config_dozeSupportsAodWallpaper,
                true,
            )
            context.orCreateTestableResources.addOverride(
                SysUIR.integer.config_dozeSupportsAodWallpaperOverride,
                1,
            )

            val latest by collectLastValue(underTest.wallpaperSupportsAmbientMode)
            assertThat(latest).isTrue()
        }

    @Test
    @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD)
    fun wallpaperSupportsAmbientMode_sysuiOverrideNull_deviceDoesSupport_true() =
        testScope.runTest {
            underTest = kosmos.wallpaperRepository
            secureSettings.putInt(Settings.Secure.DOZE_ALWAYS_ON_WALLPAPER_ENABLED, 1)
            context.orCreateTestableResources.addOverride(
                R.bool.config_dozeSupportsAodWallpaper,
                true,
            )
            context.orCreateTestableResources.addOverride(
                SysUIR.integer.config_dozeSupportsAodWallpaperOverride,
                -1,
            )

            val latest by collectLastValue(underTest.wallpaperSupportsAmbientMode)
            assertThat(latest).isTrue()
        }

    @Test
    @EnableFlags(SharedFlags.FLAG_AMBIENT_AOD)
    fun wallpaperSupportsAmbientMode_deviceDoesSupport_true() =
+3 −0
Original line number Diff line number Diff line
@@ -1128,4 +1128,7 @@

    <!-- Whether to enable the desktop specific audio tile details view. -->
    <bool name="config_enableDesktopAudioTileDetailsView">false</bool>

    <!-- If AOD can show an ambient version of the wallpaper (-1 means ignore) -->
    <integer name="config_dozeSupportsAodWallpaperOverride">-1</integer>
</resources>
+16 −3
Original line number Diff line number Diff line
@@ -134,9 +134,7 @@ constructor(
            .map {
                val userEnabled =
                    secureSettings.getInt(Settings.Secure.DOZE_ALWAYS_ON_WALLPAPER_ENABLED, 1) == 1
                userEnabled &&
                    context.resources.getBoolean(R.bool.config_dozeSupportsAodWallpaper) &&
                    ambientAod()
                userEnabled && configEnabled() && ambientAod()
            }
            .flowOn(bgDispatcher)

@@ -197,6 +195,21 @@ constructor(
                initialValue = extendedWallpaperEffects(),
            )

    private fun configEnabled(): Boolean {
        // Some devices like foldables may only support AOD wallpaper on one screen. The override
        // config adds the ability to specify general device support but allow per screen config
        val sysuiOverride =
            when (
                context.resources.getInteger(SysUIR.integer.config_dozeSupportsAodWallpaperOverride)
            ) {
                0 -> false
                1 -> true
                else -> null
            }
        return if (sysuiOverride != null) sysuiOverride
        else context.resources.getBoolean(R.bool.config_dozeSupportsAodWallpaper)
    }

    private suspend fun getWallpaper(
        selectedUser: SelectedUserModel,
        which: Int = FLAG_SYSTEM,