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

Commit b1c191f4 authored by Beverly's avatar Beverly
Browse files

Don't show the keyguard on fold if the device isn't provisioned

Test: manual, atest KeyguardVieMediatorTest
Fixes: 321977430
Flag: ACONFIG com.android.internal.foldables.flags.fold_grace_period_enabled STAGING

Change-Id: I001c855d778c97a265af98fe59fa1da486936a3f
parent b5fe0125
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -2186,6 +2186,10 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
     */
     */
    public void showDismissibleKeyguard() {
    public void showDismissibleKeyguard() {
        if (mFoldGracePeriodProvider.isEnabled()) {
        if (mFoldGracePeriodProvider.isEnabled()) {
            if (!mUpdateMonitor.isDeviceProvisioned()) {
                Log.d(TAG, "Device not provisioned, so ignore request to show keyguard.");
                return;
            }
            Bundle showKeyguardUnlocked = new Bundle();
            Bundle showKeyguardUnlocked = new Bundle();
            showKeyguardUnlocked.putBoolean(OPTION_SHOW_DISMISSIBLE, true);
            showKeyguardUnlocked.putBoolean(OPTION_SHOW_DISMISSIBLE, true);
            showKeyguard(showKeyguardUnlocked);
            showKeyguard(showKeyguardUnlocked);
+29 −0
Original line number Original line Diff line number Diff line
@@ -334,6 +334,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
                mock(FoldGracePeriodProvider.class);
                mock(FoldGracePeriodProvider.class);
        mViewMediator.mFoldGracePeriodProvider = mockedFoldGracePeriodProvider;
        mViewMediator.mFoldGracePeriodProvider = mockedFoldGracePeriodProvider;
        when(mockedFoldGracePeriodProvider.isEnabled()).thenReturn(true);
        when(mockedFoldGracePeriodProvider.isEnabled()).thenReturn(true);
        when(mUpdateMonitor.isDeviceProvisioned()).thenReturn(true);


        // GIVEN keyguard is not enabled and isn't showing
        // GIVEN keyguard is not enabled and isn't showing
        mViewMediator.onSystemReady();
        mViewMediator.onSystemReady();
@@ -350,6 +351,33 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
        assertTrue(mViewMediator.isShowingAndNotOccluded());
        assertTrue(mViewMediator.isShowingAndNotOccluded());
    }
    }


    @Test
    @TestableLooper.RunWithLooper(setAsMainLooper = true)
    public void doNotShowKeyguard_deviceNotProvisioned() {
        // GIVEN feature is enabled
        final FoldGracePeriodProvider mockedFoldGracePeriodProvider =
                mock(FoldGracePeriodProvider.class);
        mViewMediator.mFoldGracePeriodProvider = mockedFoldGracePeriodProvider;
        when(mockedFoldGracePeriodProvider.isEnabled()).thenReturn(true);

        // GIVEN keyguard is not enabled and isn't showing
        mViewMediator.onSystemReady();
        mViewMediator.setKeyguardEnabled(false);
        TestableLooper.get(this).processAllMessages();
        captureKeyguardUpdateMonitorCallback();
        assertFalse(mViewMediator.isShowingAndNotOccluded());

        // WHEN device is NOT provisioned
        when(mUpdateMonitor.isDeviceProvisioned()).thenReturn(false);

        // WHEN showKeyguard is requested
        mViewMediator.showDismissibleKeyguard();

        // THEN keyguard is NOT shown
        TestableLooper.get(this).processAllMessages();
        assertFalse(mViewMediator.isShowingAndNotOccluded());
    }

    @Test
    @Test
    @TestableLooper.RunWithLooper(setAsMainLooper = true)
    @TestableLooper.RunWithLooper(setAsMainLooper = true)
    public void showKeyguardAfterKeyguardNotEnabled_featureNotEnabled() {
    public void showKeyguardAfterKeyguardNotEnabled_featureNotEnabled() {
@@ -358,6 +386,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase {
                mock(FoldGracePeriodProvider.class);
                mock(FoldGracePeriodProvider.class);
        mViewMediator.mFoldGracePeriodProvider = mockedFoldGracePeriodProvider;
        mViewMediator.mFoldGracePeriodProvider = mockedFoldGracePeriodProvider;
        when(mockedFoldGracePeriodProvider.isEnabled()).thenReturn(false);
        when(mockedFoldGracePeriodProvider.isEnabled()).thenReturn(false);
        when(mUpdateMonitor.isDeviceProvisioned()).thenReturn(true);


        // GIVEN keyguard is not enabled and isn't showing
        // GIVEN keyguard is not enabled and isn't showing
        mViewMediator.onSystemReady();
        mViewMediator.onSystemReady();