Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee20263f authored by Jeff DeCew's avatar Jeff DeCew Committed by Android (Google) Code Review
Browse files

Merge "Show FSI when device is not provisioned" into main

parents 31e8d505 d7501aee
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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;

+11 −1
Original line number Diff line number Diff line
@@ -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,
+24 −1
Original line number Diff line number Diff line
@@ -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;
    }

@@ -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);
+6 −3
Original line number Diff line number Diff line
@@ -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;
        }
+3 −1
Original line number Diff line number Diff line
@@ -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),
Loading