diff options
| author | 2022-07-21 18:56:06 +0000 | |
|---|---|---|
| committer | 2022-07-21 18:56:06 +0000 | |
| commit | 59582410ecacc7d0344429ccff75f8733c6eb5a1 (patch) | |
| tree | 98ffd4a8378b5c63bded65351a37d733e6f8fdfd | |
| parent | 5fa422b9e605b3375a5c486d401101fdfefd1333 (diff) | |
| parent | c1b8107a7d22cf7e7c2d33c49e83414dfd267f46 (diff) | |
Merge "FullScreenIntent cannot launch unless Keyguard is showing." into tm-qpr-dev
9 files changed, 245 insertions, 8 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java index 46173b872817..a566984748a7 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.java +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java @@ -63,6 +63,9 @@ public class Flags { public static final BooleanFlag REMOVE_UNRANKED_NOTIFICATIONS = new BooleanFlag(109, false); + public static final BooleanFlag FSI_REQUIRES_KEYGUARD = + new BooleanFlag(110, false, true); + /***************************************/ // 200 - keyguard/lockscreen diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt index c4947ca2dd90..0c6a91fe61f1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotifPipelineFlags.kt @@ -59,4 +59,7 @@ class NotifPipelineFlags @Inject constructor( fun removeUnrankedNotifs(): Boolean = featureFlags.isEnabled(Flags.REMOVE_UNRANKED_NOTIFICATIONS) + + fun fullScreenIntentRequiresKeyguard(): Boolean = + featureFlags.isEnabled(Flags.FSI_REQUIRES_KEYGUARD) } 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 535dc6e2b583..a72b3814d5ad 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 @@ -41,6 +41,7 @@ import com.android.systemui.statusbar.notification.NotificationFilter; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.HeadsUpManager; +import com.android.systemui.statusbar.policy.KeyguardStateController; import java.util.ArrayList; import java.util.List; @@ -58,6 +59,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter private final List<NotificationInterruptSuppressor> mSuppressors = new ArrayList<>(); private final StatusBarStateController mStatusBarStateController; + private final KeyguardStateController mKeyguardStateController; private final NotificationFilter mNotificationFilter; private final ContentResolver mContentResolver; private final PowerManager mPowerManager; @@ -82,6 +84,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter NotificationFilter notificationFilter, BatteryController batteryController, StatusBarStateController statusBarStateController, + KeyguardStateController keyguardStateController, HeadsUpManager headsUpManager, NotificationInterruptLogger logger, @Main Handler mainHandler, @@ -94,6 +97,7 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter mAmbientDisplayConfiguration = ambientDisplayConfiguration; mNotificationFilter = notificationFilter; mStatusBarStateController = statusBarStateController; + mKeyguardStateController = keyguardStateController; mHeadsUpManager = headsUpManager; mLogger = logger; mFlags = flags; @@ -228,6 +232,28 @@ public class NotificationInterruptStateProviderImpl implements NotificationInter return false; } + // Check whether FSI requires the keyguard to be showing. + if (mFlags.fullScreenIntentRequiresKeyguard()) { + + // If notification won't HUN and keyguard is showing, launch the FSI. + if (mKeyguardStateController.isShowing()) { + if (mKeyguardStateController.isOccluded()) { + mLogger.logFullscreen(entry, "Expected not to HUN while keyguard occluded"); + } else { + // Likely LOCKED_SHADE, but launch FSI anyway + mLogger.logFullscreen(entry, "Keyguard is showing and not occluded"); + } + return true; + } + + // 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. + final int uid = entry.getSbn().getUid(); + android.util.EventLog.writeEvent(0x534e4554, "231322873", uid, "no hun or keyguard"); + mLogger.logNoFullscreenWarning(entry, "Expected not to HUN while not on keyguard"); + return false; + } + // If the notification won't HUN for some other reason (DND/snooze/etc), launch FSI. mLogger.logFullscreen(entry, "Expected not to HUN"); return true; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java index 4bbd69b91a0a..4c239314f70f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java @@ -399,7 +399,8 @@ class StatusBarNotificationPresenter implements NotificationPresenter, return true; } - if (sbn.getNotification().fullScreenIntent != null) { + if (sbn.getNotification().fullScreenIntent != null + && !mNotifPipelineFlags.fullScreenIntentRequiresKeyguard()) { // we don't allow head-up on the lockscreen (unless there's a // "showWhenLocked" activity currently showing) if // the potential HUN has a fullscreen intent 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 72d3c2e95d75..5386171eeda2 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 @@ -27,6 +27,7 @@ import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK; import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE; +import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED; import static com.google.common.truth.Truth.assertThat; @@ -61,6 +62,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.HeadsUpManager; +import com.android.systemui.statusbar.policy.KeyguardStateController; import org.junit.Before; import org.junit.Test; @@ -87,6 +89,8 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { @Mock StatusBarStateController mStatusBarStateController; @Mock + KeyguardStateController mKeyguardStateController; + @Mock HeadsUpManager mHeadsUpManager; @Mock NotificationInterruptLogger mLogger; @@ -106,6 +110,7 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { @Before public void setup() { MockitoAnnotations.initMocks(this); + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(false); mNotifInterruptionStateProvider = new NotificationInterruptStateProviderImpl( @@ -116,6 +121,7 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { mNotificationFilter, mBatteryController, mStatusBarStateController, + mKeyguardStateController, mHeadsUpManager, mLogger, mMockHandler, @@ -427,6 +433,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldNotFullScreen_notPendingIntent_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldNotFullScreen_notPendingIntent(); + } + + @Test public void testShouldNotFullScreen_notPendingIntent() throws RemoteException { NotificationEntry entry = createNotification(IMPORTANCE_HIGH); when(mPowerManager.isInteractive()).thenReturn(true); @@ -441,6 +453,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldNotFullScreen_notHighImportance_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldNotFullScreen_notHighImportance(); + } + + @Test public void testShouldNotFullScreen_notHighImportance() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_DEFAULT, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(true); @@ -455,6 +473,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldNotFullScreen_isGroupAlertSilenced_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldNotFullScreen_isGroupAlertSilenced(); + } + + @Test public void testShouldNotFullScreen_isGroupAlertSilenced() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ true); when(mPowerManager.isInteractive()).thenReturn(false); @@ -469,6 +493,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldFullScreen_notInteractive_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldFullScreen_notInteractive(); + } + + @Test public void testShouldFullScreen_notInteractive() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(false); @@ -483,6 +513,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldFullScreen_isDreaming_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldFullScreen_isDreaming(); + } + + @Test public void testShouldFullScreen_isDreaming() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(true); @@ -497,6 +533,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldFullScreen_onKeyguard_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldFullScreen_onKeyguard(); + } + + @Test public void testShouldFullScreen_onKeyguard() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(true); @@ -511,6 +553,12 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { } @Test + public void testShouldNotFullScreen_willHun_withStrictFlag() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + testShouldNotFullScreen_willHun(); + } + + @Test public void testShouldNotFullScreen_willHun() throws RemoteException { NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); when(mPowerManager.isInteractive()).thenReturn(true); @@ -542,6 +590,66 @@ public class NotificationInterruptStateProviderImplTest extends SysuiTestCase { verify(mLogger).logFullscreen(entry, "Expected not to HUN"); } + @Test + public void testShouldFullScreen_snoozed_occluding_withStrictRules() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); + when(mPowerManager.isInteractive()).thenReturn(true); + when(mPowerManager.isScreenOn()).thenReturn(true); + when(mDreamManager.isDreaming()).thenReturn(false); + when(mStatusBarStateController.getState()).thenReturn(SHADE); + when(mHeadsUpManager.isSnoozed("a")).thenReturn(true); + when(mKeyguardStateController.isShowing()).thenReturn(true); + when(mKeyguardStateController.isOccluded()).thenReturn(true); + + assertThat(mNotifInterruptionStateProvider.shouldLaunchFullScreenIntentWhenAdded(entry)) + .isTrue(); + verify(mLogger).logNoHeadsUpPackageSnoozed(entry); + verify(mLogger, never()).logNoFullscreen(any(), any()); + verify(mLogger, never()).logNoFullscreenWarning(any(), any()); + verify(mLogger).logFullscreen(entry, "Expected not to HUN while keyguard occluded"); + } + + @Test + public void testShouldFullScreen_snoozed_lockedShade_withStrictRules() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); + when(mPowerManager.isInteractive()).thenReturn(true); + when(mPowerManager.isScreenOn()).thenReturn(true); + when(mDreamManager.isDreaming()).thenReturn(false); + when(mStatusBarStateController.getState()).thenReturn(SHADE_LOCKED); + when(mHeadsUpManager.isSnoozed("a")).thenReturn(true); + when(mKeyguardStateController.isShowing()).thenReturn(true); + when(mKeyguardStateController.isOccluded()).thenReturn(false); + + assertThat(mNotifInterruptionStateProvider.shouldLaunchFullScreenIntentWhenAdded(entry)) + .isTrue(); + verify(mLogger).logNoHeadsUpPackageSnoozed(entry); + verify(mLogger, never()).logNoFullscreen(any(), any()); + verify(mLogger, never()).logNoFullscreenWarning(any(), any()); + verify(mLogger).logFullscreen(entry, "Keyguard is showing and not occluded"); + } + + @Test + public void testShouldNotFullScreen_snoozed_unlocked_withStrictRules() throws Exception { + when(mFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + NotificationEntry entry = createFsiNotification(IMPORTANCE_HIGH, /* silenced */ false); + when(mPowerManager.isInteractive()).thenReturn(true); + when(mPowerManager.isScreenOn()).thenReturn(true); + when(mDreamManager.isDreaming()).thenReturn(false); + when(mStatusBarStateController.getState()).thenReturn(SHADE); + when(mHeadsUpManager.isSnoozed("a")).thenReturn(true); + when(mKeyguardStateController.isShowing()).thenReturn(false); + when(mKeyguardStateController.isOccluded()).thenReturn(false); + + assertThat(mNotifInterruptionStateProvider.shouldLaunchFullScreenIntentWhenAdded(entry)) + .isFalse(); + verify(mLogger).logNoHeadsUpPackageSnoozed(entry); + verify(mLogger, never()).logNoFullscreen(any(), any()); + verify(mLogger).logNoFullscreenWarning(entry, "Expected not to HUN while not on keyguard"); + verify(mLogger, never()).logFullscreen(any(), any()); + } + /** * Bubbles can happen. */ 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 b75c52ad283e..c6fb0ce34e85 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 @@ -306,8 +306,13 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mNotificationInterruptStateProvider = new TestableNotificationInterruptStateProviderImpl(mContext.getContentResolver(), mPowerManager, - mDreamManager, mAmbientDisplayConfiguration, mNotificationFilter, - mStatusBarStateController, mBatteryController, mHeadsUpManager, + mDreamManager, + mAmbientDisplayConfiguration, + mNotificationFilter, + mStatusBarStateController, + mKeyguardStateController, + mBatteryController, + mHeadsUpManager, mock(NotificationInterruptLogger.class), new Handler(TestableLooper.get(this).getLooper()), mock(NotifPipelineFlags.class), @@ -1036,15 +1041,28 @@ public class CentralSurfacesImplTest extends SysuiTestCase { AmbientDisplayConfiguration ambientDisplayConfiguration, NotificationFilter filter, StatusBarStateController controller, + KeyguardStateController keyguardStateController, BatteryController batteryController, HeadsUpManager headsUpManager, NotificationInterruptLogger logger, Handler mainHandler, NotifPipelineFlags flags, KeyguardNotificationVisibilityProvider keyguardNotificationVisibilityProvider) { - super(contentResolver, powerManager, dreamManager, ambientDisplayConfiguration, filter, - batteryController, controller, headsUpManager, logger, mainHandler, - flags, keyguardNotificationVisibilityProvider); + super( + contentResolver, + powerManager, + dreamManager, + ambientDisplayConfiguration, + filter, + batteryController, + controller, + keyguardStateController, + headsUpManager, + logger, + mainHandler, + flags, + keyguardNotificationVisibilityProvider + ); mUseHeadsUp = true; } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java index 4b5d1f747ca0..fdb29770cbb7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java @@ -16,12 +16,14 @@ package com.android.systemui.statusbar.phone; import static android.view.Display.DEFAULT_DISPLAY; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Notification; +import android.app.PendingIntent; import android.app.StatusBarManager; import android.metrics.LogMaker; import android.support.test.metricshelper.MetricsAsserts; @@ -80,6 +82,8 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { private FakeMetricsLogger mMetricsLogger; private ShadeController mShadeController = mock(ShadeController.class); private CentralSurfaces mCentralSurfaces = mock(CentralSurfaces.class); + private KeyguardStateController mKeyguardStateController = mock(KeyguardStateController.class); + private NotifPipelineFlags mNotifPipelineFlags = mock(NotifPipelineFlags.class); private InitController mInitController = new InitController(); @Before @@ -114,7 +118,7 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { mock(ScrimController.class), mock(NotificationShadeWindowController.class), mock(DynamicPrivacyController.class), - mock(KeyguardStateController.class), + mKeyguardStateController, mock(KeyguardIndicationController.class), mCentralSurfaces, mock(ShadeControllerImpl.class), @@ -130,7 +134,7 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { mInitController, mNotificationInterruptStateProvider, mock(NotificationRemoteInputManager.class), - mock(NotifPipelineFlags.class), + mNotifPipelineFlags, mock(NotificationRemoteInputManager.Callback.class), mock(NotificationListContainer.class)); mInitController.executePostInitTasks(); @@ -141,6 +145,19 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { } @Test + public void testNoSuppressHeadsUp_default() { + Notification n = new Notification.Builder(getContext(), "a").build(); + NotificationEntry entry = new NotificationEntryBuilder() + .setPkg("a") + .setOpPkg("a") + .setTag("a") + .setNotification(n) + .build(); + + assertFalse(mInterruptSuppressor.suppressAwakeHeadsUp(entry)); + } + + @Test public void testSuppressHeadsUp_disabledStatusBar() { Notification n = new Notification.Builder(getContext(), "a").build(); NotificationEntry entry = new NotificationEntryBuilder() @@ -176,6 +193,63 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { } @Test + public void testNoSuppressHeadsUp_FSI_occludedKeygaurd() { + when(mNotifPipelineFlags.fullScreenIntentRequiresKeyguard()).thenReturn(false); + Notification n = new Notification.Builder(getContext(), "a") + .setFullScreenIntent(mock(PendingIntent.class), true) + .build(); + NotificationEntry entry = new NotificationEntryBuilder() + .setPkg("a") + .setOpPkg("a") + .setTag("a") + .setNotification(n) + .build(); + + when(mKeyguardStateController.isShowing()).thenReturn(true); + when(mKeyguardStateController.isOccluded()).thenReturn(true); + when(mCentralSurfaces.isOccluded()).thenReturn(true); + assertFalse(mInterruptSuppressor.suppressAwakeHeadsUp(entry)); + } + + @Test + public void testSuppressHeadsUp_FSI_nonOccludedKeygaurd() { + when(mNotifPipelineFlags.fullScreenIntentRequiresKeyguard()).thenReturn(false); + Notification n = new Notification.Builder(getContext(), "a") + .setFullScreenIntent(mock(PendingIntent.class), true) + .build(); + NotificationEntry entry = new NotificationEntryBuilder() + .setPkg("a") + .setOpPkg("a") + .setTag("a") + .setNotification(n) + .build(); + + when(mKeyguardStateController.isShowing()).thenReturn(true); + when(mKeyguardStateController.isOccluded()).thenReturn(false); + when(mCentralSurfaces.isOccluded()).thenReturn(false); + assertTrue(mInterruptSuppressor.suppressAwakeHeadsUp(entry)); + } + + @Test + public void testNoSuppressHeadsUp_FSI_nonOccludedKeygaurd_withNewFlag() { + when(mNotifPipelineFlags.fullScreenIntentRequiresKeyguard()).thenReturn(true); + Notification n = new Notification.Builder(getContext(), "a") + .setFullScreenIntent(mock(PendingIntent.class), true) + .build(); + NotificationEntry entry = new NotificationEntryBuilder() + .setPkg("a") + .setOpPkg("a") + .setTag("a") + .setNotification(n) + .build(); + + when(mKeyguardStateController.isShowing()).thenReturn(true); + when(mKeyguardStateController.isOccluded()).thenReturn(false); + when(mCentralSurfaces.isOccluded()).thenReturn(false); + assertFalse(mInterruptSuppressor.suppressAwakeHeadsUp(entry)); + } + + @Test public void testSuppressInterruptions_vrMode() { Notification n = new Notification.Builder(getContext(), "a").build(); NotificationEntry entry = new NotificationEntryBuilder() 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 6a0124a3be8a..9866013093cf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -321,6 +321,7 @@ public class BubblesTest extends SysuiTestCase { mock(AmbientDisplayConfiguration.class), mock(NotificationFilter.class), mock(StatusBarStateController.class), + mock(KeyguardStateController.class), mock(BatteryController.class), mock(HeadsUpManager.class), mock(NotificationInterruptLogger.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 a7f0dc22e849..d80ea154e77a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableNotificationInterruptStateProviderImpl.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableNotificationInterruptStateProviderImpl.java @@ -30,6 +30,7 @@ import com.android.systemui.statusbar.notification.interruption.NotificationInte import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderImpl; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.HeadsUpManager; +import com.android.systemui.statusbar.policy.KeyguardStateController; public class TestableNotificationInterruptStateProviderImpl extends NotificationInterruptStateProviderImpl { @@ -41,6 +42,7 @@ public class TestableNotificationInterruptStateProviderImpl AmbientDisplayConfiguration ambientDisplayConfiguration, NotificationFilter filter, StatusBarStateController statusBarStateController, + KeyguardStateController keyguardStateController, BatteryController batteryController, HeadsUpManager headsUpManager, NotificationInterruptLogger logger, @@ -54,6 +56,7 @@ public class TestableNotificationInterruptStateProviderImpl filter, batteryController, statusBarStateController, + keyguardStateController, headsUpManager, logger, mainHandler, |