Respect ambient HUN setting

Test: atest StatusBarTest
Test: manual
Fixes: 128156368
Change-Id: I271aabeab5cbfccb54eb31907ff0a4150edf2586
This commit is contained in:
Lucas Dupin
2019-03-11 16:34:08 -07:00
parent 3057634fd7
commit 2c3992b5ff
2 changed files with 22 additions and 5 deletions

View File

@@ -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());

View File

@@ -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;
}
}