Loading core/java/android/app/ActivityManagerInternal.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -194,4 +194,9 @@ public abstract class ActivityManagerInternal { * @return {@code true} if system is ready, {@code false} otherwise. * @return {@code true} if system is ready, {@code false} otherwise. */ */ public abstract boolean isSystemReady(); public abstract boolean isSystemReady(); /** * Called when the trusted state of Keyguard has changed. */ public abstract void notifyKeyguardTrustedChanged(); } } core/java/android/view/WindowManagerPolicy.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -509,6 +509,11 @@ public interface WindowManagerPolicy { * Notifies window manager that {@link #isShowingDreamLw} has changed. * Notifies window manager that {@link #isShowingDreamLw} has changed. */ */ void notifyShowingDreamChanged(); void notifyShowingDreamChanged(); /** * Notifies window manager that {@link #isKeyguardTrustedLw} has changed. */ void notifyKeyguardTrustedChanged(); } } public interface PointerEventListener { public interface PointerEventListener { Loading services/core/java/com/android/server/am/ActivityManagerService.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -22157,6 +22157,15 @@ public class ActivityManagerService extends IActivityManager.Stub // no need to synchronize(this) just to read & return the value // no need to synchronize(this) just to read & return the value return mSystemReady; return mSystemReady; } } @Override public void notifyKeyguardTrustedChanged() { synchronized (ActivityManagerService.this) { if (mKeyguardController.isKeyguardShowing()) { mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); } } } } } private final class SleepTokenImpl extends SleepToken { private final class SleepTokenImpl extends SleepToken { services/core/java/com/android/server/am/ActivityStack.java +6 −3 Original line number Original line Diff line number Diff line Loading @@ -1806,8 +1806,9 @@ final class ActivityStack extends ConfigurationContainer { final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(); final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(); final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked(); final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked(); final boolean showWhenLocked = r.hasShowWhenLockedWindows(); final boolean showWhenLocked = r.hasShowWhenLockedWindows(); final boolean dismissKeyguard = r.hasDismissKeyguardWindows(); if (shouldBeVisible) { if (shouldBeVisible) { if (r.hasDismissKeyguardWindows() && mTopDismissingKeyguardActivity == null) { if (dismissKeyguard && mTopDismissingKeyguardActivity == null) { mTopDismissingKeyguardActivity = r; mTopDismissingKeyguardActivity = r; } } Loading @@ -1819,8 +1820,10 @@ final class ActivityStack extends ConfigurationContainer { } } if (keyguardShowing) { if (keyguardShowing) { // If keyguard is showing, nothing is visible. // If keyguard is showing, nothing is visible, except if we are able to dismiss Keyguard return false; // right away. return shouldBeVisible && mStackSupervisor.mKeyguardController .canShowActivityWhileKeyguardShowing(dismissKeyguard); } else if (keyguardLocked) { } else if (keyguardLocked) { // Show when locked windows above keyguard. // Show when locked windows above keyguard. Loading services/core/java/com/android/server/am/KeyguardController.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -154,6 +154,14 @@ class KeyguardController { } } } } /** * @return True if we may show an activity while Keyguard is showing because we are in the * process of dismissing it anyways, false otherwise. */ boolean canShowActivityWhileKeyguardShowing(boolean dismissKeyguard) { return dismissKeyguard && canDismissKeyguard(); } private void visibilitiesUpdated() { private void visibilitiesUpdated() { final boolean lastOccluded = mOccluded; final boolean lastOccluded = mOccluded; final ActivityRecord lastDismissingKeyguardActivity = mDismissingKeyguardActivity; final ActivityRecord lastDismissingKeyguardActivity = mDismissingKeyguardActivity; Loading Loading @@ -215,7 +223,6 @@ class KeyguardController { && mWindowManager.getPendingAppTransition() == TRANSIT_KEYGUARD_UNOCCLUDE) { && mWindowManager.getPendingAppTransition() == TRANSIT_KEYGUARD_UNOCCLUDE) { mWindowManager.prepareAppTransition(mBeforeUnoccludeTransit, mWindowManager.prepareAppTransition(mBeforeUnoccludeTransit, false /* alwaysKeepCurrent */, 0 /* flags */, true /* forceOverride */); false /* alwaysKeepCurrent */, 0 /* flags */, true /* forceOverride */); mKeyguardGoingAway = true; mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); mWindowManager.executeAppTransition(); mWindowManager.executeAppTransition(); } } Loading Loading
core/java/android/app/ActivityManagerInternal.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -194,4 +194,9 @@ public abstract class ActivityManagerInternal { * @return {@code true} if system is ready, {@code false} otherwise. * @return {@code true} if system is ready, {@code false} otherwise. */ */ public abstract boolean isSystemReady(); public abstract boolean isSystemReady(); /** * Called when the trusted state of Keyguard has changed. */ public abstract void notifyKeyguardTrustedChanged(); } }
core/java/android/view/WindowManagerPolicy.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -509,6 +509,11 @@ public interface WindowManagerPolicy { * Notifies window manager that {@link #isShowingDreamLw} has changed. * Notifies window manager that {@link #isShowingDreamLw} has changed. */ */ void notifyShowingDreamChanged(); void notifyShowingDreamChanged(); /** * Notifies window manager that {@link #isKeyguardTrustedLw} has changed. */ void notifyKeyguardTrustedChanged(); } } public interface PointerEventListener { public interface PointerEventListener { Loading
services/core/java/com/android/server/am/ActivityManagerService.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -22157,6 +22157,15 @@ public class ActivityManagerService extends IActivityManager.Stub // no need to synchronize(this) just to read & return the value // no need to synchronize(this) just to read & return the value return mSystemReady; return mSystemReady; } } @Override public void notifyKeyguardTrustedChanged() { synchronized (ActivityManagerService.this) { if (mKeyguardController.isKeyguardShowing()) { mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); } } } } } private final class SleepTokenImpl extends SleepToken { private final class SleepTokenImpl extends SleepToken {
services/core/java/com/android/server/am/ActivityStack.java +6 −3 Original line number Original line Diff line number Diff line Loading @@ -1806,8 +1806,9 @@ final class ActivityStack extends ConfigurationContainer { final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(); final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(); final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked(); final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked(); final boolean showWhenLocked = r.hasShowWhenLockedWindows(); final boolean showWhenLocked = r.hasShowWhenLockedWindows(); final boolean dismissKeyguard = r.hasDismissKeyguardWindows(); if (shouldBeVisible) { if (shouldBeVisible) { if (r.hasDismissKeyguardWindows() && mTopDismissingKeyguardActivity == null) { if (dismissKeyguard && mTopDismissingKeyguardActivity == null) { mTopDismissingKeyguardActivity = r; mTopDismissingKeyguardActivity = r; } } Loading @@ -1819,8 +1820,10 @@ final class ActivityStack extends ConfigurationContainer { } } if (keyguardShowing) { if (keyguardShowing) { // If keyguard is showing, nothing is visible. // If keyguard is showing, nothing is visible, except if we are able to dismiss Keyguard return false; // right away. return shouldBeVisible && mStackSupervisor.mKeyguardController .canShowActivityWhileKeyguardShowing(dismissKeyguard); } else if (keyguardLocked) { } else if (keyguardLocked) { // Show when locked windows above keyguard. // Show when locked windows above keyguard. Loading
services/core/java/com/android/server/am/KeyguardController.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -154,6 +154,14 @@ class KeyguardController { } } } } /** * @return True if we may show an activity while Keyguard is showing because we are in the * process of dismissing it anyways, false otherwise. */ boolean canShowActivityWhileKeyguardShowing(boolean dismissKeyguard) { return dismissKeyguard && canDismissKeyguard(); } private void visibilitiesUpdated() { private void visibilitiesUpdated() { final boolean lastOccluded = mOccluded; final boolean lastOccluded = mOccluded; final ActivityRecord lastDismissingKeyguardActivity = mDismissingKeyguardActivity; final ActivityRecord lastDismissingKeyguardActivity = mDismissingKeyguardActivity; Loading Loading @@ -215,7 +223,6 @@ class KeyguardController { && mWindowManager.getPendingAppTransition() == TRANSIT_KEYGUARD_UNOCCLUDE) { && mWindowManager.getPendingAppTransition() == TRANSIT_KEYGUARD_UNOCCLUDE) { mWindowManager.prepareAppTransition(mBeforeUnoccludeTransit, mWindowManager.prepareAppTransition(mBeforeUnoccludeTransit, false /* alwaysKeepCurrent */, 0 /* flags */, true /* forceOverride */); false /* alwaysKeepCurrent */, 0 /* flags */, true /* forceOverride */); mKeyguardGoingAway = true; mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); mWindowManager.executeAppTransition(); mWindowManager.executeAppTransition(); } } Loading