Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -309,7 +309,7 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { @EnableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test public void dreaming_flagEnabled_doNotHideNotifications() { public void dreamingWithOverlay_flagEnabled_showNotifications() { when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(KEYGUARD); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, true); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, false); Loading @@ -318,13 +318,13 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { .setImportance(IMPORTANCE_LOW) .build(); when(mHighPriorityProvider.isExplicitlyHighPriority(any())).thenReturn(false); when(mKeyguardUpdateMonitor.isDreaming()).thenReturn(true); when(mKeyguardUpdateMonitor.isDreamingWithOverlay()).thenReturn(true); assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @DisableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test public void dreaming_flagDisabled_hideNotifications() { public void dreamingWithOverlay_flagDisabled_hideNotifications() { when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(KEYGUARD); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, true); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, false); Loading @@ -333,7 +333,7 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { .setImportance(IMPORTANCE_LOW) .build(); when(mHighPriorityProvider.isExplicitlyHighPriority(any())).thenReturn(false); when(mKeyguardUpdateMonitor.isDreaming()).thenReturn(true); when(mKeyguardUpdateMonitor.isDreamingWithOverlay()).thenReturn(true); assertTrue(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } Loading packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +30 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ import com.android.settingslib.WirelessUtils; import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.CoreStartable; import com.android.systemui.Flags; import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream; import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; Loading @@ -141,6 +142,7 @@ import com.android.systemui.deviceentry.shared.model.FaceDetectionStatus; import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus; import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus; import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus; import com.android.systemui.dreams.DreamOverlayCallbackController; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; import com.android.systemui.keyguard.KeyguardWmStateRefactor; Loading Loading @@ -377,6 +379,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt private final SensorPrivacyManager mSensorPrivacyManager; private final ActiveUnlockConfig mActiveUnlockConfig; private final IDreamManager mDreamManager; private final DreamOverlayCallbackController mDreamOverlayCallbackController; private final TelephonyManager mTelephonyManager; @Nullable private final FingerprintManager mFpm; Loading Loading @@ -405,6 +408,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt protected int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED; private boolean mFingerprintDetectRunning; private boolean mIsDreaming; private boolean mIsDreamingWithOverlay = false; private boolean mCommunalShowing; private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private final FingerprintInteractiveToAuthProvider mFingerprintInteractiveToAuthProvider; Loading Loading @@ -857,6 +861,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt return mIsDreaming; } /** * @return whether the device is currently dreaming with overlay (not doze). */ public boolean isDreamingWithOverlay() { return mIsDreamingWithOverlay; } /** * If the device is dreaming, awakens the device */ Loading Loading @@ -2194,6 +2205,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt SubscriptionManager subscriptionManager, UserManager userManager, IDreamManager dreamManager, DreamOverlayCallbackController dreamOverlayCallbackController, DevicePolicyManager devicePolicyManager, SensorPrivacyManager sensorPrivacyManager, TelephonyManager telephonyManager, Loading Loading @@ -2238,6 +2250,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt mTrustManager = trustManager; mUserManager = userManager; mDreamManager = dreamManager; mDreamOverlayCallbackController = dreamOverlayCallbackController; mTelephonyManager = telephonyManager; mDevicePolicyManager = devicePolicyManager; mPackageManager = packageManager; Loading Loading @@ -2387,6 +2400,19 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt }; } private final DreamOverlayCallbackController.Callback mDreamOverlayCallback = new DreamOverlayCallbackController.Callback() { @Override public void onWakeUp() { mIsDreamingWithOverlay = false; } @Override public void onStartDream() { mIsDreamingWithOverlay = true; } }; @Override public void start() { // Since device can't be un-provisioned, we only need to register a content observer Loading Loading @@ -2551,6 +2577,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt ); } if (OngoingActivityChipsOnDream.isEnabled()) { mDreamOverlayCallbackController.addCallback(mDreamOverlayCallback); } if (glanceableHubV2()) { mJavaAdapter.get().alwaysCollectFlow( mCommunalSceneInteractor.get().isCommunalVisible(), Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +3 −2 Original line number Diff line number Diff line Loading @@ -199,9 +199,10 @@ constructor( override fun shouldHideNotification(entry: NotificationEntry): VisState = when { // Don't hide notifications if we're in a dream. The dream status bar needs // Show notifications if we're in a dream with overlay. The dream status bar needs // notifications to render ongoing call chip. OngoingActivityChipsOnDream.isEnabled && keyguardUpdateMonitor.isDreaming -> SHOW OngoingActivityChipsOnDream.isEnabled && keyguardUpdateMonitor.isDreamingWithOverlay -> SHOW // Keyguard state doesn't matter if the keyguard is not showing. !isLockedOrLocking -> SHOW // Notifications not allowed on the lockscreen, always hide. Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +23 −1 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ import com.android.keyguard.logging.SimLogger; import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream; import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; Loading @@ -146,6 +147,7 @@ import com.android.systemui.deviceentry.domain.interactor.FaceAuthenticationList import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus; import com.android.systemui.deviceentry.shared.model.FaceDetectionStatus; import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus; import com.android.systemui.dreams.DreamOverlayCallbackController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.SceneContainerFlagParameterizationKt; import com.android.systemui.keyguard.domain.interactor.KeyguardServiceShowLockscreenInteractor; Loading Loading @@ -252,6 +254,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { @Mock private IDreamManager mDreamManager; @Mock private DreamOverlayCallbackController mDreamOverlayCallbackController; @Mock private KeyguardBypassController mKeyguardBypassController; @Mock private SubscriptionManager mSubscriptionManager; Loading Loading @@ -321,6 +325,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { @Captor private ArgumentCaptor<IBiometricEnabledOnKeyguardCallback> mBiometricEnabledCallbackArgCaptor; @Captor private ArgumentCaptor<DreamOverlayCallbackController.Callback> mDreamOverlayCallbackCaptor; // Direct executor private final Executor mBackgroundExecutor = Runnable::run; Loading Loading @@ -2477,6 +2483,21 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { Assert.assertFalse(mKeyguardUpdateMonitor.forceIsDismissibleIsKeepingDeviceUnlocked()); } @EnableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test public void isDreamingWithOverlay() { assertThat(mKeyguardUpdateMonitor.isDreamingWithOverlay()).isFalse(); verify(mDreamOverlayCallbackController).addCallback(mDreamOverlayCallbackCaptor.capture()); final DreamOverlayCallbackController.Callback callback = mDreamOverlayCallbackCaptor.getValue(); callback.onStartDream(); assertThat(mKeyguardUpdateMonitor.isDreamingWithOverlay()).isTrue(); callback.onWakeUp(); assertThat(mKeyguardUpdateMonitor.isDreamingWithOverlay()).isFalse(); } private Intent defaultSimStateChangedIntent() { Intent intent = new Intent(TelephonyIntents.ACTION_SIM_STATE_CHANGED); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, 0); Loading Loading @@ -2686,7 +2707,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mInteractionJankMonitor, mLatencyTracker, mActiveUnlockConfig, mKeyguardUpdateMonitorLogger, mSimLogger, mUiEventLogger, () -> mSessionTracker, mTrustManager, mSubscriptionManager, mUserManager, mDreamManager, mDevicePolicyManager, mSensorPrivacyManager, mTelephonyManager, mDreamManager, mDreamOverlayCallbackController, mDevicePolicyManager, mSensorPrivacyManager, mTelephonyManager, mPackageManager, mFingerprintManager, mBiometricManager, mFaceWakeUpTriggersConfig, mDevicePostureController, Optional.of(mInteractiveToAuthProvider), Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProviderTest.java +4 −4 Original line number Diff line number Diff line Loading @@ -309,7 +309,7 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { @EnableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test public void dreaming_flagEnabled_doNotHideNotifications() { public void dreamingWithOverlay_flagEnabled_showNotifications() { when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(KEYGUARD); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, true); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, false); Loading @@ -318,13 +318,13 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { .setImportance(IMPORTANCE_LOW) .build(); when(mHighPriorityProvider.isExplicitlyHighPriority(any())).thenReturn(false); when(mKeyguardUpdateMonitor.isDreaming()).thenReturn(true); when(mKeyguardUpdateMonitor.isDreamingWithOverlay()).thenReturn(true); assertFalse(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } @DisableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test public void dreaming_flagDisabled_hideNotifications() { public void dreamingWithOverlay_flagDisabled_hideNotifications() { when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(KEYGUARD); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, true); mSecureSettings.putBool(Settings.Secure.LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS, false); Loading @@ -333,7 +333,7 @@ public class KeyguardNotificationVisibilityProviderTest extends SysuiTestCase { .setImportance(IMPORTANCE_LOW) .build(); when(mHighPriorityProvider.isExplicitlyHighPriority(any())).thenReturn(false); when(mKeyguardUpdateMonitor.isDreaming()).thenReturn(true); when(mKeyguardUpdateMonitor.isDreamingWithOverlay()).thenReturn(true); assertTrue(mKeyguardNotificationVisibilityProvider.shouldHideNotification(mEntry)); } Loading
packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +30 −0 Original line number Diff line number Diff line Loading @@ -123,6 +123,7 @@ import com.android.settingslib.WirelessUtils; import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.CoreStartable; import com.android.systemui.Flags; import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream; import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; Loading @@ -141,6 +142,7 @@ import com.android.systemui.deviceentry.shared.model.FaceDetectionStatus; import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus; import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus; import com.android.systemui.deviceentry.shared.model.SuccessFaceAuthenticationStatus; import com.android.systemui.dreams.DreamOverlayCallbackController; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; import com.android.systemui.keyguard.KeyguardWmStateRefactor; Loading Loading @@ -377,6 +379,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt private final SensorPrivacyManager mSensorPrivacyManager; private final ActiveUnlockConfig mActiveUnlockConfig; private final IDreamManager mDreamManager; private final DreamOverlayCallbackController mDreamOverlayCallbackController; private final TelephonyManager mTelephonyManager; @Nullable private final FingerprintManager mFpm; Loading Loading @@ -405,6 +408,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt protected int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED; private boolean mFingerprintDetectRunning; private boolean mIsDreaming; private boolean mIsDreamingWithOverlay = false; private boolean mCommunalShowing; private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private final FingerprintInteractiveToAuthProvider mFingerprintInteractiveToAuthProvider; Loading Loading @@ -857,6 +861,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt return mIsDreaming; } /** * @return whether the device is currently dreaming with overlay (not doze). */ public boolean isDreamingWithOverlay() { return mIsDreamingWithOverlay; } /** * If the device is dreaming, awakens the device */ Loading Loading @@ -2194,6 +2205,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt SubscriptionManager subscriptionManager, UserManager userManager, IDreamManager dreamManager, DreamOverlayCallbackController dreamOverlayCallbackController, DevicePolicyManager devicePolicyManager, SensorPrivacyManager sensorPrivacyManager, TelephonyManager telephonyManager, Loading Loading @@ -2238,6 +2250,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt mTrustManager = trustManager; mUserManager = userManager; mDreamManager = dreamManager; mDreamOverlayCallbackController = dreamOverlayCallbackController; mTelephonyManager = telephonyManager; mDevicePolicyManager = devicePolicyManager; mPackageManager = packageManager; Loading Loading @@ -2387,6 +2400,19 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt }; } private final DreamOverlayCallbackController.Callback mDreamOverlayCallback = new DreamOverlayCallbackController.Callback() { @Override public void onWakeUp() { mIsDreamingWithOverlay = false; } @Override public void onStartDream() { mIsDreamingWithOverlay = true; } }; @Override public void start() { // Since device can't be un-provisioned, we only need to register a content observer Loading Loading @@ -2551,6 +2577,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, CoreSt ); } if (OngoingActivityChipsOnDream.isEnabled()) { mDreamOverlayCallbackController.addCallback(mDreamOverlayCallback); } if (glanceableHubV2()) { mJavaAdapter.get().alwaysCollectFlow( mCommunalSceneInteractor.get().isCommunalVisible(), Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/KeyguardNotificationVisibilityProvider.kt +3 −2 Original line number Diff line number Diff line Loading @@ -199,9 +199,10 @@ constructor( override fun shouldHideNotification(entry: NotificationEntry): VisState = when { // Don't hide notifications if we're in a dream. The dream status bar needs // Show notifications if we're in a dream with overlay. The dream status bar needs // notifications to render ongoing call chip. OngoingActivityChipsOnDream.isEnabled && keyguardUpdateMonitor.isDreaming -> SHOW OngoingActivityChipsOnDream.isEnabled && keyguardUpdateMonitor.isDreamingWithOverlay -> SHOW // Keyguard state doesn't matter if the keyguard is not showing. !isLockedOrLocking -> SHOW // Notifications not allowed on the lockscreen, always hide. Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +23 −1 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ import com.android.keyguard.logging.SimLogger; import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.ambient.statusbar.shared.flag.OngoingActivityChipsOnDream; import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; Loading @@ -146,6 +147,7 @@ import com.android.systemui.deviceentry.domain.interactor.FaceAuthenticationList import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus; import com.android.systemui.deviceentry.shared.model.FaceDetectionStatus; import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus; import com.android.systemui.dreams.DreamOverlayCallbackController; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.SceneContainerFlagParameterizationKt; import com.android.systemui.keyguard.domain.interactor.KeyguardServiceShowLockscreenInteractor; Loading Loading @@ -252,6 +254,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { @Mock private IDreamManager mDreamManager; @Mock private DreamOverlayCallbackController mDreamOverlayCallbackController; @Mock private KeyguardBypassController mKeyguardBypassController; @Mock private SubscriptionManager mSubscriptionManager; Loading Loading @@ -321,6 +325,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { @Captor private ArgumentCaptor<IBiometricEnabledOnKeyguardCallback> mBiometricEnabledCallbackArgCaptor; @Captor private ArgumentCaptor<DreamOverlayCallbackController.Callback> mDreamOverlayCallbackCaptor; // Direct executor private final Executor mBackgroundExecutor = Runnable::run; Loading Loading @@ -2477,6 +2483,21 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { Assert.assertFalse(mKeyguardUpdateMonitor.forceIsDismissibleIsKeepingDeviceUnlocked()); } @EnableFlags(OngoingActivityChipsOnDream.FLAG_NAME) @Test public void isDreamingWithOverlay() { assertThat(mKeyguardUpdateMonitor.isDreamingWithOverlay()).isFalse(); verify(mDreamOverlayCallbackController).addCallback(mDreamOverlayCallbackCaptor.capture()); final DreamOverlayCallbackController.Callback callback = mDreamOverlayCallbackCaptor.getValue(); callback.onStartDream(); assertThat(mKeyguardUpdateMonitor.isDreamingWithOverlay()).isTrue(); callback.onWakeUp(); assertThat(mKeyguardUpdateMonitor.isDreamingWithOverlay()).isFalse(); } private Intent defaultSimStateChangedIntent() { Intent intent = new Intent(TelephonyIntents.ACTION_SIM_STATE_CHANGED); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, 0); Loading Loading @@ -2686,7 +2707,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mInteractionJankMonitor, mLatencyTracker, mActiveUnlockConfig, mKeyguardUpdateMonitorLogger, mSimLogger, mUiEventLogger, () -> mSessionTracker, mTrustManager, mSubscriptionManager, mUserManager, mDreamManager, mDevicePolicyManager, mSensorPrivacyManager, mTelephonyManager, mDreamManager, mDreamOverlayCallbackController, mDevicePolicyManager, mSensorPrivacyManager, mTelephonyManager, mPackageManager, mFingerprintManager, mBiometricManager, mFaceWakeUpTriggersConfig, mDevicePostureController, Optional.of(mInteractiveToAuthProvider), Loading