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

Commit 53bc4e7b authored by burakov's avatar burakov
Browse files

[bc25] Remove support for bottom-aligned shade.

Fix: 363204644
Flag: com.android.systemui.dual_shade
Flag: com.android.systemui.scene_container
Test: Existing unit tests still pass.
Change-Id: I26428ca721520d41e7a5d93dc5b82cfe3a6c07b5
parent a0a823aa
Loading
Loading
Loading
Loading
+2 −14
Original line number Diff line number Diff line
package com.android.systemui.scene.ui.composable

import androidx.compose.foundation.gestures.Orientation
import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.ProgressConverter
import com.android.compose.animation.scene.transitions
import com.android.systemui.bouncer.ui.composable.Bouncer
import com.android.systemui.notifications.ui.composable.Notifications
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.TransitionKeys.OpenBottomShade
import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse
import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade
import com.android.systemui.scene.ui.composable.transitions.bouncerToGoneTransition
@@ -48,18 +46,8 @@ val SceneContainerTransitions = transitions {
    // Scene transitions

    from(Scenes.Bouncer, to = Scenes.Gone) { bouncerToGoneTransition() }
    from(Scenes.Gone, to = Scenes.NotificationsShade) {
        goneToNotificationsShadeTransition(Edge.Top)
    }
    from(Scenes.Gone, to = Scenes.NotificationsShade, key = OpenBottomShade) {
        goneToNotificationsShadeTransition(Edge.Bottom)
    }
    from(Scenes.Gone, to = Scenes.QuickSettingsShade) {
        goneToQuickSettingsShadeTransition(Edge.Top)
    }
    from(Scenes.Gone, to = Scenes.QuickSettingsShade, key = OpenBottomShade) {
        goneToQuickSettingsShadeTransition(Edge.Bottom)
    }
    from(Scenes.Gone, to = Scenes.NotificationsShade) { goneToNotificationsShadeTransition() }
    from(Scenes.Gone, to = Scenes.QuickSettingsShade) { goneToQuickSettingsShadeTransition() }
    from(Scenes.Gone, to = Scenes.Shade) { goneToShadeTransition() }
    from(Scenes.Gone, to = Scenes.Shade, key = ToSplitShade) { goneToSplitShadeTransition() }
    from(Scenes.Gone, to = Scenes.Shade, key = SlightlyFasterShadeCollapse) {
+1 −3
Original line number Diff line number Diff line
@@ -16,12 +16,10 @@

package com.android.systemui.scene.ui.composable.transitions

import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.TransitionBuilder

fun TransitionBuilder.goneToNotificationsShadeTransition(
    edge: Edge = Edge.Top,
    durationScale: Double = 1.0,
) {
    toNotificationsShadeTransition(edge, durationScale)
    toNotificationsShadeTransition(durationScale)
}
+4 −18
Original line number Diff line number Diff line
@@ -19,12 +19,9 @@ package com.android.systemui.scene.ui.composable.transitions
import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring
import androidx.compose.animation.core.tween
import androidx.compose.foundation.gestures.Orientation
import androidx.compose.ui.unit.IntSize
import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.TransitionBuilder
import com.android.compose.animation.scene.UserActionDistance
import com.android.compose.animation.scene.UserActionDistanceScope
import com.android.systemui.notifications.ui.composable.Notifications
import com.android.systemui.shade.ui.composable.OverlayShade
import com.android.systemui.shade.ui.composable.Shade
@@ -32,11 +29,6 @@ import com.android.systemui.shade.ui.composable.ShadeHeader
import kotlin.time.Duration.Companion.milliseconds

fun TransitionBuilder.toNotificationsShadeTransition(
    /**
     * The edge where the shade will animate from. This is statically determined (i.e. doesn't
     * change during runtime).
     */
    edge: Edge = Edge.Top,
    durationScale: Double = 1.0,
) {
    spec = tween(durationMillis = (DefaultDuration * durationScale).inWholeMilliseconds.toInt())
@@ -45,17 +37,11 @@ fun TransitionBuilder.toNotificationsShadeTransition(
            stiffness = Spring.StiffnessMediumLow,
            visibilityThreshold = Shade.Dimensions.ScrimVisibilityThreshold,
        )
    distance =
        object : UserActionDistance {
            override fun UserActionDistanceScope.absoluteDistance(
                fromSceneSize: IntSize,
                orientation: Orientation,
            ): Float {
                return fromSceneSize.height.toFloat() * 2 / 3f
            }
    distance = UserActionDistance { fromSceneSize, orientation ->
        fromSceneSize.height.toFloat() * 2 / 3f
    }

    translate(OverlayShade.Elements.Panel, edge)
    translate(OverlayShade.Elements.Panel, Edge.Top)

    fractionRange(end = .5f) { fade(OverlayShade.Elements.Scrim) }

+1 −7
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ import com.android.compose.windowsizeclass.LocalWindowSizeClass
import com.android.systemui.keyguard.ui.composable.LockscreenContent
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.shared.model.ShadeAlignment
import com.android.systemui.shade.ui.viewmodel.OverlayShadeViewModel
import com.android.systemui.util.kotlin.getOrNull
import dagger.Lazy
@@ -84,12 +83,7 @@ fun SceneScope.OverlayShade(

        Box(
            modifier = Modifier.fillMaxSize().panelPadding(),
            contentAlignment =
                if (viewModel.panelAlignment == ShadeAlignment.Top) {
                    Alignment.TopEnd
                } else {
                    Alignment.BottomEnd
                },
            contentAlignment = Alignment.TopEnd,
        ) {
            Panel(
                modifier = Modifier.element(OverlayShade.Elements.Panel).panelSize(),
+2 −17
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.kosmos.testScope
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.shade.ui.viewmodel.notificationsShadeOverlayActionsViewModel
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
@@ -44,15 +43,13 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() {

    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope
    private val fakeShadeRepository by lazy { kosmos.fakeShadeRepository }

    private val underTest by lazy { kosmos.notificationsShadeOverlayActionsViewModel }
    private val underTest = kosmos.notificationsShadeOverlayActionsViewModel

    @Test
    fun upTransitionSceneKey_topAligned_hidesShade() =
    fun upTransitionSceneKey_hidesShade() =
        testScope.runTest {
            val actions by collectLastValue(underTest.actions)
            fakeShadeRepository.setDualShadeAlignedToBottom(false)
            underTest.activateIn(this)

            assertThat((actions?.get(Swipe.Up) as? UserActionResult.HideOverlay)?.overlay)
@@ -60,18 +57,6 @@ class NotificationsShadeOverlayActionsViewModelTest : SysuiTestCase() {
            assertThat(actions?.get(Swipe.Down)).isNull()
        }

    @Test
    fun upTransitionSceneKey_bottomAligned_doesNothing() =
        testScope.runTest {
            val actions by collectLastValue(underTest.actions)
            fakeShadeRepository.setDualShadeAlignedToBottom(true)
            underTest.activateIn(this)

            assertThat(actions?.get(Swipe.Up)).isNull()
            assertThat((actions?.get(Swipe.Down) as? UserActionResult.HideOverlay)?.overlay)
                .isEqualTo(Overlays.NotificationsShade)
        }

    @Test
    fun back_hidesShade() =
        testScope.runTest {
Loading