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

Commit cf0123b8 authored by Wei Sheng Shih's avatar Wei Sheng Shih Committed by Automerger Merge Worker
Browse files

Merge "Only wakeup device for dismiss keyguard when dream activity is on top."...

Merge "Only wakeup device for dismiss keyguard when dream activity is on top." into tm-dev am: aea2082a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17040108

Change-Id: Ib29bf1cdaefa214fec6e93183d83bc5c2830b5d6
parents 4f23fdb3 aea2082a
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -443,6 +443,13 @@ class KeyguardController {
                || !mWindowManager.isKeyguardSecure(mService.getCurrentUserId());
    }

    /**
     * @return Whether the dream activity is on top of default display.
     */
    boolean isShowingDream() {
        return getDisplayState(DEFAULT_DISPLAY).mShowingDream;
    }

    private void dismissMultiWindowModeForTaskIfNeeded(int displayId,
            @Nullable Task currentTaskControllingOcclusion) {
        // TODO(b/113840485): Handle docked stack for individual display.
@@ -501,6 +508,7 @@ class KeyguardController {
        private boolean mKeyguardGoingAway;
        private boolean mDismissalRequested;
        private boolean mOccluded;
        private boolean mShowingDream;

        private ActivityRecord mTopOccludesActivity;
        private ActivityRecord mDismissingKeyguardActivity;
@@ -536,6 +544,7 @@ class KeyguardController {

            mRequestDismissKeyguard = false;
            mOccluded = false;
            mShowingDream = false;

            mTopOccludesActivity = null;
            mDismissingKeyguardActivity = null;
@@ -570,9 +579,9 @@ class KeyguardController {
                }
            }

            final boolean dreaming = display.getDisplayPolicy().isShowingDreamLw() && (top != null
            mShowingDream = display.getDisplayPolicy().isShowingDreamLw() && (top != null
                    && top.getActivityType() == ACTIVITY_TYPE_DREAM);
            mOccluded = dreaming || occludedByActivity;
            mOccluded = mShowingDream || occludedByActivity;
            mRequestDismissKeyguard = lastDismissKeyguardActivity != mDismissingKeyguardActivity
                    && !mOccluded
                    && mDismissingKeyguardActivity != null
+2 −2
Original line number Diff line number Diff line
@@ -3233,8 +3233,8 @@ public class WindowManagerService extends IWindowManager.Stub
        if (!checkCallingPermission(permission.CONTROL_KEYGUARD, "dismissKeyguard")) {
            throw new SecurityException("Requires CONTROL_KEYGUARD permission");
        }
        if (mAtmService.isDreaming()) {
            mAtmService.mTaskSupervisor.wakeUp("dismissKeyguard");
        if (mAtmService.mKeyguardController.isShowingDream()) {
            mAtmService.mTaskSupervisor.wakeUp("leaveDream");
        }
        synchronized (mGlobalLock) {
            mPolicy.dismissKeyguardLw(callback, message);
+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ public class WindowManagerServiceTests extends WindowTestsBase {
    @Test
    public void testDismissKeyguardCanWakeUp() {
        doReturn(true).when(mWm).checkCallingPermission(anyString(), anyString());
        doReturn(true).when(mWm.mAtmService).isDreaming();
        doReturn(true).when(mWm.mAtmService.mKeyguardController).isShowingDream();
        doNothing().when(mWm.mAtmService.mTaskSupervisor).wakeUp(anyString());
        mWm.dismissKeyguard(null, "test-dismiss-keyguard");
        verify(mWm.mAtmService.mTaskSupervisor).wakeUp(anyString());