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

Commit 9168c3c7 authored by Justin Weir's avatar Justin Weir Committed by Android (Google) Code Review
Browse files

Merge changes Ied8ebd0a,Idb840f9d into main

* changes:
  Turn PanelExpansionInteractor into an interface
  Delete methods from ShadeViewController
parents 44174063 8180a9f6
Loading
Loading
Loading
Loading
+6 −37
Original line number Diff line number Diff line
@@ -16,24 +16,21 @@

@file:OptIn(ExperimentalCoroutinesApi::class)

package com.android.systemui.scene.domain.interactor
package com.android.systemui.shade.domain.interactor

import android.platform.test.annotations.DisableFlags
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.fakeSceneDataSource
import com.android.systemui.shade.data.repository.fakeShadeRepository
import com.android.systemui.statusbar.notification.stack.ui.viewmodel.panelExpansionInteractor
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -48,7 +45,7 @@ import org.junit.runner.RunWith

@SmallTest
@RunWith(AndroidJUnit4::class)
class PanelExpansionInteractorTest : SysuiTestCase() {
class PanelExpansionInteractorImplTest : SysuiTestCase() {

    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope
@@ -60,9 +57,8 @@ class PanelExpansionInteractorTest : SysuiTestCase() {
            ObservableTransitionState.Idle(Scenes.Lockscreen)
        )
    private val fakeSceneDataSource = kosmos.fakeSceneDataSource
    private val fakeShadeRepository = kosmos.fakeShadeRepository

    private lateinit var underTest: PanelExpansionInteractor
    private lateinit var underTest: PanelExpansionInteractorImpl

    @Before
    fun setUp() {
@@ -73,7 +69,7 @@ class PanelExpansionInteractorTest : SysuiTestCase() {
    @EnableSceneContainer
    fun legacyPanelExpansion_whenIdle_whenLocked() =
        testScope.runTest {
            underTest = kosmos.panelExpansionInteractor
            underTest = kosmos.panelExpansionInteractorImpl
            setUnlocked(false)
            val panelExpansion by collectLastValue(underTest.legacyPanelExpansion)

@@ -97,7 +93,7 @@ class PanelExpansionInteractorTest : SysuiTestCase() {
    @EnableSceneContainer
    fun legacyPanelExpansion_whenIdle_whenUnlocked() =
        testScope.runTest {
            underTest = kosmos.panelExpansionInteractor
            underTest = kosmos.panelExpansionInteractorImpl
            setUnlocked(true)
            val panelExpansion by collectLastValue(underTest.legacyPanelExpansion)

@@ -116,33 +112,6 @@ class PanelExpansionInteractorTest : SysuiTestCase() {
            changeScene(Scenes.Communal) { assertThat(panelExpansion).isEqualTo(1f) }
            assertThat(panelExpansion).isEqualTo(1f)
        }

    @Test
    @DisableFlags(FLAG_SCENE_CONTAINER)
    fun legacyPanelExpansion_whenInLegacyMode() =
        testScope.runTest {
            underTest = kosmos.panelExpansionInteractor
            val leet = 0.1337f
            fakeShadeRepository.setLegacyShadeExpansion(leet)
            setUnlocked(false)
            val panelExpansion by collectLastValue(underTest.legacyPanelExpansion)

            changeScene(Scenes.Lockscreen)
            assertThat(panelExpansion).isEqualTo(leet)

            changeScene(Scenes.Bouncer)
            assertThat(panelExpansion).isEqualTo(leet)

            changeScene(Scenes.Shade)
            assertThat(panelExpansion).isEqualTo(leet)

            changeScene(Scenes.QuickSettings)
            assertThat(panelExpansion).isEqualTo(leet)

            changeScene(Scenes.Communal)
            assertThat(panelExpansion).isEqualTo(leet)
        }

    private fun TestScope.setUnlocked(isUnlocked: Boolean) {
        val isDeviceUnlocked by collectLastValue(deviceUnlockedInteractor.isDeviceUnlocked)
        deviceEntryRepository.setUnlocked(isUnlocked)
+6 −4
Original line number Diff line number Diff line
@@ -246,6 +246,7 @@ import javax.inject.Inject;
import javax.inject.Provider;

import kotlinx.coroutines.CoroutineDispatcher;
import kotlinx.coroutines.flow.Flow;

@SysUISingleton
public final class NotificationPanelViewController implements ShadeSurface, Dumpable {
@@ -1979,7 +1980,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        mNotificationStackScrollLayoutController.resetScrollPosition();
    }

    @Override
    public void collapse(boolean animate, boolean delayed, float speedUpFactor) {
        boolean waiting = false;
        if (animate && !isFullyCollapsed()) {
@@ -1997,7 +1997,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        }
    }

    @Override
    public void collapse(boolean delayed, float speedUpFactor) {
        if (!canBeCollapsed()) {
            return;
@@ -3999,12 +3998,16 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        return mExpandedFraction;
    }

    @Override
    public Flow<Float> getLegacyPanelExpansion() {
        return  mShadeRepository.getLegacyShadeExpansion();
    }

    @Override
    public boolean isFullyExpanded() {
        return mExpandedHeight >= getMaxPanelTransitionDistance();
    }

    @Override
    public boolean isShadeFullyExpanded() {
        if (mBarState == SHADE) {
            return isFullyExpanded();
@@ -4035,7 +4038,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump
        return !isFullyCollapsed() && !isTracking() && !isClosing();
    }

    @Override
    public void instantCollapse() {
        abortAnimations();
        setExpandedFraction(0f);
+7 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import com.android.systemui.shade.data.repository.PrivacyChipRepository
import com.android.systemui.shade.data.repository.PrivacyChipRepositoryImpl
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.data.repository.ShadeRepositoryImpl
import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorEmptyImpl
import com.android.systemui.shade.domain.interactor.ShadeBackActionInteractor
@@ -64,6 +65,12 @@ abstract class ShadeEmptyImplModule {
        sai: ShadeAnimationInteractorEmptyImpl
    ): ShadeAnimationInteractor

    @Binds
    @SysUISingleton
    abstract fun bindsPanelExpansionInteractor(
        sbai: ShadeViewControllerEmptyImpl
    ): PanelExpansionInteractor

    @Binds
    @SysUISingleton
    abstract fun bindsPrivacyChipRepository(impl: PrivacyChipRepositoryImpl): PrivacyChipRepository
+16 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import com.android.systemui.shade.data.repository.PrivacyChipRepositoryImpl
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.shade.data.repository.ShadeRepositoryImpl
import com.android.systemui.shade.domain.interactor.BaseShadeInteractor
import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor
import com.android.systemui.shade.domain.interactor.PanelExpansionInteractorImpl
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractor
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorLegacyImpl
import com.android.systemui.shade.domain.interactor.ShadeAnimationInteractorSceneContainerImpl
@@ -114,6 +116,20 @@ abstract class ShadeModule {
            }
        }

        @Provides
        @SysUISingleton
        fun providePanelExpansionInteractor(
            sceneContainerFlags: SceneContainerFlags,
            sceneContainerOn: Provider<PanelExpansionInteractorImpl>,
            sceneContainerOff: Provider<NotificationPanelViewController>
        ): PanelExpansionInteractor {
            return if (sceneContainerFlags.isEnabled()) {
                sceneContainerOn.get()
            } else {
                sceneContainerOff.get()
            }
        }

        @Provides
        @SysUISingleton
        fun provideQuickSettingsController(
+6 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package com.android.systemui.shade

import android.view.ViewPropertyAnimator
import com.android.systemui.shade.domain.interactor.PanelExpansionInteractor
import com.android.systemui.shade.domain.interactor.ShadeBackActionInteractor
import com.android.systemui.statusbar.GestureRecorder
import com.android.systemui.statusbar.phone.CentralSurfaces
@@ -26,7 +27,11 @@ import com.android.systemui.statusbar.policy.HeadsUpManager
 * this class. If any method in this class is needed outside of CentralSurfacesImpl, it must be
 * pulled up into ShadeViewController.
 */
interface ShadeSurface : ShadeViewController, ShadeBackActionInteractor, ShadeLockscreenInteractor {
interface ShadeSurface :
    ShadeViewController,
    ShadeBackActionInteractor,
    ShadeLockscreenInteractor,
    PanelExpansionInteractor {
    /** Initialize objects instead of injecting to avoid circular dependencies. */
    fun initDependencies(
        centralSurfaces: CentralSurfaces,
Loading