diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 2789e27178cca..98721fd78a931 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -94,7 +94,6 @@ import com.android.internal.util.LatencyTracker; import com.android.internal.widget.LockPatternUtils; import com.android.settingslib.WirelessUtils; import com.android.settingslib.fuelgauge.BatteryStatus; -import com.android.systemui.DejankUtils; import com.android.systemui.Dumpable; import com.android.systemui.R; import com.android.systemui.biometrics.AuthController; @@ -173,7 +172,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private static final int MSG_SIM_SUBSCRIPTION_INFO_CHANGED = 328; private static final int MSG_AIRPLANE_MODE_CHANGED = 329; private static final int MSG_SERVICE_STATE_CHANGE = 330; - private static final int MSG_SCREEN_TURNED_ON = 331; private static final int MSG_SCREEN_TURNED_OFF = 332; private static final int MSG_DREAMING_STATE_CHANGED = 333; private static final int MSG_USER_UNLOCKED = 334; @@ -310,7 +308,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private boolean mSwitchingUser; private boolean mDeviceInteractive; - private boolean mScreenOn; private SubscriptionManager mSubscriptionManager; private final TelephonyListenerManager mTelephonyListenerManager; private List mSubscriptionInfo; @@ -1300,10 +1297,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } } - public boolean isScreenOn() { - return mScreenOn; - } - private void dispatchErrorMessage(CharSequence message) { Assert.isMainThread(); for (int i = 0; i < mCallbacks.size(); i++) { @@ -1692,29 +1685,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab updateBiometricListeningState(BIOMETRIC_ACTION_UPDATE); } - private void handleScreenTurnedOn() { - Assert.isMainThread(); - for (int i = 0; i < mCallbacks.size(); i++) { - KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); - if (cb != null) { - cb.onScreenTurnedOn(); - } - } - } - private void handleScreenTurnedOff() { - final String tag = "KeyguardUpdateMonitor#handleScreenTurnedOff"; - DejankUtils.startDetectingBlockingIpcs(tag); Assert.isMainThread(); mHardwareFingerprintUnavailableRetryCount = 0; mHardwareFaceUnavailableRetryCount = 0; - for (int i = 0; i < mCallbacks.size(); i++) { - KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); - if (cb != null) { - cb.onScreenTurnedOff(); - } - } - DejankUtils.stopDetectingBlockingIpcs(tag); } private void handleDreamingStateChanged(int dreamStart) { @@ -1894,11 +1868,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab case MSG_SERVICE_STATE_CHANGE: handleServiceStateChange(msg.arg1, (ServiceState) msg.obj); break; - case MSG_SCREEN_TURNED_ON: - handleScreenTurnedOn(); - break; case MSG_SCREEN_TURNED_OFF: - Trace.beginSection("KeyguardUpdateMonitor#handler MSG_SCREEN_TURNED_ON"); + Trace.beginSection("KeyguardUpdateMonitor#handler MSG_SCREEN_TURNED_OFF"); handleScreenTurnedOff(); Trace.endSection(); break; @@ -3319,17 +3290,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mHandler.sendMessage(mHandler.obtainMessage(MSG_FINISHED_GOING_TO_SLEEP, why, 0)); } - public void dispatchScreenTurnedOn() { - synchronized (this) { - mScreenOn = true; - } - mHandler.sendEmptyMessage(MSG_SCREEN_TURNED_ON); - } - public void dispatchScreenTurnedOff() { - synchronized (this) { - mScreenOn = false; - } mHandler.sendEmptyMessage(MSG_SCREEN_TURNED_OFF); } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index 8170a81a09e69..a74fd15ab11bc 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -200,22 +200,6 @@ public class KeyguardUpdateMonitorCallback { @Deprecated public void onFinishedGoingToSleep(int why) { } - /** - * Called when the screen has been turned on. - * - * @deprecated use {@link com.android.systemui.keyguard.ScreenLifecycle}. - */ - @Deprecated - public void onScreenTurnedOn() { } - - /** - * Called when the screen has been turned off. - * - * @deprecated use {@link com.android.systemui.keyguard.ScreenLifecycle}. - */ - @Deprecated - public void onScreenTurnedOff() { } - /** * Called when trust changes for a user. */ diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardViewController.java index fcf1b2c9500a8..122f3d7f23f13 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardViewController.java @@ -69,16 +69,6 @@ public interface KeyguardViewController { */ default void onStartedWakingUp() {}; - /** - * Called when the device started turning on. - */ - default void onScreenTurningOn() {}; - - /** - * Called when the device has finished turning on. - */ - default void onScreenTurnedOn() {}; - /** * Sets whether the Keyguard needs input. * @param needsInput diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 8f4a28c73dea3..7bbd8eec5924c 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -146,7 +146,7 @@ import dagger.Lazy; * so that once the screen comes on, it will be ready immediately. * * Example queries about the keyguard: - * - is {movement, key} one that should wake the keygaurd? + * - is {movement, key} one that should wake the keyguard? * - is the keyguard showing? * - are input events restricted due to the state of the keyguard? * @@ -429,11 +429,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, */ private WorkLockActivityController mWorkLockController; - /** - * @see #setPulsing(boolean) - */ - private boolean mPulsing; - private boolean mLockLater; private boolean mShowHomeOverLockscreen; private boolean mInGestureNavigationMode; @@ -1263,7 +1258,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, public void onScreenTurnedOn() { Trace.beginSection("KeyguardViewMediator#onScreenTurnedOn"); notifyScreenTurnedOn(); - mUpdateMonitor.dispatchScreenTurnedOn(); Trace.endSection(); } @@ -1283,7 +1277,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, // Skipping the lockscreen because we're not yet provisioned, but we still need to // notify the StrongAuthTracker that it's now safe to run trust agents, in case the // user sets a credential later. - getLockPatternUtils().userPresent(KeyguardUpdateMonitor.getCurrentUser()); + mLockPatternUtils.userPresent(KeyguardUpdateMonitor.getCurrentUser()); } } @@ -1984,7 +1978,7 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, for (int profileId : um.getProfileIdsWithDisabled(currentUser.getIdentifier())) { mContext.sendBroadcastAsUser(USER_PRESENT_INTENT, UserHandle.of(profileId)); } - getLockPatternUtils().userPresent(currentUserId); + mLockPatternUtils.userPresent(currentUserId); }); } else { mBootSendUserPresent = true; @@ -2584,7 +2578,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, .onScreenTurningOn(mPendingDrawnTasks.registerTask("fold-to-aod")); } - mKeyguardViewControllerLazy.get().onScreenTurningOn(); if (callback != null) { if (mWakeAndUnlocking) { mWakeAndUnlockingDrawnCallback = @@ -2603,7 +2596,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, if (DEBUG) Log.d(TAG, "handleNotifyScreenTurnedOn"); mPendingDrawnTasks.reset(); - mKeyguardViewControllerLazy.get().onScreenTurnedOn(); } Trace.endSection(); } @@ -2762,10 +2754,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, return mViewMediatorCallback; } - public LockPatternUtils getLockPatternUtils() { - return mLockPatternUtils; - } - @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.print(" mSystemReady: "); pw.println(mSystemReady); @@ -2826,13 +2814,6 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, } } - /** - * @param pulsing true when device temporarily wakes up to display an incoming notification. - */ - public void setPulsing(boolean pulsing) { - mPulsing = pulsing; - } - /** * Set if the wallpaper supports ambient mode. This is used to trigger the right animation. * In case it does support it, we have to fade in the incoming app, otherwise we'll reveal it diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index d7b4738340e6f..8ce73d777087e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -31,6 +31,7 @@ import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewCont import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_RESTING; import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_TRUST; import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_USER_LOCKED; +import static com.android.systemui.keyguard.ScreenLifecycle.SCREEN_ON; import static com.android.systemui.plugins.FalsingManager.LOW_PENALTY; import android.animation.Animator; @@ -78,6 +79,7 @@ import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.KeyguardIndication; import com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController; +import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -172,6 +174,18 @@ public class KeyguardIndicationController { return view == mIndicationArea; } }; + private ScreenLifecycle mScreenLifecycle; + private final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { + @Override + public void onScreenTurnedOn() { + if (mMessageToShowOnScreenOn != null) { + showBiometricMessage(mMessageToShowOnScreenOn); + // We want to keep this message around in case the screen was off + hideBiometricMessageDelayed(BaseKeyguardCallback.HIDE_DELAY_MS); + mMessageToShowOnScreenOn = null; + } + } + }; /** * Creates a new KeyguardIndicationController and registers callbacks. @@ -190,6 +204,7 @@ public class KeyguardIndicationController { @Main DelayableExecutor executor, FalsingManager falsingManager, LockPatternUtils lockPatternUtils, + ScreenLifecycle screenLifecycle, IActivityManager iActivityManager, KeyguardBypassController keyguardBypassController) { mContext = context; @@ -208,7 +223,8 @@ public class KeyguardIndicationController { mIActivityManager = iActivityManager; mFalsingManager = falsingManager; mKeyguardBypassController = keyguardBypassController; - + mScreenLifecycle = screenLifecycle; + mScreenLifecycle.addObserver(mScreenObserver); } /** Call this after construction to finish setting up the instance. */ @@ -991,7 +1007,7 @@ public class KeyguardIndicationController { if (mStatusBarKeyguardViewManager.isBouncerShowing()) { mStatusBarKeyguardViewManager.showBouncerMessage(helpString, mInitialTextColorState); - } else if (mKeyguardUpdateMonitor.isScreenOn()) { + } else if (mScreenLifecycle.getScreenState() == SCREEN_ON) { if (biometricSourceType == BiometricSourceType.FACE && shouldSuppressFaceMsgAndShowTryFingerprintMsg()) { showTryFingerprintMsg(msgId, helpString); @@ -1013,7 +1029,7 @@ public class KeyguardIndicationController { if (biometricSourceType == BiometricSourceType.FACE && shouldSuppressFaceMsgAndShowTryFingerprintMsg() && !mStatusBarKeyguardViewManager.isBouncerShowing() - && mKeyguardUpdateMonitor.isScreenOn()) { + && mScreenLifecycle.getScreenState() == SCREEN_ON) { showTryFingerprintMsg(msgId, errString); return; } @@ -1035,7 +1051,7 @@ public class KeyguardIndicationController { } } else if (mStatusBarKeyguardViewManager.isBouncerShowing()) { mStatusBarKeyguardViewManager.showBouncerMessage(errString, mInitialTextColorState); - } else if (mKeyguardUpdateMonitor.isScreenOn()) { + } else if (mScreenLifecycle.getScreenState() == SCREEN_ON) { showBiometricMessage(errString); } else { mMessageToShowOnScreenOn = errString; @@ -1085,16 +1101,6 @@ public class KeyguardIndicationController { showBiometricMessage(message); } - @Override - public void onScreenTurnedOn() { - if (mMessageToShowOnScreenOn != null) { - showBiometricMessage(mMessageToShowOnScreenOn); - // We want to keep this message around in case the screen was off - hideBiometricMessageDelayed(HIDE_DELAY_MS); - mMessageToShowOnScreenOn = null; - } - } - @Override public void onBiometricRunningStateChanged(boolean running, BiometricSourceType biometricSourceType) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java index a88a3b6392c22..b35e684203e14 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java @@ -254,7 +254,6 @@ public final class DozeServiceHost implements DozeHost { private void setPulsing(boolean pulsing) { mStatusBarKeyguardViewManager.setPulsing(pulsing); - mKeyguardViewMediator.setPulsing(pulsing); mNotificationPanel.setPulsing(pulsing); mStatusBarStateController.setPulsing(pulsing); mIgnoreTouchWhilePulsing = false; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java index e427d53306eae..7f357324bed08 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java @@ -81,6 +81,7 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.KeyguardIndication; import com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController; +import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -154,6 +155,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { private IActivityManager mIActivityManager; @Mock private KeyguardBypassController mKeyguardBypassController; + @Mock + private ScreenLifecycle mScreenLifecycle; @Captor private ArgumentCaptor mAlignmentListener; @Captor @@ -195,7 +198,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { R.string.do_financed_disclosure_with_name, ORGANIZATION_NAME); when(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true); - when(mKeyguardUpdateMonitor.isScreenOn()).thenReturn(true); + when(mScreenLifecycle.getScreenState()).thenReturn(ScreenLifecycle.SCREEN_ON); when(mKeyguardUpdateMonitor.isUserUnlocked(anyInt())).thenReturn(true); when(mIndicationArea.findViewById(R.id.keyguard_indication_text_bottom)) @@ -225,8 +228,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { mController = new KeyguardIndicationController(mContext, mWakeLockBuilder, mKeyguardStateController, mStatusBarStateController, mKeyguardUpdateMonitor, mDockManager, mBroadcastDispatcher, mDevicePolicyManager, mIBatteryStats, - mUserManager, mExecutor, mFalsingManager, mLockPatternUtils, mIActivityManager, - mKeyguardBypassController); + mUserManager, mExecutor, mFalsingManager, mLockPatternUtils, mScreenLifecycle, + mIActivityManager, mKeyguardBypassController); mController.init(); mController.setIndicationArea(mIndicationArea); verify(mStatusBarStateController).addCallback(mStatusBarStateListenerCaptor.capture()); @@ -702,7 +705,6 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { // GIVEN state of showing message when keyguard screen is on when(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true); when(mStatusBarKeyguardViewManager.isBouncerShowing()).thenReturn(false); - when(mKeyguardUpdateMonitor.isScreenOn()).thenReturn(true); // GIVEN fingerprint is also running (not udfps) when(mKeyguardUpdateMonitor.isFingerprintDetectionRunning()).thenReturn(true);