diff --git a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionWallpaperController.kt b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionWallpaperController.kt index 8dd3d6beb9c3f..4f45aafce416d 100644 --- a/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionWallpaperController.kt +++ b/packages/SystemUI/src/com/android/systemui/unfold/UnfoldTransitionWallpaperController.kt @@ -33,7 +33,14 @@ class UnfoldTransitionWallpaperController @Inject constructor( private inner class TransitionListener : TransitionProgressListener { override fun onTransitionProgress(progress: Float) { - wallpaperController.setUnfoldTransitionZoom(progress) + // Fully zoomed in when fully unfolded + wallpaperController.setUnfoldTransitionZoom(1 - progress) + } + + override fun onTransitionFinished() { + // Resets wallpaper zoom-out to 0f when fully folded + // When fully unfolded it is set to 0f by onTransitionProgress + wallpaperController.setUnfoldTransitionZoom(0f) } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/unfold/TestUnfoldTransitionProvider.kt b/packages/SystemUI/tests/src/com/android/systemui/unfold/TestUnfoldTransitionProvider.kt new file mode 100644 index 0000000000000..c31640279305f --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/unfold/TestUnfoldTransitionProvider.kt @@ -0,0 +1,32 @@ +package com.android.systemui.unfold + +import com.android.systemui.unfold.UnfoldTransitionProgressProvider.TransitionProgressListener + +class TestUnfoldTransitionProvider : UnfoldTransitionProgressProvider, TransitionProgressListener { + + private val listeners = arrayListOf() + + override fun destroy() { + listeners.clear() + } + + override fun addCallback(listener: TransitionProgressListener) { + listeners.add(listener) + } + + override fun removeCallback(listener: TransitionProgressListener) { + listeners.remove(listener) + } + + override fun onTransitionStarted() { + listeners.forEach { it.onTransitionStarted() } + } + + override fun onTransitionFinished() { + listeners.forEach { it.onTransitionFinished() } + } + + override fun onTransitionProgress(progress: Float) { + listeners.forEach { it.onTransitionProgress(progress) } + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldTransitionWallpaperControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldTransitionWallpaperControllerTest.kt new file mode 100644 index 0000000000000..6ec0251d41a58 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/unfold/UnfoldTransitionWallpaperControllerTest.kt @@ -0,0 +1,51 @@ +package com.android.systemui.unfold + +import android.testing.AndroidTestingRunner +import androidx.test.filters.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.util.WallpaperController +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.AdditionalMatchers.eq +import org.mockito.Mock +import org.mockito.Mockito.verify +import org.mockito.junit.MockitoJUnit + +@RunWith(AndroidTestingRunner::class) +@SmallTest +class UnfoldTransitionWallpaperControllerTest : SysuiTestCase() { + + @Mock + private lateinit var wallpaperController: WallpaperController + + private val progressProvider = TestUnfoldTransitionProvider() + + @JvmField + @Rule + val mockitoRule = MockitoJUnit.rule() + + private lateinit var unfoldWallpaperController: UnfoldTransitionWallpaperController + + @Before + fun setup() { + unfoldWallpaperController = UnfoldTransitionWallpaperController(progressProvider, + wallpaperController) + unfoldWallpaperController.init() + } + + @Test + fun onTransitionProgress_zoomsIn() { + progressProvider.onTransitionProgress(0.8f) + + verify(wallpaperController).setUnfoldTransitionZoom(eq(0.2f, 0.001f)) + } + + @Test + fun onTransitionFinished_resetsZoom() { + progressProvider.onTransitionFinished() + + verify(wallpaperController).setUnfoldTransitionZoom(eq(0f, 0.001f)) + } +}