Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/lifecycle/LetterboxLifecycleEvent.kt +6 −10 Original line number Diff line number Diff line Loading @@ -67,15 +67,8 @@ fun Change.asLetterboxLifecycleEventType() = when { /** * Logic to skip a [Change] if not related to Letterboxing. We always skip changes about closing. * We skip the changes for tasks which are not leaves. The isLeaf information for changes with * activity target is always false but those changes cannot be skipped. * * No leaf task -> isChangeForALeafTask()==false isActivityChange()==false Skip * leaf task -> isChangeForALeafTask()==true isActivityChange()==false No Skip * Activity change -> isChangeForALeafTask()==false isActivityChange()==true No Skip */ fun Change.shouldSkipForLetterbox(): Boolean = isClosingType(mode) || !(isChangeForALeafTask() || isActivityChange()) fun Change.shouldSkipForLetterbox(): Boolean = isClosingType(mode) /** * Returns [true] if the [Change] is about an [Activity] and so it contains a Loading @@ -88,6 +81,9 @@ fun Change.isActivityChange(): Boolean = activityTransitionInfo != null */ fun Change.isTranslucent() = hasFlags(FLAG_TRANSLUCENT) /** Returns [true] if the Task hosts Activities */ /** * Returns [true] if the Task hosts Activities. This is true if the Change has Activity as target * or if task is a leaf task. */ fun Change.isChangeForALeafTask(): Boolean = taskInfo?.appCompatTaskInfo?.isLeafTask() ?: false taskInfo?.appCompatTaskInfo?.isLeafTask ?: isActivityChange() libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/lifecycle/LetterboxLifecycleEventTest.kt +23 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.testing.AndroidTestingRunner import android.view.WindowManager import android.window.TransitionInfo.FLAG_TRANSLUCENT import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase import com.android.wm.shell.compatui.letterbox.lifecycle.LetterboxLifecycleEventType.CLOSE import com.android.wm.shell.compatui.letterbox.lifecycle.LetterboxLifecycleEventType.OPEN import com.android.wm.shell.util.testLetterboxLifecycleEvent Loading @@ -37,7 +38,7 @@ import org.junit.runner.RunWith */ @RunWith(AndroidTestingRunner::class) @SmallTest class LetterboxLifecycleEventTest { class LetterboxLifecycleEventTest : ShellTestCase() { @Test fun `asLetterboxLifecycleEventType returns the right type for OPEN modes`() { Loading Loading @@ -135,19 +136,38 @@ class LetterboxLifecycleEventTest { } } @Test fun `isChangeForALeafTask returns true if the Change has Activity target`() { testLetterboxLifecycleEvent { inputChange { } useChange { change -> assertFalse(change.isChangeForALeafTask()) } inputChange { activityTransitionInfo { } } useChange { change -> assertTrue(change.isChangeForALeafTask()) } } } @Test fun `isTranslucent returns true if the FLAG_TRANSLUCENT flag is present in Change`() { testLetterboxLifecycleEvent { inputChange { } useChange { change -> assert(!change.isTranslucent()) assertFalse(change.isTranslucent()) } inputChange { flags = FLAG_TRANSLUCENT } useChange { change -> assert(!change.isTranslucent()) assertTrue(change.isTranslucent()) } } } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/lifecycle/SkipLetterboxLifecycleEventFactoryTest.kt +1 −48 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import com.android.wm.shell.ShellTestCase import com.android.wm.shell.util.testLetterboxLifecycleEventFactory import java.util.function.Consumer import kotlin.test.assertFalse import kotlin.test.assertNull import kotlin.test.assertTrue import org.junit.Test import org.junit.runner.RunWith Loading @@ -49,62 +48,16 @@ class SkipLetterboxLifecycleEventFactoryTest : ShellTestCase() { validateCanHandle { canHandle -> assertTrue(canHandle) } validateCreateLifecycleEvent { event -> assertNull(event) } } } } @Test fun `Factory is active when Change is for a Task which is NOT a leaf`() { runTestScenario { r -> testLetterboxLifecycleEventFactory(r.getLetterboxLifecycleEventFactory()) { inputChange { mode = TRANSIT_OPEN runningTaskInfo { ti -> ti.appCompatTaskInfo.setIsLeafTask(false) } } validateCanHandle { canHandle -> assertTrue(canHandle) } validateCreateLifecycleEvent { event -> assertNull(event) } } } } @Test fun `Factory is active when Change is not closing for a Task which is NOT a leaf`() { fun `Factory is NOT active when Change is NOT a Closing one`() { runTestScenario { r -> testLetterboxLifecycleEventFactory(r.getLetterboxLifecycleEventFactory()) { inputChange { mode = TRANSIT_OPEN runningTaskInfo { ti -> ti.appCompatTaskInfo.setIsLeafTask(false) } } validateCanHandle { canHandle -> assertTrue(canHandle) } validateCreateLifecycleEvent { event -> assertNull(event) } } } } @Test fun `Factory is NOT active when Change is not closing for an Activity Transition`() { runTestScenario { r -> testLetterboxLifecycleEventFactory(r.getLetterboxLifecycleEventFactory()) { inputChange { mode = TRANSIT_OPEN activityTransitionInfo { this.taskId = 10 } } validateCanHandle { canHandle -> assertFalse(canHandle) Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/letterbox/lifecycle/LetterboxLifecycleEvent.kt +6 −10 Original line number Diff line number Diff line Loading @@ -67,15 +67,8 @@ fun Change.asLetterboxLifecycleEventType() = when { /** * Logic to skip a [Change] if not related to Letterboxing. We always skip changes about closing. * We skip the changes for tasks which are not leaves. The isLeaf information for changes with * activity target is always false but those changes cannot be skipped. * * No leaf task -> isChangeForALeafTask()==false isActivityChange()==false Skip * leaf task -> isChangeForALeafTask()==true isActivityChange()==false No Skip * Activity change -> isChangeForALeafTask()==false isActivityChange()==true No Skip */ fun Change.shouldSkipForLetterbox(): Boolean = isClosingType(mode) || !(isChangeForALeafTask() || isActivityChange()) fun Change.shouldSkipForLetterbox(): Boolean = isClosingType(mode) /** * Returns [true] if the [Change] is about an [Activity] and so it contains a Loading @@ -88,6 +81,9 @@ fun Change.isActivityChange(): Boolean = activityTransitionInfo != null */ fun Change.isTranslucent() = hasFlags(FLAG_TRANSLUCENT) /** Returns [true] if the Task hosts Activities */ /** * Returns [true] if the Task hosts Activities. This is true if the Change has Activity as target * or if task is a leaf task. */ fun Change.isChangeForALeafTask(): Boolean = taskInfo?.appCompatTaskInfo?.isLeafTask() ?: false taskInfo?.appCompatTaskInfo?.isLeafTask ?: isActivityChange()
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/lifecycle/LetterboxLifecycleEventTest.kt +23 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.testing.AndroidTestingRunner import android.view.WindowManager import android.window.TransitionInfo.FLAG_TRANSLUCENT import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase import com.android.wm.shell.compatui.letterbox.lifecycle.LetterboxLifecycleEventType.CLOSE import com.android.wm.shell.compatui.letterbox.lifecycle.LetterboxLifecycleEventType.OPEN import com.android.wm.shell.util.testLetterboxLifecycleEvent Loading @@ -37,7 +38,7 @@ import org.junit.runner.RunWith */ @RunWith(AndroidTestingRunner::class) @SmallTest class LetterboxLifecycleEventTest { class LetterboxLifecycleEventTest : ShellTestCase() { @Test fun `asLetterboxLifecycleEventType returns the right type for OPEN modes`() { Loading Loading @@ -135,19 +136,38 @@ class LetterboxLifecycleEventTest { } } @Test fun `isChangeForALeafTask returns true if the Change has Activity target`() { testLetterboxLifecycleEvent { inputChange { } useChange { change -> assertFalse(change.isChangeForALeafTask()) } inputChange { activityTransitionInfo { } } useChange { change -> assertTrue(change.isChangeForALeafTask()) } } } @Test fun `isTranslucent returns true if the FLAG_TRANSLUCENT flag is present in Change`() { testLetterboxLifecycleEvent { inputChange { } useChange { change -> assert(!change.isTranslucent()) assertFalse(change.isTranslucent()) } inputChange { flags = FLAG_TRANSLUCENT } useChange { change -> assert(!change.isTranslucent()) assertTrue(change.isTranslucent()) } } } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/compatui/letterbox/lifecycle/SkipLetterboxLifecycleEventFactoryTest.kt +1 −48 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import com.android.wm.shell.ShellTestCase import com.android.wm.shell.util.testLetterboxLifecycleEventFactory import java.util.function.Consumer import kotlin.test.assertFalse import kotlin.test.assertNull import kotlin.test.assertTrue import org.junit.Test import org.junit.runner.RunWith Loading @@ -49,62 +48,16 @@ class SkipLetterboxLifecycleEventFactoryTest : ShellTestCase() { validateCanHandle { canHandle -> assertTrue(canHandle) } validateCreateLifecycleEvent { event -> assertNull(event) } } } } @Test fun `Factory is active when Change is for a Task which is NOT a leaf`() { runTestScenario { r -> testLetterboxLifecycleEventFactory(r.getLetterboxLifecycleEventFactory()) { inputChange { mode = TRANSIT_OPEN runningTaskInfo { ti -> ti.appCompatTaskInfo.setIsLeafTask(false) } } validateCanHandle { canHandle -> assertTrue(canHandle) } validateCreateLifecycleEvent { event -> assertNull(event) } } } } @Test fun `Factory is active when Change is not closing for a Task which is NOT a leaf`() { fun `Factory is NOT active when Change is NOT a Closing one`() { runTestScenario { r -> testLetterboxLifecycleEventFactory(r.getLetterboxLifecycleEventFactory()) { inputChange { mode = TRANSIT_OPEN runningTaskInfo { ti -> ti.appCompatTaskInfo.setIsLeafTask(false) } } validateCanHandle { canHandle -> assertTrue(canHandle) } validateCreateLifecycleEvent { event -> assertNull(event) } } } } @Test fun `Factory is NOT active when Change is not closing for an Activity Transition`() { runTestScenario { r -> testLetterboxLifecycleEventFactory(r.getLetterboxLifecycleEventFactory()) { inputChange { mode = TRANSIT_OPEN activityTransitionInfo { this.taskId = 10 } } validateCanHandle { canHandle -> assertFalse(canHandle) Loading