AOD: selectively register sensors that use prox
Allow some devices to only register sensors that use prox when
the display state is off or in doze on certain devices to
avoid white prox dot behind display.
The delay shouldn't be perceptible - when the device isn't in low-power
mode yet, we rely on regular touch from the display.
Test: manual, atest DozeSensorsTest, atest DozeTriggersTests
Fixes: 181835575
Change-Id: Ib62ed0ca3150e0a3939c8d9f0c5ae700fd6a61d7
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 6e61148..4689fb8 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -174,6 +174,23 @@
<!-- Doze: check proximity sensor before pulsing? -->
<bool name="doze_proximity_check_before_pulse">true</bool>
+ <!-- Doze: only register sensors that use prox when device is in certain Display states. This
+ delays registering sensors when device first shows dozing UI but the
+ Display & Power state hasn't changed to low-power mode yet. -->
+ <bool name="doze_selectively_register_prox">false</bool>
+
+ <!-- Doze: whether the single tap sensor uses the proximity sensor.
+ If both this parameter and doze_selectively_register_prox are true, registration for the
+ sensor will be delayed when the device first enters dozing but the device has not entered its
+ low powered state yet. -->
+ <bool name="doze_single_tap_uses_prox">true</bool>
+
+ <!-- Doze: whether the long press sensor uses the proximity sensor.
+ If both this parameter and doze_selectively_register_prox are true, registration for the
+ sensor will be delayed when the device first enters dozing but the device has not entered its
+ low powered state yet. -->
+ <bool name="doze_long_press_uses_prox">true</bool>
+
<!-- Doze: should notifications be used as a pulse signal? -->
<bool name="doze_pulse_on_notifications">true</bool>
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index b7f6e2b..5cea31b 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -81,6 +81,10 @@
private boolean mSettingRegistered;
private boolean mListening;
private boolean mListeningTouchScreenSensors;
+ private boolean mListeningProxSensors;
+
+ // whether to only register sensors that use prox when the display state is dozing or off
+ private boolean mSelectivelyRegisterProxSensors;
@VisibleForTesting
public enum DozeSensorsUiEvent implements UiEventLogger.UiEventEnum {
@@ -112,6 +116,8 @@
mSecureSettings = secureSettings;
mCallback = callback;
mProximitySensor = proximitySensor;
+ mSelectivelyRegisterProxSensors = dozeParameters.getSelectivelyRegisterSensorsUsingProx();
+ mListeningProxSensors = !mSelectivelyRegisterProxSensors;
boolean udfpsEnrolled =
authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser());
@@ -131,6 +137,7 @@
DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */,
false /* touchscreen */,
false /* ignoresSetting */,
+ false /* requires prox */,
dozeLog),
new TriggerSensor(
findSensorWithType(config.doubleTapSensorType()),
@@ -143,10 +150,13 @@
new TriggerSensor(
findSensorWithType(config.tapSensorType()),
Settings.Secure.DOZE_TAP_SCREEN_GESTURE,
+ true /* settingDef */,
true /* configured */,
DozeLog.REASON_SENSOR_TAP,
false /* reports touch coordinates */,
true /* touchscreen */,
+ false /* ignoresSetting */,
+ dozeParameters.singleTapUsesProx() /* requiresProx */,
dozeLog),
new TriggerSensor(
findSensorWithType(config.longPressSensorType()),
@@ -156,6 +166,8 @@
DozeLog.PULSE_REASON_SENSOR_LONG_PRESS,
true /* reports touch coordinates */,
true /* touchscreen */,
+ false /* ignoresSetting */,
+ dozeParameters.longPressUsesProx() /* requiresProx */,
dozeLog),
new TriggerSensor(
findSensorWithType(config.udfpsLongPressSensorType()),
@@ -165,6 +177,8 @@
DozeLog.REASON_SENSOR_UDFPS_LONG_PRESS,
true /* reports touch coordinates */,
true /* touchscreen */,
+ false /* ignoresSetting */,
+ dozeParameters.longPressUsesProx(),
dozeLog),
new PluginSensor(
new SensorManagerPlugin.Sensor(TYPE_WAKE_DISPLAY),
@@ -255,13 +269,31 @@
}
/**
+ * If sensors should be registered and sending signals.
+ */
+ public void setListening(boolean listen, boolean includeTouchScreenSensors,
+ boolean lowPowerStateOrOff) {
+ final boolean shouldRegisterProxSensors =
+ !mSelectivelyRegisterProxSensors || lowPowerStateOrOff;
+ if (mListening == listen && mListeningTouchScreenSensors == includeTouchScreenSensors
+ && mListeningProxSensors == shouldRegisterProxSensors) {
+ return;
+ }
+ mListening = listen;
+ mListeningTouchScreenSensors = includeTouchScreenSensors;
+ mListeningProxSensors = shouldRegisterProxSensors;
+ updateListening();
+ }
+
+ /**
* Registers/unregisters sensors based on internal state.
*/
private void updateListening() {
boolean anyListening = false;
for (TriggerSensor s : mSensors) {
boolean listen = mListening
- && (!s.mRequiresTouchscreen || mListeningTouchScreenSensors);
+ && (!s.mRequiresTouchscreen || mListeningTouchScreenSensors)
+ && (!s.mRequiresProx || mListeningProxSensors);
s.setListening(listen);
if (listen) {
anyListening = true;
@@ -337,6 +369,8 @@
public void dump(PrintWriter pw) {
pw.println("mListening=" + mListening);
pw.println("mListeningTouchScreenSensors=" + mListeningTouchScreenSensors);
+ pw.println("mSelectivelyRegisterProxSensors=" + mSelectivelyRegisterProxSensors);
+ pw.println("mListeningProxSensors=" + mListeningProxSensors);
IndentingPrintWriter idpw = new IndentingPrintWriter(pw);
idpw.increaseIndent();
for (TriggerSensor s : mSensors) {
@@ -361,6 +395,7 @@
private final boolean mReportsTouchCoordinates;
private final boolean mSettingDefault;
private final boolean mRequiresTouchscreen;
+ private final boolean mRequiresProx;
protected boolean mRequested;
protected boolean mRegistered;
@@ -378,12 +413,14 @@
boolean configured, int pulseReason, boolean reportsTouchCoordinates,
boolean requiresTouchscreen, DozeLog dozeLog) {
this(sensor, setting, settingDef, configured, pulseReason, reportsTouchCoordinates,
- requiresTouchscreen, false /* ignoresSetting */, dozeLog);
+ requiresTouchscreen, false /* ignoresSetting */,
+ false /* requiresProx */, dozeLog);
}
private TriggerSensor(Sensor sensor, String setting, boolean settingDef,
boolean configured, int pulseReason, boolean reportsTouchCoordinates,
- boolean requiresTouchscreen, boolean ignoresSetting, DozeLog dozeLog) {
+ boolean requiresTouchscreen, boolean ignoresSetting, boolean requiresProx,
+ DozeLog dozeLog) {
mSensor = sensor;
mSetting = setting;
mSettingDefault = settingDef;
@@ -392,6 +429,7 @@
mReportsTouchCoordinates = reportsTouchCoordinates;
mRequiresTouchscreen = requiresTouchscreen;
mIgnoresSetting = ignoresSetting;
+ mRequiresProx = requiresProx;
mDozeLog = dozeLog;
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index 04b4670..c966d77 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -17,7 +17,6 @@
package com.android.systemui.doze;
import android.annotation.Nullable;
-import android.app.AlarmManager;
import android.app.UiModeManager;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -42,7 +41,6 @@
import com.android.systemui.Dependency;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.broadcast.BroadcastDispatcher;
-import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dock.DockManager;
import com.android.systemui.doze.dagger.DozeScope;
@@ -101,15 +99,16 @@
private final BroadcastDispatcher mBroadcastDispatcher;
private final AuthController mAuthController;
private final DelayableExecutor mMainExecutor;
- private final DelayableExecutor mBgExecutor;
private long mNotificationPulseTime;
private boolean mPulsePending;
private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
- private boolean mWantProx;
- private boolean mWantSensors;
+
+ /** see {@link #onProximityFar} prox for callback */
+ private boolean mWantProxSensor;
private boolean mWantTouchScreenSensors;
+ private boolean mWantSensors;
@VisibleForTesting
public enum DozingUpdateUiEvent implements UiEventLogger.UiEventEnum {
@@ -177,13 +176,13 @@
@Inject
public DozeTriggers(Context context, DozeHost dozeHost,
- AlarmManager alarmManager, AmbientDisplayConfiguration config,
+ AmbientDisplayConfiguration config,
DozeParameters dozeParameters, AsyncSensorManager sensorManager,
WakeLock wakeLock, DockManager dockManager,
ProximitySensor proximitySensor, ProximitySensor.ProximityCheck proxCheck,
DozeLog dozeLog, BroadcastDispatcher broadcastDispatcher,
SecureSettings secureSettings, AuthController authController,
- @Main DelayableExecutor mainExecutor, @Background DelayableExecutor bgExecutor) {
+ @Main DelayableExecutor mainExecutor) {
mContext = context;
mDozeHost = dozeHost;
mConfig = config;
@@ -201,7 +200,6 @@
mBroadcastDispatcher = broadcastDispatcher;
mAuthController = authController;
mMainExecutor = mainExecutor;
- mBgExecutor = bgExecutor;
}
@Override
@@ -459,7 +457,7 @@
break;
case DOZE:
case DOZE_AOD:
- mWantProx = newState != DozeMachine.State.DOZE;
+ mWantProxSensor = newState != DozeMachine.State.DOZE;
mWantSensors = true;
mWantTouchScreenSensors = true;
if (newState == DozeMachine.State.DOZE_AOD && !sWakeDisplaySensorState) {
@@ -468,15 +466,15 @@
break;
case DOZE_AOD_PAUSED:
case DOZE_AOD_PAUSING:
- mWantProx = true;
+ mWantProxSensor = true;
break;
case DOZE_PULSING:
case DOZE_PULSING_BRIGHT:
- mWantProx = true;
+ mWantProxSensor = true;
mWantTouchScreenSensors = false;
break;
case DOZE_AOD_DOCKED:
- mWantProx = false;
+ mWantProxSensor = false;
mWantTouchScreenSensors = false;
break;
case DOZE_PULSE_DONE:
@@ -490,7 +488,7 @@
mDozeSensors.setListening(false, false);
mDozeSensors.setProxListening(false);
mWantSensors = false;
- mWantProx = false;
+ mWantProxSensor = false;
mWantTouchScreenSensors = false;
break;
default:
@@ -501,10 +499,10 @@
@Override
public void onScreenState(int state) {
mDozeSensors.onScreenState(state);
- mDozeSensors.setProxListening(mWantProx && (state == Display.STATE_DOZE
- || state == Display.STATE_DOZE_SUSPEND
- || state == Display.STATE_OFF));
- mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors);
+ final boolean lowPowerStateOrOff = state == Display.STATE_DOZE
+ || state == Display.STATE_DOZE_SUSPEND || state == Display.STATE_OFF;
+ mDozeSensors.setProxListening(mWantProxSensor && lowPowerStateOrOff);
+ mDozeSensors.setListening(mWantSensors, mWantTouchScreenSensors, lowPowerStateOrOff);
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
index c23f1ad..86ef0a7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java
@@ -24,15 +24,20 @@
import android.provider.Settings;
import android.util.MathUtils;
+import androidx.annotation.NonNull;
+
+import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
import com.android.systemui.doze.DozeScreenState;
+import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.tuner.TunerService;
+import java.io.FileDescriptor;
import java.io.PrintWriter;
import javax.inject.Inject;
@@ -42,7 +47,7 @@
*/
@SysUISingleton
public class DozeParameters implements TunerService.Tunable,
- com.android.systemui.plugins.statusbar.DozeParameters {
+ com.android.systemui.plugins.statusbar.DozeParameters, Dumpable {
private static final int MAX_DURATION = 60 * 1000;
public static final boolean FORCE_NO_BLANKING =
SystemProperties.getBoolean("debug.force_no_blanking", false);
@@ -68,11 +73,13 @@
PowerManager powerManager,
BatteryController batteryController,
TunerService tunerService,
+ DumpManager dumpManager,
FeatureFlags featureFlags) {
mResources = resources;
mAmbientDisplayConfiguration = ambientDisplayConfiguration;
mAlwaysOnPolicy = alwaysOnDisplayPolicy;
mBatteryController = batteryController;
+ dumpManager.registerDumpable("DozeParameters", this);
mControlScreenOffAnimation = !getDisplayNeedsBlanking();
mPowerManager = powerManager;
@@ -85,20 +92,6 @@
Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
}
- public void dump(PrintWriter pw) {
- pw.println(" DozeParameters:");
- pw.print(" getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
- pw.print(" getPulseDuration(): "); pw.println(getPulseDuration());
- pw.print(" getPulseInDuration(): "); pw.println(getPulseInDuration());
- pw.print(" getPulseInVisibleDuration(): "); pw.println(getPulseVisibleDuration());
- pw.print(" getPulseOutDuration(): "); pw.println(getPulseOutDuration());
- pw.print(" getPulseOnSigMotion(): "); pw.println(getPulseOnSigMotion());
- pw.print(" getVibrateOnSigMotion(): "); pw.println(getVibrateOnSigMotion());
- pw.print(" getVibrateOnPickup(): "); pw.println(getVibrateOnPickup());
- pw.print(" getProxCheckBeforePulse(): "); pw.println(getProxCheckBeforePulse());
- pw.print(" getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
- }
-
public boolean getDisplayStateSupported() {
return getBoolean("doze.display.supported", R.bool.doze_display_state_supported);
}
@@ -144,6 +137,16 @@
return getBoolean("doze.pulse.proxcheck", R.bool.doze_proximity_check_before_pulse);
}
+ /**
+ * @return true if we should only register for sensors that use the proximity sensor when the
+ * display state is {@link android.view.Display.STATE_OFF},
+ * {@link android.view.Display.STATE_DOZE} or {@link android.view.Display.STATE_DOZE_SUSPEND}
+ */
+ public boolean getSelectivelyRegisterSensorsUsingProx() {
+ return getBoolean("doze.prox.selectively_register",
+ R.bool.doze_selectively_register_prox);
+ }
+
public int getPickupVibrationThreshold() {
return getInt("doze.pickup.vibration.threshold", R.integer.doze_pickup_vibration_threshold);
}
@@ -233,8 +236,38 @@
return mResources.getBoolean(R.bool.doze_double_tap_reports_touch_coordinates);
}
+ /**
+ * Whether the single tap sensor uses the proximity sensor.
+ */
+ public boolean singleTapUsesProx() {
+ return mResources.getBoolean(R.bool.doze_single_tap_uses_prox);
+ }
+
+ /**
+ * Whether the long press sensor uses the proximity sensor.
+ */
+ public boolean longPressUsesProx() {
+ return mResources.getBoolean(R.bool.doze_long_press_uses_prox);
+ }
+
@Override
public void onTuningChanged(String key, String newValue) {
mDozeAlwaysOn = mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT);
}
+
+ @Override
+ public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+ pw.print("getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
+ pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
+ pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration());
+ pw.print("getPulseInVisibleDuration(): "); pw.println(getPulseVisibleDuration());
+ pw.print("getPulseOutDuration(): "); pw.println(getPulseOutDuration());
+ pw.print("getPulseOnSigMotion(): "); pw.println(getPulseOnSigMotion());
+ pw.print("getVibrateOnSigMotion(): "); pw.println(getVibrateOnSigMotion());
+ pw.print("getVibrateOnPickup(): "); pw.println(getVibrateOnPickup());
+ pw.print("getProxCheckBeforePulse(): "); pw.println(getProxCheckBeforePulse());
+ pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
+ pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
+ pw.println(getSelectivelyRegisterSensorsUsingProx());
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java
index 1aeb0d8..fe2103c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java
@@ -39,6 +39,9 @@
when(params.getProxCheckBeforePulse()).thenReturn(true);
when(params.doubleTapReportsTouchCoordinates()).thenReturn(false);
when(params.getDisplayNeedsBlanking()).thenReturn(false);
+ when(params.getSelectivelyRegisterSensorsUsingProx()).thenReturn(false);
+ when(params.singleTapUsesProx()).thenReturn(true);
+ when(params.longPressUsesProx()).thenReturn(true);
doneHolder[0] = true;
return params;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
index 2320f4e..0c94f09 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
@@ -16,9 +16,11 @@
package com.android.systemui.doze;
+import static com.android.systemui.doze.DozeLog.REASON_SENSOR_TAP;
import static com.android.systemui.plugins.SensorManagerPlugin.Sensor.TYPE_WAKE_LOCK_SCREEN;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -87,6 +89,7 @@
private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener;
private TestableLooper mTestableLooper;
private DozeSensors mDozeSensors;
+ private TriggerSensor mSensorTap;
@Before
public void setUp() {
@@ -149,6 +152,24 @@
verify(mTriggerSensor).setListening(false);
}
+ @Test
+ public void testRegisterSensorsUsingProx() {
+ // GIVEN we only should register sensors using prox when not in low-powered mode / off
+ // and the single tap sensor uses the proximity sensor
+ when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(true);
+ when(mDozeParameters.singleTapUsesProx()).thenReturn(true);
+ TestableDozeSensors dozeSensors = new TestableDozeSensors();
+
+ // THEN on initialization, the tap sensor isn't requested
+ assertFalse(mSensorTap.mRequested);
+
+ // WHEN we're now in a low powered state
+ dozeSensors.setListening(true, true, true);
+
+ // THEN the tap sensor is registered
+ assertTrue(mSensorTap.mRequested);
+ }
+
private class TestableDozeSensors extends DozeSensors {
TestableDozeSensors() {
@@ -160,9 +181,11 @@
&& ((PluginSensor) sensor).mPluginSensor.getType()
== TYPE_WAKE_LOCK_SCREEN) {
mWakeLockScreenListener = (PluginSensor) sensor;
+ } else if (sensor.mPulseReason == REASON_SENSOR_TAP) {
+ mSensorTap = sensor;
}
}
- mSensors = new TriggerSensor[] {mTriggerSensor};
+ mSensors = new TriggerSensor[] {mTriggerSensor, mSensorTap};
}
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
index 1817fdf..8eb0e9c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
@@ -27,7 +27,6 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.AlarmManager;
import android.hardware.Sensor;
import android.hardware.display.AmbientDisplayConfiguration;
import android.testing.AndroidTestingRunner;
@@ -70,8 +69,6 @@
@Mock
private DozeHost mHost;
@Mock
- private AlarmManager mAlarmManager;
- @Mock
private BroadcastDispatcher mBroadcastDispatcher;
@Mock
private DockManager mDockManager;
@@ -89,8 +86,14 @@
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- AmbientDisplayConfiguration config = DozeConfigurationUtil.createMockConfig();
- DozeParameters parameters = DozeConfigurationUtil.createMockParameters();
+ setupDozeTriggers(
+ DozeConfigurationUtil.createMockConfig(),
+ DozeConfigurationUtil.createMockParameters());
+ }
+
+ private void setupDozeTriggers(
+ AmbientDisplayConfiguration config,
+ DozeParameters dozeParameters) throws Exception {
mSensors = spy(new FakeSensorManager(mContext));
mTapSensor = mSensors.getFakeTapSensor().getSensor();
WakeLock wakeLock = new WakeLockFake();
@@ -101,10 +104,10 @@
thresholdSensor.setLoaded(true);
mProximitySensor = new FakeProximitySensor(thresholdSensor, null, mExecutor);
- mTriggers = new DozeTriggers(mContext, mHost, mAlarmManager, config, parameters,
+ mTriggers = new DozeTriggers(mContext, mHost, config, dozeParameters,
asyncSensorManager, wakeLock, mDockManager, mProximitySensor,
mProximityCheck, mock(DozeLog.class), mBroadcastDispatcher, new FakeSettings(),
- mAuthController, mExecutor, mExecutor);
+ mAuthController, mExecutor);
mTriggers.setDozeMachine(mMachine);
waitForSensorManager();
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java
index 421c6f4..9ac600a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeParametersTest.java
@@ -37,6 +37,7 @@
import com.android.systemui.SysuiTestCase;
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
import com.android.systemui.doze.DozeScreenState;
+import com.android.systemui.dump.DumpManager;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.tuner.TunerService;
@@ -61,6 +62,7 @@
@Mock private TunerService mTunerService;
@Mock private BatteryController mBatteryController;
@Mock private FeatureFlags mFeatureFlags;
+ @Mock private DumpManager mDumpManager;
@Before
public void setup() {
@@ -72,6 +74,7 @@
mPowerManager,
mBatteryController,
mTunerService,
+ mDumpManager,
mFeatureFlags
);
}