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

Commit 9d086722 authored by Massimo Carli's avatar Massimo Carli
Browse files

[66/n] Renaming operation in LetterboxDependenciesHelper

Define the shouldDestroyLetterboxSurfaces operation in LetterboxDependenciesHelper
which can abstracts different criteria by which the letterbox surfaces
might be removed.

Flag: EXEMPT Refactoring
Bug: 423915680
Test: atest WMShellUnitTests:DefaultLetterboxDependenciesHelperTest

Change-Id: Ic5887eddf46889190afbd336bd17f1a92779030e
parent b6ccc323
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -17,14 +17,14 @@
package com.android.wm.shell.compatui.letterbox.config

import android.window.TransitionInfo
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer
import com.android.wm.shell.desktopmode.DesktopRepository

/**
 * Default [LetterboxDependenciesHelper] implementation using Desktop Windowing dependencies.
 * Default [LetterboxDependenciesHelper] implementation.
 */
class DefaultLetterboxDependenciesHelper(val desksOrganizer: DesksOrganizer) :
class DefaultLetterboxDependenciesHelper(val desktopRepository: DesktopRepository) :
    LetterboxDependenciesHelper {

    override fun isDesktopWindowingAction(change: TransitionInfo.Change): Boolean =
        desksOrganizer.isDeskChange(change)
    override fun shouldDestroyLetterboxSurfaces(change: TransitionInfo.Change): Boolean =
        desktopRepository.isAnyDeskActive(change.endDisplayId)
}
+1 −1
Original line number Diff line number Diff line
@@ -28,5 +28,5 @@ class IgnoreLetterboxDependenciesHelper : LetterboxDependenciesHelper {
     * We should ignore all the changes related to Desktop Windowing when the feature is not
     * available.
     */
    override fun isDesktopWindowingAction(change: Change): Boolean = false
    override fun shouldDestroyLetterboxSurfaces(change: Change): Boolean = false
}
+2 −2
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import android.window.TransitionInfo.Change
interface LetterboxDependenciesHelper {

    /**
     * Tells if the [Change] is related to Desktop Windowing.
     * Tells if we need to destroy the existing letterbox surfaces for a given [Change].
     */
    fun isDesktopWindowingAction(change: Change): Boolean
    fun shouldDestroyLetterboxSurfaces(change: Change): Boolean
}
+14 −14
Original line number Diff line number Diff line
@@ -19,14 +19,14 @@ package com.android.wm.shell.compatui.letterbox.config
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.desktopmode.multidesks.DesksOrganizer
import com.android.wm.shell.desktopmode.DesktopRepository
import com.android.wm.shell.util.testLetterboxDependenciesHelper
import java.util.function.Consumer
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import java.util.function.Consumer

/**
 * Tests for [DefaultLetterboxDependenciesHelper].
@@ -39,26 +39,26 @@ import java.util.function.Consumer
class DefaultLetterboxDependenciesHelperTest : ShellTestCase() {

    @Test
    fun `Default implementation returns true if isDeskChange is true`() {
    fun `Should not destroy letterbox surfaces if not isAnyDeskActive`() {
        runTestScenario { r ->
            testLetterboxDependenciesHelper(r.getLetterboxLifecycleEventFactory()) {
                inputChange { }
                r.configureDeskChangeChecker(isDeskChange = true)
                validateIsDesktopWindowingAction { isDeskChange ->
                    assert(isDeskChange)
                r.configureDesktopRepository(isAnyDeskActive = false)
                validateIsDesktopWindowingAction { shouldDestroy ->
                    assert(!shouldDestroy)
                }
            }
        }
    }

    @Test
    fun `Default implementation returns false if isDeskChange is false`() {
    fun `Should destroy letterbox surfaces if isAnyDeskActive`() {
        runTestScenario { r ->
            testLetterboxDependenciesHelper(r.getLetterboxLifecycleEventFactory()) {
                inputChange { }
                r.configureDeskChangeChecker(isDeskChange = true)
                validateIsDesktopWindowingAction { isDeskChange ->
                    assert(!isDeskChange)
                r.configureDesktopRepository(isAnyDeskActive = true)
                validateIsDesktopWindowingAction { shouldDestroy ->
                    assert(shouldDestroy)
                }
            }
        }
@@ -77,14 +77,14 @@ class DefaultLetterboxDependenciesHelperTest : ShellTestCase() {
     */
    class LetterboxDependenciesHelperRobotTest {

        private val desksOrganizer = mock<DesksOrganizer>()
        private val desktopRepository = mock<DesktopRepository>()

        fun configureDeskChangeChecker(isDeskChange: Boolean) {
            doReturn(isDeskChange).`when`(desksOrganizer).isDeskChange(any())
        fun configureDesktopRepository(isAnyDeskActive: Boolean) {
            doReturn(isAnyDeskActive).`when`(desktopRepository).isAnyDeskActive(any())
        }

        fun getLetterboxLifecycleEventFactory(): () -> LetterboxDependenciesHelper = {
            DefaultLetterboxDependenciesHelper(desksOrganizer)
            DefaultLetterboxDependenciesHelper(desktopRepository)
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ class LetterboxDependenciesHelperTestContext(

    fun validateIsDesktopWindowingAction(verifier: (Boolean) -> Unit) {
        // We execute the test subject using the input
        verifier(testSubjectFactory().isDesktopWindowingAction(inputObject))
        verifier(testSubjectFactory().shouldDestroyLetterboxSurfaces(inputObject))
    }
}