Loading core/java/android/app/IActivityManager.aidl +4 −2 Original line number Diff line number Diff line Loading @@ -322,12 +322,14 @@ interface IActivityManager { /** * Informs ActivityManagerService that the keyguard is showing. * * @param showing True if the keyguard is showing, false otherwise. * @param showingKeyguard True if the keyguard is showing, false otherwise. * @param showingAod True if AOD is showing, false otherwise. * @param secondaryDisplayShowing The displayId of the secondary display on which the keyguard * is showing, or INVALID_DISPLAY if there is no such display. Only meaningful if * showing is true. */ void setLockScreenShown(boolean showing, int secondaryDisplayShowing); void setLockScreenShown(boolean showingKeyguard, boolean showingAod, int secondaryDisplayShowing); boolean finishActivityAffinity(in IBinder token); // This is not public because you need to be very careful in how you // manage your activity to make sure it is always the uid you expect. Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +27 −16 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import android.app.ActivityManager; import android.app.AlarmManager; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.StatusBarManager; import android.app.trust.TrustManager; Loading Loading @@ -235,6 +234,9 @@ public class KeyguardViewMediator extends SystemUI { // answer whether the input should be restricted) private boolean mShowing; // AOD is enabled and status bar is in AOD state. private boolean mAodShowing; // display id of the secondary display on which we have put a keyguard window private int mSecondaryDisplayShowing = INVALID_DISPLAY; Loading Loading @@ -664,7 +666,7 @@ public class KeyguardViewMediator extends SystemUI { @Override public void onSecondaryDisplayShowingChanged(int displayId) { synchronized (KeyguardViewMediator.this) { setShowingLocked(mShowing, displayId, false); setShowingLocked(mShowing, mAodShowing, displayId, false); } } }; Loading Loading @@ -707,10 +709,10 @@ public class KeyguardViewMediator extends SystemUI { setShowingLocked(!shouldWaitForProvisioning() && !mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser()), mSecondaryDisplayShowing, true /* forceCallbacks */); mAodShowing, mSecondaryDisplayShowing, true /* forceCallbacks */); } else { // The system's keyguard is disabled or missing. setShowingLocked(false, mSecondaryDisplayShowing, true); setShowingLocked(false, mAodShowing, mSecondaryDisplayShowing, true); } mStatusBarKeyguardViewManager = Loading Loading @@ -1311,7 +1313,7 @@ public class KeyguardViewMediator extends SystemUI { if (mLockPatternUtils.checkVoldPassword(KeyguardUpdateMonitor.getCurrentUser())) { if (DEBUG) Log.d(TAG, "Not showing lock screen since just decrypted"); // Without this, settings is not enabled until the lock screen first appears setShowingLocked(false); setShowingLocked(false, mAodShowing); hideLocked(); return; } Loading Loading @@ -1713,10 +1715,12 @@ public class KeyguardViewMediator extends SystemUI { playSound(mTrustedSoundId); } private void updateActivityLockScreenState(boolean showing, int secondaryDisplayShowing) { private void updateActivityLockScreenState(boolean showing, boolean aodShowing, int secondaryDisplayShowing) { mUiOffloadThread.submit(() -> { try { ActivityManager.getService().setLockScreenShown(showing, secondaryDisplayShowing); ActivityManager.getService().setLockScreenShown(showing, aodShowing, secondaryDisplayShowing); } catch (RemoteException e) { } }); Loading @@ -1740,7 +1744,7 @@ public class KeyguardViewMediator extends SystemUI { if (DEBUG) Log.d(TAG, "handleShow"); } setShowingLocked(true); setShowingLocked(true, mAodShowing); mStatusBarKeyguardViewManager.show(options); mHiding = false; mWakeAndUnlocking = false; Loading Loading @@ -1849,7 +1853,7 @@ public class KeyguardViewMediator extends SystemUI { } mWakeAndUnlocking = false; setShowingLocked(false); setShowingLocked(false, mAodShowing); mDismissCallbackRegistry.notifyDismissSucceeded(); mStatusBarKeyguardViewManager.hide(startTime, fadeoutDuration); resetKeyguardDonePendingLocked(); Loading Loading @@ -1909,7 +1913,7 @@ public class KeyguardViewMediator extends SystemUI { Trace.beginSection("KeyguardViewMediator#handleVerifyUnlock"); synchronized (KeyguardViewMediator.this) { if (DEBUG) Log.d(TAG, "handleVerifyUnlock"); setShowingLocked(true); setShowingLocked(true, mAodShowing); mStatusBarKeyguardViewManager.dismissAndCollapse(); } Trace.endSection(); Loading Loading @@ -2064,6 +2068,10 @@ public class KeyguardViewMediator extends SystemUI { pw.print(" mDrawnCallback: "); pw.println(mDrawnCallback); } public void setAodShowing(boolean aodShowing) { setShowingLocked(mShowing, aodShowing); } private static class StartKeyguardExitAnimParams { long startTime; Loading @@ -2075,20 +2083,23 @@ public class KeyguardViewMediator extends SystemUI { } } private void setShowingLocked(boolean showing) { setShowingLocked(showing, mSecondaryDisplayShowing, false /* forceCallbacks */); private void setShowingLocked(boolean showing, boolean aodShowing) { setShowingLocked(showing, aodShowing, mSecondaryDisplayShowing, false /* forceCallbacks */); } private void setShowingLocked( boolean showing, int secondaryDisplayShowing, boolean forceCallbacks) { final boolean notifyDefaultDisplayCallbacks = showing != mShowing || forceCallbacks; private void setShowingLocked(boolean showing, boolean aodShowing, int secondaryDisplayShowing, boolean forceCallbacks) { final boolean notifyDefaultDisplayCallbacks = showing != mShowing || aodShowing != mAodShowing || forceCallbacks; if (notifyDefaultDisplayCallbacks || secondaryDisplayShowing != mSecondaryDisplayShowing) { mShowing = showing; mAodShowing = aodShowing; mSecondaryDisplayShowing = secondaryDisplayShowing; if (notifyDefaultDisplayCallbacks) { notifyDefaultDisplayCallbacks(showing); } updateActivityLockScreenState(showing, secondaryDisplayShowing); updateActivityLockScreenState(showing, aodShowing, secondaryDisplayShowing); } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +4 −0 Original line number Diff line number Diff line Loading @@ -408,6 +408,7 @@ public class StatusBar extends SystemUI implements DemoMode, protected NotificationEntryManager mEntryManager; protected NotificationViewHierarchyManager mViewHierarchyManager; protected AppOpsListener mAppOpsListener; protected KeyguardViewMediator mKeyguardViewMediator; private ZenModeController mZenController; /** Loading Loading @@ -632,6 +633,7 @@ public class StatusBar extends SystemUI implements DemoMode, mAppOpsListener = Dependency.get(AppOpsListener.class); mAppOpsListener.setUpWithPresenter(this, mEntryManager); mZenController = Dependency.get(ZenModeController.class); mKeyguardViewMediator = getComponent(KeyguardViewMediator.class); mColorExtractor = Dependency.get(SysuiColorExtractor.class); mColorExtractor.addOnColorsChangedListener(this); Loading Loading @@ -4628,6 +4630,7 @@ public class StatusBar extends SystemUI implements DemoMode, boolean dozing = mDozingRequested && mState == StatusBarState.KEYGUARD || mFingerprintUnlockController.getMode() == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING; final boolean alwaysOn = DozeParameters.getInstance(mContext).getAlwaysOn(); // When in wake-and-unlock we may not have received a change to mState // but we still should not be dozing, manually set to false. if (mFingerprintUnlockController.getMode() == Loading @@ -4635,6 +4638,7 @@ public class StatusBar extends SystemUI implements DemoMode, dozing = false; } mDozing = dozing; mKeyguardViewMediator.setAodShowing(mDozing && alwaysOn); mStatusBarWindowManager.setDozing(mDozing); mStatusBarKeyguardViewManager.setDozing(mDozing); if (mAmbientIndicationContainer instanceof DozeReceiver) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java +3 −1 Original line number Diff line number Diff line Loading @@ -143,7 +143,9 @@ public class StatusBarWindowManager implements RemoteInputController.Callback, D final boolean scrimsOccludingWallpaper = state.scrimsVisibility == ScrimController.VISIBILITY_FULLY_OPAQUE; if (state.keyguardShowing && !state.backdropShowing && !scrimsOccludingWallpaper) { final boolean keyguardOrAod = state.keyguardShowing || (state.dozing && mDozeParameters.getAlwaysOn()); if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) { mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; } else { mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import com.android.systemui.ForegroundServiceController; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.assist.AssistManager; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.statusbar.ActivatableNotificationView; Loading Loading @@ -132,6 +133,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private NotificationViewHierarchyManager mViewHierarchyManager; @Mock private VisualStabilityManager mVisualStabilityManager; @Mock private NotificationListener mNotificationListener; @Mock private KeyguardViewMediator mKeyguardViewMediator; private TestableStatusBar mStatusBar; private FakeMetricsLogger mMetricsLogger; Loading Loading @@ -200,7 +202,7 @@ public class StatusBarTest extends SysuiTestCase { mPowerManager, mNotificationPanelView, mBarService, mNotificationListener, mNotificationLogger, mVisualStabilityManager, mViewHierarchyManager, mEntryManager, mScrimController, mFingerprintUnlockController, mock(ActivityLaunchAnimator.class)); mock(ActivityLaunchAnimator.class), mKeyguardViewMediator); mStatusBar.mContext = mContext; mStatusBar.mComponents = mContext.getComponents(); mEntryManager.setUpForTest(mStatusBar, mStackScroller, mStatusBar, mHeadsUpManager, Loading Loading @@ -638,7 +640,7 @@ public class StatusBarTest extends SysuiTestCase { NotificationViewHierarchyManager viewHierarchyManager, TestableNotificationEntryManager entryManager, ScrimController scrimController, FingerprintUnlockController fingerprintUnlockController, ActivityLaunchAnimator launchAnimator) { ActivityLaunchAnimator launchAnimator, KeyguardViewMediator keyguardViewMediator) { mStatusBarKeyguardViewManager = man; mUnlockMethodCache = unlock; mKeyguardIndicationController = key; Loading @@ -656,6 +658,7 @@ public class StatusBarTest extends SysuiTestCase { mScrimController = scrimController; mFingerprintUnlockController = fingerprintUnlockController; mActivityLaunchAnimator = launchAnimator; mKeyguardViewMediator = keyguardViewMediator; mClearAllEnabled = true; } Loading Loading
core/java/android/app/IActivityManager.aidl +4 −2 Original line number Diff line number Diff line Loading @@ -322,12 +322,14 @@ interface IActivityManager { /** * Informs ActivityManagerService that the keyguard is showing. * * @param showing True if the keyguard is showing, false otherwise. * @param showingKeyguard True if the keyguard is showing, false otherwise. * @param showingAod True if AOD is showing, false otherwise. * @param secondaryDisplayShowing The displayId of the secondary display on which the keyguard * is showing, or INVALID_DISPLAY if there is no such display. Only meaningful if * showing is true. */ void setLockScreenShown(boolean showing, int secondaryDisplayShowing); void setLockScreenShown(boolean showingKeyguard, boolean showingAod, int secondaryDisplayShowing); boolean finishActivityAffinity(in IBinder token); // This is not public because you need to be very careful in how you // manage your activity to make sure it is always the uid you expect. Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +27 −16 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STR import android.app.ActivityManager; import android.app.AlarmManager; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.StatusBarManager; import android.app.trust.TrustManager; Loading Loading @@ -235,6 +234,9 @@ public class KeyguardViewMediator extends SystemUI { // answer whether the input should be restricted) private boolean mShowing; // AOD is enabled and status bar is in AOD state. private boolean mAodShowing; // display id of the secondary display on which we have put a keyguard window private int mSecondaryDisplayShowing = INVALID_DISPLAY; Loading Loading @@ -664,7 +666,7 @@ public class KeyguardViewMediator extends SystemUI { @Override public void onSecondaryDisplayShowingChanged(int displayId) { synchronized (KeyguardViewMediator.this) { setShowingLocked(mShowing, displayId, false); setShowingLocked(mShowing, mAodShowing, displayId, false); } } }; Loading Loading @@ -707,10 +709,10 @@ public class KeyguardViewMediator extends SystemUI { setShowingLocked(!shouldWaitForProvisioning() && !mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser()), mSecondaryDisplayShowing, true /* forceCallbacks */); mAodShowing, mSecondaryDisplayShowing, true /* forceCallbacks */); } else { // The system's keyguard is disabled or missing. setShowingLocked(false, mSecondaryDisplayShowing, true); setShowingLocked(false, mAodShowing, mSecondaryDisplayShowing, true); } mStatusBarKeyguardViewManager = Loading Loading @@ -1311,7 +1313,7 @@ public class KeyguardViewMediator extends SystemUI { if (mLockPatternUtils.checkVoldPassword(KeyguardUpdateMonitor.getCurrentUser())) { if (DEBUG) Log.d(TAG, "Not showing lock screen since just decrypted"); // Without this, settings is not enabled until the lock screen first appears setShowingLocked(false); setShowingLocked(false, mAodShowing); hideLocked(); return; } Loading Loading @@ -1713,10 +1715,12 @@ public class KeyguardViewMediator extends SystemUI { playSound(mTrustedSoundId); } private void updateActivityLockScreenState(boolean showing, int secondaryDisplayShowing) { private void updateActivityLockScreenState(boolean showing, boolean aodShowing, int secondaryDisplayShowing) { mUiOffloadThread.submit(() -> { try { ActivityManager.getService().setLockScreenShown(showing, secondaryDisplayShowing); ActivityManager.getService().setLockScreenShown(showing, aodShowing, secondaryDisplayShowing); } catch (RemoteException e) { } }); Loading @@ -1740,7 +1744,7 @@ public class KeyguardViewMediator extends SystemUI { if (DEBUG) Log.d(TAG, "handleShow"); } setShowingLocked(true); setShowingLocked(true, mAodShowing); mStatusBarKeyguardViewManager.show(options); mHiding = false; mWakeAndUnlocking = false; Loading Loading @@ -1849,7 +1853,7 @@ public class KeyguardViewMediator extends SystemUI { } mWakeAndUnlocking = false; setShowingLocked(false); setShowingLocked(false, mAodShowing); mDismissCallbackRegistry.notifyDismissSucceeded(); mStatusBarKeyguardViewManager.hide(startTime, fadeoutDuration); resetKeyguardDonePendingLocked(); Loading Loading @@ -1909,7 +1913,7 @@ public class KeyguardViewMediator extends SystemUI { Trace.beginSection("KeyguardViewMediator#handleVerifyUnlock"); synchronized (KeyguardViewMediator.this) { if (DEBUG) Log.d(TAG, "handleVerifyUnlock"); setShowingLocked(true); setShowingLocked(true, mAodShowing); mStatusBarKeyguardViewManager.dismissAndCollapse(); } Trace.endSection(); Loading Loading @@ -2064,6 +2068,10 @@ public class KeyguardViewMediator extends SystemUI { pw.print(" mDrawnCallback: "); pw.println(mDrawnCallback); } public void setAodShowing(boolean aodShowing) { setShowingLocked(mShowing, aodShowing); } private static class StartKeyguardExitAnimParams { long startTime; Loading @@ -2075,20 +2083,23 @@ public class KeyguardViewMediator extends SystemUI { } } private void setShowingLocked(boolean showing) { setShowingLocked(showing, mSecondaryDisplayShowing, false /* forceCallbacks */); private void setShowingLocked(boolean showing, boolean aodShowing) { setShowingLocked(showing, aodShowing, mSecondaryDisplayShowing, false /* forceCallbacks */); } private void setShowingLocked( boolean showing, int secondaryDisplayShowing, boolean forceCallbacks) { final boolean notifyDefaultDisplayCallbacks = showing != mShowing || forceCallbacks; private void setShowingLocked(boolean showing, boolean aodShowing, int secondaryDisplayShowing, boolean forceCallbacks) { final boolean notifyDefaultDisplayCallbacks = showing != mShowing || aodShowing != mAodShowing || forceCallbacks; if (notifyDefaultDisplayCallbacks || secondaryDisplayShowing != mSecondaryDisplayShowing) { mShowing = showing; mAodShowing = aodShowing; mSecondaryDisplayShowing = secondaryDisplayShowing; if (notifyDefaultDisplayCallbacks) { notifyDefaultDisplayCallbacks(showing); } updateActivityLockScreenState(showing, secondaryDisplayShowing); updateActivityLockScreenState(showing, aodShowing, secondaryDisplayShowing); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +4 −0 Original line number Diff line number Diff line Loading @@ -408,6 +408,7 @@ public class StatusBar extends SystemUI implements DemoMode, protected NotificationEntryManager mEntryManager; protected NotificationViewHierarchyManager mViewHierarchyManager; protected AppOpsListener mAppOpsListener; protected KeyguardViewMediator mKeyguardViewMediator; private ZenModeController mZenController; /** Loading Loading @@ -632,6 +633,7 @@ public class StatusBar extends SystemUI implements DemoMode, mAppOpsListener = Dependency.get(AppOpsListener.class); mAppOpsListener.setUpWithPresenter(this, mEntryManager); mZenController = Dependency.get(ZenModeController.class); mKeyguardViewMediator = getComponent(KeyguardViewMediator.class); mColorExtractor = Dependency.get(SysuiColorExtractor.class); mColorExtractor.addOnColorsChangedListener(this); Loading Loading @@ -4628,6 +4630,7 @@ public class StatusBar extends SystemUI implements DemoMode, boolean dozing = mDozingRequested && mState == StatusBarState.KEYGUARD || mFingerprintUnlockController.getMode() == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING; final boolean alwaysOn = DozeParameters.getInstance(mContext).getAlwaysOn(); // When in wake-and-unlock we may not have received a change to mState // but we still should not be dozing, manually set to false. if (mFingerprintUnlockController.getMode() == Loading @@ -4635,6 +4638,7 @@ public class StatusBar extends SystemUI implements DemoMode, dozing = false; } mDozing = dozing; mKeyguardViewMediator.setAodShowing(mDozing && alwaysOn); mStatusBarWindowManager.setDozing(mDozing); mStatusBarKeyguardViewManager.setDozing(mDozing); if (mAmbientIndicationContainer instanceof DozeReceiver) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java +3 −1 Original line number Diff line number Diff line Loading @@ -143,7 +143,9 @@ public class StatusBarWindowManager implements RemoteInputController.Callback, D final boolean scrimsOccludingWallpaper = state.scrimsVisibility == ScrimController.VISIBILITY_FULLY_OPAQUE; if (state.keyguardShowing && !state.backdropShowing && !scrimsOccludingWallpaper) { final boolean keyguardOrAod = state.keyguardShowing || (state.dozing && mDozeParameters.getAlwaysOn()); if (keyguardOrAod && !state.backdropShowing && !scrimsOccludingWallpaper) { mLpChanged.flags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; } else { mLpChanged.flags &= ~WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +5 −2 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import com.android.systemui.ForegroundServiceController; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.assist.AssistManager; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.statusbar.ActivatableNotificationView; Loading Loading @@ -132,6 +133,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private NotificationViewHierarchyManager mViewHierarchyManager; @Mock private VisualStabilityManager mVisualStabilityManager; @Mock private NotificationListener mNotificationListener; @Mock private KeyguardViewMediator mKeyguardViewMediator; private TestableStatusBar mStatusBar; private FakeMetricsLogger mMetricsLogger; Loading Loading @@ -200,7 +202,7 @@ public class StatusBarTest extends SysuiTestCase { mPowerManager, mNotificationPanelView, mBarService, mNotificationListener, mNotificationLogger, mVisualStabilityManager, mViewHierarchyManager, mEntryManager, mScrimController, mFingerprintUnlockController, mock(ActivityLaunchAnimator.class)); mock(ActivityLaunchAnimator.class), mKeyguardViewMediator); mStatusBar.mContext = mContext; mStatusBar.mComponents = mContext.getComponents(); mEntryManager.setUpForTest(mStatusBar, mStackScroller, mStatusBar, mHeadsUpManager, Loading Loading @@ -638,7 +640,7 @@ public class StatusBarTest extends SysuiTestCase { NotificationViewHierarchyManager viewHierarchyManager, TestableNotificationEntryManager entryManager, ScrimController scrimController, FingerprintUnlockController fingerprintUnlockController, ActivityLaunchAnimator launchAnimator) { ActivityLaunchAnimator launchAnimator, KeyguardViewMediator keyguardViewMediator) { mStatusBarKeyguardViewManager = man; mUnlockMethodCache = unlock; mKeyguardIndicationController = key; Loading @@ -656,6 +658,7 @@ public class StatusBarTest extends SysuiTestCase { mScrimController = scrimController; mFingerprintUnlockController = fingerprintUnlockController; mActivityLaunchAnimator = launchAnimator; mKeyguardViewMediator = keyguardViewMediator; mClearAllEnabled = true; } Loading