From 78386ab1ca78e317278136d940091dc1328fb2c0 Mon Sep 17 00:00:00 2001 From: Beverly Date: Mon, 29 Mar 2021 17:42:42 -0400 Subject: [PATCH] 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 --- packages/SystemUI/res/values/config.xml | 17 +++++ .../android/systemui/doze/DozeSensors.java | 44 ++++++++++++- .../android/systemui/doze/DozeTriggers.java | 32 +++++----- .../statusbar/phone/DozeParameters.java | 63 ++++++++++++++----- .../systemui/doze/DozeConfigurationUtil.java | 3 + .../systemui/doze/DozeSensorsTest.java | 25 +++++++- .../systemui/doze/DozeTriggersTest.java | 17 ++--- .../statusbar/phone/DozeParametersTest.java | 3 + 8 files changed, 161 insertions(+), 43 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 6e61148f4ac87..4689fb8f413a5 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -174,6 +174,23 @@ true + + false + + + true + + + true + true diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index b7f6e2bb965a0..5cea31b5a905e 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 @@ public class DozeSensors { 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 @@ public class DozeSensors { mSecureSettings = secureSettings; mCallback = callback; mProximitySensor = proximitySensor; + mSelectivelyRegisterProxSensors = dozeParameters.getSelectivelyRegisterSensorsUsingProx(); + mListeningProxSensors = !mSelectivelyRegisterProxSensors; boolean udfpsEnrolled = authController.isUdfpsEnrolled(KeyguardUpdateMonitor.getCurrentUser()); @@ -131,6 +137,7 @@ public class DozeSensors { DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */, false /* touchscreen */, false /* ignoresSetting */, + false /* requires prox */, dozeLog), new TriggerSensor( findSensorWithType(config.doubleTapSensorType()), @@ -143,10 +150,13 @@ public class DozeSensors { 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 @@ public class DozeSensors { 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 @@ public class DozeSensors { 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), @@ -254,6 +268,23 @@ public class DozeSensors { updateListening(); } + /** + * 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. */ @@ -261,7 +292,8 @@ public class DozeSensors { 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 class DozeSensors { 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 @@ public class DozeSensors { 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 @@ public class DozeSensors { 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 @@ public class DozeSensors { 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 04b46705226f7..c966d778b7ded 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.internal.logging.nano.MetricsProto.MetricsEvent; 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 @@ public class DozeTriggers implements DozeMachine.Part { 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 @@ public class DozeTriggers implements DozeMachine.Part { @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 @@ public class DozeTriggers implements DozeMachine.Part { mBroadcastDispatcher = broadcastDispatcher; mAuthController = authController; mMainExecutor = mainExecutor; - mBgExecutor = bgExecutor; } @Override @@ -459,7 +457,7 @@ public class DozeTriggers implements DozeMachine.Part { 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 @@ public class DozeTriggers implements DozeMachine.Part { 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 @@ public class DozeTriggers implements DozeMachine.Part { mDozeSensors.setListening(false, false); mDozeSensors.setProxListening(false); mWantSensors = false; - mWantProx = false; + mWantProxSensor = false; mWantTouchScreenSensors = false; break; default: @@ -501,10 +499,10 @@ public class DozeTriggers implements DozeMachine.Part { @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 c23f1ad6f9c9e..86ef0a727831e 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.os.UserHandle; 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 @@ import javax.inject.Inject; */ @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 @@ public class DozeParameters implements TunerService.Tunable, 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 @@ public class DozeParameters implements TunerService.Tunable, 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 @@ public class DozeParameters implements TunerService.Tunable, 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 @@ public class DozeParameters implements TunerService.Tunable, 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 1aeb0d8a5361b..fe2103ccc5574 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 @@ public class DozeConfigurationUtil { 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 2320f4ee2b60b..0c94f09c8572a 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 @@ public class DozeSensorsTest extends SysuiTestCase { private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener; private TestableLooper mTestableLooper; private DozeSensors mDozeSensors; + private TriggerSensor mSensorTap; @Before public void setUp() { @@ -149,6 +152,24 @@ public class DozeSensorsTest extends SysuiTestCase { 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 @@ public class DozeSensorsTest extends SysuiTestCase { && ((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 1817fdfd4cdca..8eb0e9c5d0ab7 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.spy; 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 @@ public class DozeTriggersTest extends SysuiTestCase { @Mock private DozeHost mHost; @Mock - private AlarmManager mAlarmManager; - @Mock private BroadcastDispatcher mBroadcastDispatcher; @Mock private DockManager mDockManager; @@ -89,8 +86,14 @@ public class DozeTriggersTest extends SysuiTestCase { @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 @@ public class DozeTriggersTest extends SysuiTestCase { 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 421c6f4aab0b4..9ac600afe9909 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 androidx.test.runner.AndroidJUnit4; 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 @@ public class DozeParametersTest extends SysuiTestCase { @Mock private TunerService mTunerService; @Mock private BatteryController mBatteryController; @Mock private FeatureFlags mFeatureFlags; + @Mock private DumpManager mDumpManager; @Before public void setup() { @@ -72,6 +74,7 @@ public class DozeParametersTest extends SysuiTestCase { mPowerManager, mBatteryController, mTunerService, + mDumpManager, mFeatureFlags ); }