diff options
| author | 2023-09-26 17:58:19 +0000 | |
|---|---|---|
| committer | 2023-09-26 17:58:19 +0000 | |
| commit | ee20263fce5912c4e8e15cb353d3f9869b59504b (patch) | |
| tree | b2dc4b01dd5ce9fc2744a264e767ac6ebfef4705 | |
| parent | 31e8d5054bbaf4d1dacb8722e7155bccd44742b3 (diff) | |
| parent | d7501aee8ad86630e1c41dfac13d8fd7affc55dc (diff) | |
Merge "Show FSI when device is not provisioned" into main
6 files changed, 54 insertions, 9 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProvider.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProvider.java index 88994b9eec04..6ec9dbe003a2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProvider.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProvider.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java index 0c43da066fdb..3819843aa7b2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImpl.java @@ -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; @@ -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; @@ -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; @@ -163,6 +166,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter headsUpObserver); } headsUpObserver.onChange(true); // set up + mDeviceProvisionedController = deviceProvisionedController; } @Override @@ -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, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImplTest.java index f05436f66d82..50ce265b67d1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/interruption/NotificationInterruptStateProviderImplTest.java @@ -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; @@ -117,6 +118,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { PendingIntent mPendingIntent; @Mock UserTracker mUserTracker; + @Mock + DeviceProvisionedController mDeviceProvisionedController; private NotificationInterruptStateProviderImpl mNotifInterruptionStateProvider; @@ -141,7 +144,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { mFlags, mKeyguardNotificationVisibilityProvider, mUiEventLoggerFake, - mUserTracker); + mUserTracker, + mDeviceProvisionedController); mNotifInterruptionStateProvider.mUseHeadsUp = true; } @@ -694,6 +698,25 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @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); when(mPowerManager.isInteractive()).thenReturn(true); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java index 5c3dde59596e..0b171b2a23e4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java @@ -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)); @@ -1169,7 +1170,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, UiEventLogger uiEventLogger, - UserTracker userTracker) { + UserTracker userTracker, + DeviceProvisionedController deviceProvisionedController) { super( contentResolver, powerManager, @@ -1183,7 +1185,8 @@ public class CentralSurfacesImplTest extends SysuiTestCase { flags, keyguardNotificationVisibilityProvider, uiEventLogger, - userTracker + userTracker, + deviceProvisionedController ); mUseHeadsUp = true; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index d8511e8f38e2..65b8b555cf2b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -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; @@ -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), diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableNotificationInterruptStateProviderImpl.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableNotificationInterruptStateProviderImpl.java index 4e14bbf6ac1f..0df235dd2416 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableNotificationInterruptStateProviderImpl.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableNotificationInterruptStateProviderImpl.java @@ -29,6 +29,7 @@ import com.android.systemui.statusbar.notification.interruption.KeyguardNotifica import com.android.systemui.statusbar.notification.interruption.NotificationInterruptLogger; import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderImpl; 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; @@ -48,7 +49,8 @@ public class TestableNotificationInterruptStateProviderImpl NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider, UiEventLogger uiEventLogger, - UserTracker userTracker) { + UserTracker userTracker, + DeviceProvisionedController deviceProvisionedController) { super(contentResolver, powerManager, ambientDisplayConfiguration, @@ -61,7 +63,8 @@ public class TestableNotificationInterruptStateProviderImpl flags, keyguardNotificationVisibilityProvider, uiEventLogger, - userTracker); + userTracker, + deviceProvisionedController); mUseHeadsUp = true; } } |