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

Commit 4a3d6227 authored by Robin Lee's avatar Robin Lee Committed by Android (Google) Code Review
Browse files

Merge "Add test for KeyguardController removing AOD during unlock" into main

parents 0e0e1d3e de3e8d9a
Loading
Loading
Loading
Loading
+60 −8
Original line number Original line Diff line number Diff line
@@ -164,6 +164,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.TimeoutException;
import java.util.function.BooleanSupplier;


/**
/**
 * Tests for the {@link DisplayContent} class.
 * Tests for the {@link DisplayContent} class.
@@ -2674,16 +2675,67 @@ public class DisplayContentTests extends WindowTestsBase {
    public void testKeyguardGoingAwayWhileAodShown() {
    public void testKeyguardGoingAwayWhileAodShown() {
        mDisplayContent.getDisplayPolicy().setAwake(true);
        mDisplayContent.getDisplayPolicy().setAwake(true);


        final WindowState appWin = newWindowBuilder("appWin", TYPE_APPLICATION).setDisplay(
        final KeyguardController keyguard = mAtm.mKeyguardController;
                mDisplayContent).build();
        final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build();
        final ActivityRecord activity = appWin.mActivityRecord;
        final int displayId = mDisplayContent.getDisplayId();

        final BooleanSupplier keyguardShowing = () -> keyguard.isKeyguardShowing(displayId);
        final BooleanSupplier keyguardGoingAway = () -> keyguard.isKeyguardGoingAway(displayId);
        final BooleanSupplier appVisible = activity::isVisibleRequested;

        // Begin locked and in AOD
        keyguard.setKeyguardShown(displayId, true /* keyguard */, true /* aod */);
        assertFalse(keyguardGoingAway.getAsBoolean());
        assertFalse(appVisible.getAsBoolean());

        // Start unlocking from AOD.
        keyguard.keyguardGoingAway(displayId, 0x0 /* flags */);
        assertTrue(keyguardGoingAway.getAsBoolean());
        assertTrue(appVisible.getAsBoolean());


        mAtm.mKeyguardController.setKeyguardShown(appWin.getDisplayId(), true /* keyguardShowing */,
        // Clear AOD. This does *not* clear the going-away status.
                true /* aodShowing */);
        keyguard.setKeyguardShown(displayId, true /* keyguard */, false /* aod */);
        assertFalse(activity.isVisibleRequested());
        assertTrue(keyguardGoingAway.getAsBoolean());
        assertTrue(appVisible.getAsBoolean());

        // Finish unlock
        keyguard.setKeyguardShown(displayId, false /* keyguard */, false /* aod */);
        assertFalse(keyguardGoingAway.getAsBoolean());
        assertTrue(appVisible.getAsBoolean());
    }

    @Test
    public void testKeyguardGoingAwayCanceledWhileAodShown() {
        mDisplayContent.getDisplayPolicy().setAwake(true);


        mAtm.mKeyguardController.keyguardGoingAway(appWin.getDisplayId(), 0 /* flags */);
        final KeyguardController keyguard = mAtm.mKeyguardController;
        assertTrue(activity.isVisibleRequested());
        final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true).build();
        final int displayId = mDisplayContent.getDisplayId();

        final BooleanSupplier keyguardShowing = () -> keyguard.isKeyguardShowing(displayId);
        final BooleanSupplier keyguardGoingAway = () -> keyguard.isKeyguardGoingAway(displayId);
        final BooleanSupplier appVisible = activity::isVisibleRequested;

        // Begin locked and in AOD
        keyguard.setKeyguardShown(displayId, true /* keyguard */, true /* aod */);
        assertFalse(keyguardGoingAway.getAsBoolean());
        assertFalse(appVisible.getAsBoolean());

        // Start unlocking from AOD.
        keyguard.keyguardGoingAway(displayId, 0x0 /* flags */);
        assertTrue(keyguardGoingAway.getAsBoolean());
        assertTrue(appVisible.getAsBoolean());

        // Clear AOD. This does *not* clear the going-away status.
        keyguard.setKeyguardShown(displayId, true /* keyguard */, false /* aod */);
        assertTrue(keyguardGoingAway.getAsBoolean());
        assertTrue(appVisible.getAsBoolean());

        // Same API call a second time cancels the unlock, because AOD isn't changing.
        keyguard.setKeyguardShown(displayId, true /* keyguard */, false /* aod */);
        assertTrue(keyguardShowing.getAsBoolean());
        assertFalse(keyguardGoingAway.getAsBoolean());
        assertFalse(appVisible.getAsBoolean());
    }
    }


    @Test
    @Test