diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java index 7cbe1a3e279e2..059c3f672b695 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java @@ -22,10 +22,12 @@ import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.database.ContentObserver; +import android.hardware.display.AmbientDisplayConfiguration; import android.os.Bundle; import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.UserHandle; import android.provider.Settings; import android.service.dreams.DreamService; import android.service.dreams.IDreamManager; @@ -54,6 +56,7 @@ public class NotificationInterruptionStateProvider { private final StatusBarStateController mStatusBarStateController = Dependency.get(StatusBarStateController.class); private final NotificationFilter mNotificationFilter = Dependency.get(NotificationFilter.class); + private final AmbientDisplayConfiguration mAmbientDisplayConfiguration; private final Context mContext; private final PowerManager mPowerManager; @@ -73,17 +76,20 @@ public class NotificationInterruptionStateProvider { this(context, (PowerManager) context.getSystemService(Context.POWER_SERVICE), IDreamManager.Stub.asInterface( - ServiceManager.checkService(DreamService.DREAM_SERVICE))); + ServiceManager.checkService(DreamService.DREAM_SERVICE)), + new AmbientDisplayConfiguration(context)); } @VisibleForTesting protected NotificationInterruptionStateProvider( Context context, PowerManager powerManager, - IDreamManager dreamManager) { + IDreamManager dreamManager, + AmbientDisplayConfiguration ambientDisplayConfiguration) { mContext = context; mPowerManager = powerManager; mDreamManager = dreamManager; + mAmbientDisplayConfiguration = ambientDisplayConfiguration; } /** Sets up late-binding dependencies for this component. */ @@ -232,6 +238,13 @@ public class NotificationInterruptionStateProvider { public boolean shouldPulse(NotificationEntry entry) { StatusBarNotification sbn = entry.notification; + if (!mAmbientDisplayConfiguration.pulseOnNotificationEnabled(UserHandle.USER_CURRENT)) { + if (DEBUG) { + Log.d(TAG, "No pulsing: disabled by setting: " + sbn.getKey()); + } + return false; + } + if (!getShadeController().isDozing()) { if (DEBUG) { Log.d(TAG, "No pulsing: not dozing: " + sbn.getKey()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index f8bfc54512f1d..30751c4c713ff 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -41,6 +41,7 @@ import android.app.Notification; import android.app.StatusBarManager; import android.app.trust.TrustManager; import android.content.Context; +import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.fingerprint.FingerprintManager; import android.metrics.LogMaker; import android.os.Binder; @@ -169,6 +170,8 @@ public class StatusBarTest extends SysuiTestCase { private NotificationLogger.ExpansionStateLogger mExpansionStateLogger; @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; + @Mock + private AmbientDisplayConfiguration mAmbientDisplayConfiguration; private TestableStatusBar mStatusBar; private FakeMetricsLogger mMetricsLogger; @@ -205,7 +208,7 @@ public class StatusBarTest extends SysuiTestCase { mNotificationInterruptionStateProvider = new TestableNotificationInterruptionStateProvider(mContext, mPowerManager, - mDreamManager); + mDreamManager, mAmbientDisplayConfiguration); mDependency.injectTestDependency(NotificationInterruptionStateProvider.class, mNotificationInterruptionStateProvider); mDependency.injectMockDependency(NavigationBarController.class); @@ -832,8 +835,9 @@ public class StatusBarTest extends SysuiTestCase { public TestableNotificationInterruptionStateProvider( Context context, PowerManager powerManager, - IDreamManager dreamManager) { - super(context, powerManager, dreamManager); + IDreamManager dreamManager, + AmbientDisplayConfiguration ambientDisplayConfiguration) { + super(context, powerManager, dreamManager, ambientDisplayConfiguration); mUseHeadsUp = true; } }