From f1602f61e2b876f12f73798dd9d106f821092028 Mon Sep 17 00:00:00 2001 From: Robert Horvath Date: Tue, 1 Mar 2022 23:19:37 +0100 Subject: [PATCH] Add test for setLowPowerStandbyActiveDuringMaintenance Bug: 220029494 Test: atest PowerManagerServiceTest Change-Id: Ie30690cf9ee68da9fd1e543ab1db4a7fed317129 --- .../power/LowPowerStandbyController.java | 10 +++++++--- .../server/power/PowerManagerServiceTest.java | 18 ++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/power/LowPowerStandbyController.java b/services/core/java/com/android/server/power/LowPowerStandbyController.java index 2d2bad27ecd3b..5964fa49f0357 100644 --- a/services/core/java/com/android/server/power/LowPowerStandbyController.java +++ b/services/core/java/com/android/server/power/LowPowerStandbyController.java @@ -68,7 +68,7 @@ import java.util.Arrays; * * @hide */ -public final class LowPowerStandbyController { +public class LowPowerStandbyController { private static final String TAG = "LowPowerStandbyController"; private static final boolean DEBUG = false; private static final boolean DEFAULT_ACTIVE_DURING_MAINTENANCE = false; @@ -173,7 +173,9 @@ public final class LowPowerStandbyController { mSettingsObserver = new SettingsObserver(mHandler); } - void systemReady() { + /** Call when system services are ready */ + @VisibleForTesting + public void systemReady() { final Resources resources = mContext.getResources(); synchronized (mLock) { mSupportedConfig = resources.getBoolean( @@ -435,7 +437,9 @@ public final class LowPowerStandbyController { } } - void setActiveDuringMaintenance(boolean activeDuringMaintenance) { + /** Set whether Low Power Standby should be active during doze maintenance mode. */ + @VisibleForTesting + public void setActiveDuringMaintenance(boolean activeDuringMaintenance) { synchronized (mLock) { if (!mSupportedConfig) { Slog.w(TAG, "Low Power Standby settings cannot be changed " diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java index f2495e1545b5d..9ff7d69e09a61 100644 --- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java @@ -71,7 +71,6 @@ import android.os.IWakeLockCallback; import android.os.Looper; import android.os.PowerManager; import android.os.PowerSaveState; -import android.os.SystemClock; import android.os.UserHandle; import android.os.test.TestLooper; import android.provider.Settings; @@ -144,6 +143,7 @@ public class PowerManagerServiceTest { @Mock private AmbientDisplayConfiguration mAmbientDisplayConfigurationMock; @Mock private SystemPropertiesWrapper mSystemPropertiesMock; @Mock private AppOpsManager mAppOpsManagerMock; + @Mock private LowPowerStandbyController mLowPowerStandbyControllerMock; @Mock private InattentiveSleepWarningController mInattentiveSleepWarningControllerMock; @@ -298,8 +298,7 @@ public class PowerManagerServiceTest { @Override LowPowerStandbyController createLowPowerStandbyController(Context context, Looper looper) { - return new LowPowerStandbyController(context, mTestLooper.getLooper(), - SystemClock::elapsedRealtime); + return mLowPowerStandbyControllerMock; } @Override @@ -316,7 +315,6 @@ public class PowerManagerServiceTest { LocalServices.removeServiceForTest(DisplayManagerInternal.class); LocalServices.removeServiceForTest(BatteryManagerInternal.class); LocalServices.removeServiceForTest(ActivityManagerInternal.class); - LocalServices.removeServiceForTest(LowPowerStandbyControllerInternal.class); FakeSettingsProvider.clearSettingsProvider(); } @@ -1888,6 +1886,18 @@ public class PowerManagerServiceTest { assertThat(wakeLock.mDisabled).isFalse(); } + @Test + public void testSetLowPowerStandbyActiveDuringMaintenance_redirectsCallToNativeWrapper() { + createService(); + startSystem(); + + mService.getBinderServiceInstance().setLowPowerStandbyActiveDuringMaintenance(true); + verify(mLowPowerStandbyControllerMock).setActiveDuringMaintenance(true); + + mService.getBinderServiceInstance().setLowPowerStandbyActiveDuringMaintenance(false); + verify(mLowPowerStandbyControllerMock).setActiveDuringMaintenance(false); + } + private WakeLock acquireWakeLock(String tag, int flags) { IBinder token = new Binder(); String packageName = "pkg.name";