Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProvider.java +5 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,11 @@ public interface NotificationInterruptStateProvider { /** * The notification is coming from a suspended packages, so FSI is suppressed. */ NO_FSI_SUSPENDED(false); NO_FSI_SUSPENDED(false), /** * The device is not provisioned, launch FSI. */ FSI_NOT_PROVISIONED(true); public final boolean shouldLaunch; Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java +11 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -75,6 +76,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter private final KeyguardNotificationVisibilityProvider mKeyguardNotificationVisibilityProvider; private final UiEventLogger mUiEventLogger; private final UserTracker mUserTracker; private final DeviceProvisionedController mDeviceProvisionedController; @VisibleForTesting protected boolean mUseHeadsUp = false; Loading Loading @@ -121,7 +123,8 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, UiEventLogger uiEventLogger, UserTracker userTracker) { UserTracker userTracker, DeviceProvisionedController deviceProvisionedController) { mContentResolver = contentResolver; mPowerManager = powerManager; mBatteryController = batteryController; Loading Loading @@ -163,6 +166,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter headsUpObserver); } headsUpObserver.onChange(true); // set up mDeviceProvisionedController = deviceProvisionedController; } @Override Loading Loading @@ -334,6 +338,12 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter } } // The device is not provisioned, launch FSI. if (!mDeviceProvisionedController.isDeviceProvisioned()) { return getDecisionGivenSuppression(FullScreenIntentDecision.FSI_NOT_PROVISIONED, suppressedByDND); } // Detect the case determined by b/231322873 to launch FSI while device is in use, // as blocked by the correct implementation, and report the event. return getDecisionGivenSuppression(FullScreenIntentDecision.NO_FSI_NO_HUN_OR_KEYGUARD, Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImplTest.java +24 −1 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider.FullScreenIntentDecision; import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderImpl.NotificationInterruptEvent; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -117,6 +118,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { PendingIntent mPendingIntent; @Mock UserTracker mUserTracker; @Mock DeviceProvisionedController mDeviceProvisionedController; private NotificationInterruptStateProviderImpl mNotifInterruptionStateProvider; Loading @@ -141,7 +144,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { mFlags, mKeyguardNotificationVisibilityProvider, mUiEventLoggerFake, mUserTracker); mUserTracker, mDeviceProvisionedController); mNotifInterruptionStateProvider.mUseHeadsUp = true; } Loading Loading @@ -693,6 +697,25 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { verify(mLogger).logFullscreen(entry, "FSI_KEYGUARD_SHOWING"); } @Test public void testShouldFullscreen_suppressedInterruptionsWhenNotProvisioned() { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(true); when(mStatusBarStateController.getState()).thenReturn(SHADE); when(mStatusBarStateController.isDreaming()).thenReturn(false); when(mPowerManager.isScreenOn()).thenReturn(true); when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(false); mNotifInterruptionStateProvider.addSuppressor(mSuppressInterruptions); assertThat(mNotifInterruptionStateProvider.getFullScreenIntentDecision(entry)) .isEqualTo(FullScreenIntentDecision.FSI_NOT_PROVISIONED); assertThat(mNotifInterruptionStateProvider.shouldLaunchFullScreenIntentWhenAdded(entry)) .isTrue(); verify(mLogger, never()).logNoFullscreen(any(), any()); verify(mLogger, never()).logNoFullscreenWarning(any(), any()); verify(mLogger).logFullscreen(entry, "FSI_NOT_PROVISIONED"); } @Test public void testShouldNotFullScreen_willHun() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -364,7 +364,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mock(NotifPipelineFlags.class), mock(KeyguardNotificationVisibilityProvider.class), mock(UiEventLogger.class), mUserTracker); mUserTracker, mDeviceProvisionedController); mContext.addMockSystemService(TrustManager.class, mock(TrustManager.class)); mContext.addMockSystemService(FingerprintManager.class, mock(FingerprintManager.class)); Loading Loading @@ -1169,7 +1170,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, UiEventLogger uiEventLogger, UserTracker userTracker) { UserTracker userTracker, DeviceProvisionedController deviceProvisionedController) { super( contentResolver, powerManager, Loading @@ -1183,7 +1185,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { flags, keyguardNotificationVisibilityProvider, uiEventLogger, userTracker userTracker, deviceProvisionedController ); mUseHeadsUp = true; } Loading packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ZenModeController; Loading Loading @@ -391,7 +392,8 @@ public class BubblesTest extends SysuiTestCase { mock(NotifPipelineFlags.class), mock(KeyguardNotificationVisibilityProvider.class), mock(UiEventLogger.class), mock(UserTracker.class) mock(UserTracker.class), mock(DeviceProvisionedController.class) ); mShellTaskOrganizer = new ShellTaskOrganizer(mock(ShellInit.class), Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProvider.java +5 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,11 @@ public interface NotificationInterruptStateProvider { /** * The notification is coming from a suspended packages, so FSI is suppressed. */ NO_FSI_SUSPENDED(false); NO_FSI_SUSPENDED(false), /** * The device is not provisioned, launch FSI. */ FSI_NOT_PROVISIONED(true); public final boolean shouldLaunch; Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java +11 −1 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -75,6 +76,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter private final KeyguardNotificationVisibilityProvider mKeyguardNotificationVisibilityProvider; private final UiEventLogger mUiEventLogger; private final UserTracker mUserTracker; private final DeviceProvisionedController mDeviceProvisionedController; @VisibleForTesting protected boolean mUseHeadsUp = false; Loading Loading @@ -121,7 +123,8 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, UiEventLogger uiEventLogger, UserTracker userTracker) { UserTracker userTracker, DeviceProvisionedController deviceProvisionedController) { mContentResolver = contentResolver; mPowerManager = powerManager; mBatteryController = batteryController; Loading Loading @@ -163,6 +166,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter headsUpObserver); } headsUpObserver.onChange(true); // set up mDeviceProvisionedController = deviceProvisionedController; } @Override Loading Loading @@ -334,6 +338,12 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter } } // The device is not provisioned, launch FSI. if (!mDeviceProvisionedController.isDeviceProvisioned()) { return getDecisionGivenSuppression(FullScreenIntentDecision.FSI_NOT_PROVISIONED, suppressedByDND); } // Detect the case determined by b/231322873 to launch FSI while device is in use, // as blocked by the correct implementation, and report the event. return getDecisionGivenSuppression(FullScreenIntentDecision.NO_FSI_NO_HUN_OR_KEYGUARD, Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImplTest.java +24 −1 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntryB import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider.FullScreenIntentDecision; import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderImpl.NotificationInterruptEvent; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -117,6 +118,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { PendingIntent mPendingIntent; @Mock UserTracker mUserTracker; @Mock DeviceProvisionedController mDeviceProvisionedController; private NotificationInterruptStateProviderImpl mNotifInterruptionStateProvider; Loading @@ -141,7 +144,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { mFlags, mKeyguardNotificationVisibilityProvider, mUiEventLoggerFake, mUserTracker); mUserTracker, mDeviceProvisionedController); mNotifInterruptionStateProvider.mUseHeadsUp = true; } Loading Loading @@ -693,6 +697,25 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { verify(mLogger).logFullscreen(entry, "FSI_KEYGUARD_SHOWING"); } @Test public void testShouldFullscreen_suppressedInterruptionsWhenNotProvisioned() { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(true); when(mStatusBarStateController.getState()).thenReturn(SHADE); when(mStatusBarStateController.isDreaming()).thenReturn(false); when(mPowerManager.isScreenOn()).thenReturn(true); when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(false); mNotifInterruptionStateProvider.addSuppressor(mSuppressInterruptions); assertThat(mNotifInterruptionStateProvider.getFullScreenIntentDecision(entry)) .isEqualTo(FullScreenIntentDecision.FSI_NOT_PROVISIONED); assertThat(mNotifInterruptionStateProvider.shouldLaunchFullScreenIntentWhenAdded(entry)) .isTrue(); verify(mLogger, never()).logNoFullscreen(any(), any()); verify(mLogger, never()).logNoFullscreenWarning(any(), any()); verify(mLogger).logFullscreen(entry, "FSI_NOT_PROVISIONED"); } @Test public void testShouldNotFullScreen_willHun() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +6 −3 Original line number Diff line number Diff line Loading @@ -364,7 +364,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mock(NotifPipelineFlags.class), mock(KeyguardNotificationVisibilityProvider.class), mock(UiEventLogger.class), mUserTracker); mUserTracker, mDeviceProvisionedController); mContext.addMockSystemService(TrustManager.class, mock(TrustManager.class)); mContext.addMockSystemService(FingerprintManager.class, mock(FingerprintManager.class)); Loading Loading @@ -1169,7 +1170,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, UiEventLogger uiEventLogger, UserTracker userTracker) { UserTracker userTracker, DeviceProvisionedController deviceProvisionedController) { super( contentResolver, powerManager, Loading @@ -1183,7 +1185,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { flags, keyguardNotificationVisibilityProvider, uiEventLogger, userTracker userTracker, deviceProvisionedController ); mUseHeadsUp = true; } Loading
packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.ZenModeController; Loading Loading @@ -391,7 +392,8 @@ public class BubblesTest extends SysuiTestCase { mock(NotifPipelineFlags.class), mock(KeyguardNotificationVisibilityProvider.class), mock(UiEventLogger.class), mock(UserTracker.class) mock(UserTracker.class), mock(DeviceProvisionedController.class) ); mShellTaskOrganizer = new ShellTaskOrganizer(mock(ShellInit.class), Loading