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

Commit 623bd0e4 authored by Matt Pietal's avatar Matt Pietal
Browse files

Shutoff calls to KeyguardStatusViewController

This will help extraneous code from running, as well as ensure
the new viewmodels are fully in control.

As part of this, make sure everything reuses the same burn-in logic
across keyguard. Also make sure that we will never adjust things
into the top offset, and log if a bad calculation is determined.

Fixes: 327351128
Fixes: 325921793
Test: atest AodBurnInViewModelTest KeyguardIndicationAreaViewModelTest
Flag: ACONFIG com.android.systemui.migrate_clocks_to_blueprint
TEAMFOOD

Change-Id: Ie232fe5ab6f5c5a60520363d225a2e44990068f2
parent b30ba815
Loading
Loading
Loading
Loading
+0 −19
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.AuthController
import com.android.systemui.biometrics.data.repository.FakeFacePropertyRepository
import com.android.systemui.common.shared.model.Position
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.doze.DozeMachine
import com.android.systemui.doze.DozeTransitionCallback
@@ -151,24 +150,6 @@ class KeyguardRepositoryImplTest : SysuiTestCase() {
            assertThat(underTest.topClippingBounds.value).isEqualTo(500)
        }

    @Test
    fun clockPosition() =
        testScope.runTest {
            assertThat(underTest.clockPosition.value).isEqualTo(Position(0, 0))

            underTest.setClockPosition(0, 1)
            assertThat(underTest.clockPosition.value).isEqualTo(Position(0, 1))

            underTest.setClockPosition(1, 9)
            assertThat(underTest.clockPosition.value).isEqualTo(Position(1, 9))

            underTest.setClockPosition(1, 0)
            assertThat(underTest.clockPosition.value).isEqualTo(Position(1, 0))

            underTest.setClockPosition(3, 1)
            assertThat(underTest.clockPosition.value).isEqualTo(Position(3, 1))
        }

    @Test
    fun dozeTimeTick() =
        testScope.runTest {
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ class AodBurnInViewModelTest : SysuiTestCase() {
        mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)

        MockitoAnnotations.initMocks(this)
        whenever(burnInInteractor.keyguardBurnIn).thenReturn(burnInFlow)
        whenever(burnInInteractor.burnIn(anyInt(), anyInt())).thenReturn(burnInFlow)
        kosmos.burnInInteractor = burnInInteractor
        whenever(goneToAodTransitionViewModel.enterFromTopTranslationY(anyInt()))
            .thenReturn(emptyFlow())
+76 −57
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.keyguard.ui.viewmodel

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
@@ -24,9 +25,13 @@ import com.android.systemui.common.ui.domain.interactor.ConfigurationInteractor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.doze.util.BurnInHelperWrapper
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.domain.interactor.BurnInInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardBottomAreaInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractorFactory
import com.android.systemui.keyguard.shared.model.BurnInModel
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
@@ -36,18 +41,23 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
import org.mockito.MockitoAnnotations

@SmallTest
@RunWith(JUnit4::class)
@RunWith(AndroidJUnit4::class)
class KeyguardIndicationAreaViewModelTest : SysuiTestCase() {
    private val kosmos = testKosmos()
    private val testScope = kosmos.testScope

    @Mock private lateinit var burnInHelperWrapper: BurnInHelperWrapper
    @Mock private lateinit var shortcutsCombinedViewModel: KeyguardQuickAffordancesCombinedViewModel

    @Mock private lateinit var burnInInteractor: BurnInInteractor
    private val burnInFlow = MutableStateFlow(BurnInModel())

    private lateinit var bottomAreaInteractor: KeyguardBottomAreaInteractor
    private lateinit var underTest: KeyguardIndicationAreaViewModel
    private lateinit var repository: FakeKeyguardRepository

@@ -70,9 +80,11 @@ class KeyguardIndicationAreaViewModelTest : SysuiTestCase() {
        MockitoAnnotations.initMocks(this)

        mSetFlagsRule.disableFlags(AConfigFlags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR)
        mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)

        whenever(burnInHelperWrapper.burnInOffset(anyInt(), any()))
            .thenReturn(RETURNED_BURN_IN_OFFSET)
        whenever(burnInInteractor.burnIn(anyInt(), anyInt())).thenReturn(burnInFlow)

        val withDeps = KeyguardInteractorFactory.create()
        val keyguardInteractor = withDeps.keyguardInteractor
@@ -82,19 +94,22 @@ class KeyguardIndicationAreaViewModelTest : SysuiTestCase() {
        whenever(bottomAreaViewModel.startButton).thenReturn(startButtonFlow)
        whenever(bottomAreaViewModel.endButton).thenReturn(endButtonFlow)
        whenever(bottomAreaViewModel.alpha).thenReturn(alphaFlow)
        bottomAreaInteractor = KeyguardBottomAreaInteractor(repository = repository)
        underTest =
            KeyguardIndicationAreaViewModel(
                keyguardInteractor = keyguardInteractor,
                bottomAreaInteractor = KeyguardBottomAreaInteractor(repository = repository),
                bottomAreaInteractor = bottomAreaInteractor,
                keyguardBottomAreaViewModel = bottomAreaViewModel,
                burnInHelperWrapper = burnInHelperWrapper,
                burnInInteractor = burnInInteractor,
                shortcutsCombinedViewModel = shortcutsCombinedViewModel,
                configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()),
            )
    }

    @Test
    fun alpha() = runTest {
    fun alpha() =
        testScope.runTest {
            val value = collectLastValue(underTest.alpha)

            assertThat(value()).isEqualTo(1f)
@@ -109,7 +124,8 @@ class KeyguardIndicationAreaViewModelTest : SysuiTestCase() {
        }

    @Test
    fun isIndicationAreaPadded() = runTest {
    fun isIndicationAreaPadded() =
        testScope.runTest {
            repository.setKeyguardShowing(true)
            val value = collectLastValue(underTest.isIndicationAreaPadded)

@@ -125,23 +141,26 @@ class KeyguardIndicationAreaViewModelTest : SysuiTestCase() {
        }

    @Test
    fun indicationAreaTranslationX() = runTest {
    fun indicationAreaTranslationX() =
        testScope.runTest {
            val value = collectLastValue(underTest.indicationAreaTranslationX)

            assertThat(value()).isEqualTo(0f)
        repository.setClockPosition(100, 100)
            bottomAreaInteractor.setClockPosition(100, 100)
            assertThat(value()).isEqualTo(100f)
        repository.setClockPosition(200, 100)
            bottomAreaInteractor.setClockPosition(200, 100)
            assertThat(value()).isEqualTo(200f)
        repository.setClockPosition(200, 200)
            bottomAreaInteractor.setClockPosition(200, 200)
            assertThat(value()).isEqualTo(200f)
        repository.setClockPosition(300, 100)
            bottomAreaInteractor.setClockPosition(300, 100)
            assertThat(value()).isEqualTo(300f)
        }

    @Test
    fun indicationAreaTranslationY() = runTest {
        val value = collectLastValue(underTest.indicationAreaTranslationY(DEFAULT_BURN_IN_OFFSET))
    fun indicationAreaTranslationY() =
        testScope.runTest {
            val value =
                collectLastValue(underTest.indicationAreaTranslationY(DEFAULT_BURN_IN_OFFSET))

            // Negative 0 - apparently there's a difference in floating point arithmetic - FML
            assertThat(value()).isEqualTo(-0f)
+1 −0
Original line number Diff line number Diff line
@@ -223,6 +223,7 @@
    <item type="id" name="lock_icon" />
    <item type="id" name="lock_icon_bg" />
    <item type="id" name="burn_in_layer" />
    <item type="id" name="burn_in_layer_empty_view" />
    <item type="id" name="communal_tutorial_indicator" />
    <item type="id" name="nssl_placeholder_barrier_bottom" />
    <item type="id" name="ambient_indication_container" />
+2 −17
Original line number Diff line number Diff line
@@ -53,9 +53,6 @@ import com.android.systemui.Dumpable;
import com.android.systemui.animation.ViewHierarchyAnimator;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.shared.model.TransitionState;
import com.android.systemui.keyguard.shared.model.TransitionStep;
import com.android.systemui.plugins.clocks.ClockController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.power.shared.model.ScreenPowerState;
@@ -104,7 +101,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
    private final Rect mClipBounds = new Rect();
    private final KeyguardInteractor mKeyguardInteractor;
    private final PowerInteractor mPowerInteractor;
    private final KeyguardTransitionInteractor mKeyguardTransitionInteractor;
    private final DozeParameters mDozeParameters;

    private View mStatusArea = null;
@@ -112,7 +108,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV

    private Boolean mSplitShadeEnabled = false;
    private Boolean mStatusViewCentered = true;
    private boolean mGoneToAodTransitionRunning = false;
    private DumpManager mDumpManager;

    private final TransitionListenerAdapter mKeyguardStatusAlignmentTransitionListener =
@@ -181,7 +176,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
            KeyguardLogger logger,
            InteractionJankMonitor interactionJankMonitor,
            KeyguardInteractor keyguardInteractor,
            KeyguardTransitionInteractor keyguardTransitionInteractor,
            DumpManager dumpManager,
            PowerInteractor powerInteractor) {
        super(keyguardStatusView);
@@ -197,7 +191,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
        mDumpManager = dumpManager;
        mKeyguardInteractor = keyguardInteractor;
        mPowerInteractor = powerInteractor;
        mKeyguardTransitionInteractor = keyguardTransitionInteractor;
    }

    @Override
@@ -232,6 +225,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
        mDumpManager.registerDumpable(getInstanceName(), this);
        if (migrateClocksToBlueprint()) {
            startCoroutines(EmptyCoroutineContext.INSTANCE);
            mView.setVisibility(View.GONE);
        }
    }

@@ -247,15 +241,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
                        dozeTimeTick();
                    }
                }, context);

        collectFlow(mView, mKeyguardTransitionInteractor.getGoneToAodTransition(),
                (TransitionStep step) -> {
                    if (step.getTransitionState() == TransitionState.RUNNING) {
                        mGoneToAodTransitionRunning = true;
                    } else {
                        mGoneToAodTransitionRunning = false;
                    }
                }, context);
    }

    public KeyguardStatusView getView() {
@@ -326,7 +311,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
     * Set keyguard status view alpha.
     */
    public void setAlpha(float alpha) {
        if (!mKeyguardVisibilityHelper.isVisibilityAnimating() && !mGoneToAodTransitionRunning) {
        if (!mKeyguardVisibilityHelper.isVisibilityAnimating()) {
            mView.setAlpha(alpha);
        }
    }
Loading