Loading services/core/java/com/android/server/wm/KeyguardController.java +11 −2 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -501,6 +508,7 @@ class KeyguardController { private boolean mKeyguardGoingAway; private boolean mDismissalRequested; private boolean mOccluded; private boolean mShowingDream; private ActivityRecord mTopOccludesActivity; private ActivityRecord mDismissingKeyguardActivity; Loading Loading @@ -536,6 +544,7 @@ class KeyguardController { mRequestDismissKeyguard = false; mOccluded = false; mShowingDream = false; mTopOccludesActivity = null; mDismissingKeyguardActivity = null; Loading Loading @@ -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 Loading services/core/java/com/android/server/wm/WindowManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()); Loading Loading
services/core/java/com/android/server/wm/KeyguardController.java +11 −2 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -501,6 +508,7 @@ class KeyguardController { private boolean mKeyguardGoingAway; private boolean mDismissalRequested; private boolean mOccluded; private boolean mShowingDream; private ActivityRecord mTopOccludesActivity; private ActivityRecord mDismissingKeyguardActivity; Loading Loading @@ -536,6 +544,7 @@ class KeyguardController { mRequestDismissKeyguard = false; mOccluded = false; mShowingDream = false; mTopOccludesActivity = null; mDismissingKeyguardActivity = null; Loading Loading @@ -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 Loading
services/core/java/com/android/server/wm/WindowManagerService.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading
services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()); Loading