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

Commit 2c3992b5 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Respect ambient HUN setting

Test: atest StatusBarTest
Test: manual
Fixes: 128156368
Change-Id: I271aabeab5cbfccb54eb31907ff0a4150edf2586
parent 3057634f
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -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());
+7 −3
Original line number Diff line number Diff line
@@ -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;
        }
    }