Loading src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt +9 −8 Original line number Diff line number Diff line Loading @@ -58,19 +58,19 @@ object AppOptModeSharedPreferencesUtils { uids, packageNames, optimizationModes, expirationTimes expirationTimes, ) { uid: Int, packageName: String -> BatteryOptimizeUtils(context, uid, packageName) } /** Resets the app optimization mode event data since the query timestamp. */ @JvmStatic fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestamp: Long) = fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) = synchronized(appOptimizationModeLock) { val eventsMap = getAppOptModeEventsMap(context) val expirationUids = ArrayList<Int>(eventsMap.size) for ((uid, event) in eventsMap) { if (event.expirationTime > queryTimestamp) { if (event.expirationTime > queryTimestampMs) { continue } updateBatteryOptimizationMode( Loading Loading @@ -98,7 +98,7 @@ object AppOptModeSharedPreferencesUtils { packageNames: List<String>, optimizationModes: List<Int>, expirationTimes: LongArray, getBatteryOptimizeUtils: (Int, String) -> BatteryOptimizeUtils getBatteryOptimizeUtils: (Int, String) -> BatteryOptimizeUtils, ) = synchronized(appOptimizationModeLock) { val eventsMap = getAppOptModeEventsMap(context) Loading @@ -114,7 +114,7 @@ object AppOptModeSharedPreferencesUtils { packageName, optimizationMode, Action.EXTERNAL_UPDATE, getBatteryOptimizeUtils(uid, packageName) getBatteryOptimizeUtils(uid, packageName), ) if (originalOptMode == BatteryOptimizeUtils.MODE_UNKNOWN) { continue Loading Loading @@ -151,7 +151,8 @@ object AppOptModeSharedPreferencesUtils { packageName: String, optimizationMode: Int, action: Action, batteryOptimizeUtils: BatteryOptimizeUtils = BatteryOptimizeUtils(context, uid, packageName) batteryOptimizeUtils: BatteryOptimizeUtils = BatteryOptimizeUtils(context, uid, packageName), ): Int { if (!batteryOptimizeUtils.isOptimizeModeMutable) { Log.w(TAG, "Fail to update immutable optimization mode for: $packageName") Loading Loading @@ -190,7 +191,7 @@ object AppOptModeSharedPreferencesUtils { private fun updateSharedPreferences( context: Context, eventsMap: Map<Int, AppOptimizationModeEvent> eventsMap: Map<Int, AppOptimizationModeEvent>, ) { val sharedPreferences = getSharedPreferences(context) sharedPreferences.edit().run { Loading @@ -216,7 +217,7 @@ object AppOptModeSharedPreferencesUtils { } private fun deserializeAppOptimizationModeEvent( encodedProtoString: String encodedProtoString: String, ): AppOptimizationModeEvent { return BatteryUtils.parseProtoFromString(encodedProtoString, defaultInstance) } Loading tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt +41 −17 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class AppOptModeSharedPreferencesUtilsTest { @JvmField @Rule val mockitoRule: MockitoRule = MockitoJUnit.rule() @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule() @Spy private var context: Context = ApplicationProvider.getApplicationContext() Loading @@ -62,36 +62,48 @@ class AppOptModeSharedPreferencesUtilsTest { @Test fun updateAppOptModeExpirationInternal_withExpirationTime_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) val events = AppOptModeSharedPreferencesUtils.getAllEvents(context) assertThat(events.size).isEqualTo(1) assertAppOptimizationModeEventInfo(events.get(0), UID, PACKAGE_NAME, MODE_OPTIMIZED, 1000L) assertThat(events).hasSize(1) assertAppOptimizationModeEventInfo( events[0], UID, PACKAGE_NAME, MODE_OPTIMIZED, expirationTime = 1000L ) } @Test fun updateAppOptModeExpirationInternal_withoutExpirationTime_verifyEmptyList() { insertAppOptModeEventForTest(/* expirationTime= */ UNLIMITED_EXPIRE_TIME) insertAppOptModeEventForTest(expirationTime = UNLIMITED_EXPIRE_TIME) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty() } @Test fun deleteAppOptimizationModeEventByUid_uidNotContained_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context).size).isEqualTo(1) insertAppOptModeEventForTest(expirationTime = 1000L) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).hasSize(1) AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UNSET_UID) val events = AppOptModeSharedPreferencesUtils.getAllEvents(context) assertThat(events.size).isEqualTo(1) assertAppOptimizationModeEventInfo(events.get(0), UID, PACKAGE_NAME, MODE_OPTIMIZED, 1000L) assertThat(events).hasSize(1) assertAppOptimizationModeEventInfo( events[0], UID, PACKAGE_NAME, MODE_OPTIMIZED, expirationTime = 1000L ) } @Test fun deleteAppOptimizationModeEventByUid_uidExisting_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UID) Loading @@ -100,20 +112,32 @@ class AppOptModeSharedPreferencesUtilsTest { @Test fun resetExpiredAppOptModeBeforeTimestamp_noExpiredData_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp(context, 999L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp( context, queryTimestampMs = 999L ) val events = AppOptModeSharedPreferencesUtils.getAllEvents(context) assertThat(events.size).isEqualTo(1) assertAppOptimizationModeEventInfo(events.get(0), UID, PACKAGE_NAME, MODE_OPTIMIZED, 1000L) assertThat(events).hasSize(1) assertAppOptimizationModeEventInfo( events[0], UID, PACKAGE_NAME, MODE_OPTIMIZED, expirationTime = 1000L ) } @Test fun resetExpiredAppOptModeBeforeTimestamp_hasExpiredData_verifyEmptyList() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp(context, 1001L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp( context, queryTimestampMs = 1001L ) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty() } Loading Loading @@ -185,7 +209,7 @@ class AppOptModeSharedPreferencesUtilsTest { mutableListOf(UID), mutableListOf(PACKAGE_NAME), mutableListOf(MODE_OPTIMIZED), longArrayOf(expirationTime) longArrayOf(expirationTime), ) { _: Int, _: String -> testBatteryOptimizeUtils } Loading Loading
src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtils.kt +9 −8 Original line number Diff line number Diff line Loading @@ -58,19 +58,19 @@ object AppOptModeSharedPreferencesUtils { uids, packageNames, optimizationModes, expirationTimes expirationTimes, ) { uid: Int, packageName: String -> BatteryOptimizeUtils(context, uid, packageName) } /** Resets the app optimization mode event data since the query timestamp. */ @JvmStatic fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestamp: Long) = fun resetExpiredAppOptModeBeforeTimestamp(context: Context, queryTimestampMs: Long) = synchronized(appOptimizationModeLock) { val eventsMap = getAppOptModeEventsMap(context) val expirationUids = ArrayList<Int>(eventsMap.size) for ((uid, event) in eventsMap) { if (event.expirationTime > queryTimestamp) { if (event.expirationTime > queryTimestampMs) { continue } updateBatteryOptimizationMode( Loading Loading @@ -98,7 +98,7 @@ object AppOptModeSharedPreferencesUtils { packageNames: List<String>, optimizationModes: List<Int>, expirationTimes: LongArray, getBatteryOptimizeUtils: (Int, String) -> BatteryOptimizeUtils getBatteryOptimizeUtils: (Int, String) -> BatteryOptimizeUtils, ) = synchronized(appOptimizationModeLock) { val eventsMap = getAppOptModeEventsMap(context) Loading @@ -114,7 +114,7 @@ object AppOptModeSharedPreferencesUtils { packageName, optimizationMode, Action.EXTERNAL_UPDATE, getBatteryOptimizeUtils(uid, packageName) getBatteryOptimizeUtils(uid, packageName), ) if (originalOptMode == BatteryOptimizeUtils.MODE_UNKNOWN) { continue Loading Loading @@ -151,7 +151,8 @@ object AppOptModeSharedPreferencesUtils { packageName: String, optimizationMode: Int, action: Action, batteryOptimizeUtils: BatteryOptimizeUtils = BatteryOptimizeUtils(context, uid, packageName) batteryOptimizeUtils: BatteryOptimizeUtils = BatteryOptimizeUtils(context, uid, packageName), ): Int { if (!batteryOptimizeUtils.isOptimizeModeMutable) { Log.w(TAG, "Fail to update immutable optimization mode for: $packageName") Loading Loading @@ -190,7 +191,7 @@ object AppOptModeSharedPreferencesUtils { private fun updateSharedPreferences( context: Context, eventsMap: Map<Int, AppOptimizationModeEvent> eventsMap: Map<Int, AppOptimizationModeEvent>, ) { val sharedPreferences = getSharedPreferences(context) sharedPreferences.edit().run { Loading @@ -216,7 +217,7 @@ object AppOptModeSharedPreferencesUtils { } private fun deserializeAppOptimizationModeEvent( encodedProtoString: String encodedProtoString: String, ): AppOptimizationModeEvent { return BatteryUtils.parseProtoFromString(encodedProtoString, defaultInstance) } Loading
tests/robotests/src/com/android/settings/fuelgauge/batteryusage/AppOptModeSharedPreferencesUtilsTest.kt +41 −17 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ import org.robolectric.RobolectricTestRunner @RunWith(RobolectricTestRunner::class) class AppOptModeSharedPreferencesUtilsTest { @JvmField @Rule val mockitoRule: MockitoRule = MockitoJUnit.rule() @get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule() @Spy private var context: Context = ApplicationProvider.getApplicationContext() Loading @@ -62,36 +62,48 @@ class AppOptModeSharedPreferencesUtilsTest { @Test fun updateAppOptModeExpirationInternal_withExpirationTime_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) val events = AppOptModeSharedPreferencesUtils.getAllEvents(context) assertThat(events.size).isEqualTo(1) assertAppOptimizationModeEventInfo(events.get(0), UID, PACKAGE_NAME, MODE_OPTIMIZED, 1000L) assertThat(events).hasSize(1) assertAppOptimizationModeEventInfo( events[0], UID, PACKAGE_NAME, MODE_OPTIMIZED, expirationTime = 1000L ) } @Test fun updateAppOptModeExpirationInternal_withoutExpirationTime_verifyEmptyList() { insertAppOptModeEventForTest(/* expirationTime= */ UNLIMITED_EXPIRE_TIME) insertAppOptModeEventForTest(expirationTime = UNLIMITED_EXPIRE_TIME) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty() } @Test fun deleteAppOptimizationModeEventByUid_uidNotContained_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context).size).isEqualTo(1) insertAppOptModeEventForTest(expirationTime = 1000L) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).hasSize(1) AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UNSET_UID) val events = AppOptModeSharedPreferencesUtils.getAllEvents(context) assertThat(events.size).isEqualTo(1) assertAppOptimizationModeEventInfo(events.get(0), UID, PACKAGE_NAME, MODE_OPTIMIZED, 1000L) assertThat(events).hasSize(1) assertAppOptimizationModeEventInfo( events[0], UID, PACKAGE_NAME, MODE_OPTIMIZED, expirationTime = 1000L ) } @Test fun deleteAppOptimizationModeEventByUid_uidExisting_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) AppOptModeSharedPreferencesUtils.deleteAppOptimizationModeEventByUid(context, UID) Loading @@ -100,20 +112,32 @@ class AppOptModeSharedPreferencesUtilsTest { @Test fun resetExpiredAppOptModeBeforeTimestamp_noExpiredData_verifyData() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp(context, 999L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp( context, queryTimestampMs = 999L ) val events = AppOptModeSharedPreferencesUtils.getAllEvents(context) assertThat(events.size).isEqualTo(1) assertAppOptimizationModeEventInfo(events.get(0), UID, PACKAGE_NAME, MODE_OPTIMIZED, 1000L) assertThat(events).hasSize(1) assertAppOptimizationModeEventInfo( events[0], UID, PACKAGE_NAME, MODE_OPTIMIZED, expirationTime = 1000L ) } @Test fun resetExpiredAppOptModeBeforeTimestamp_hasExpiredData_verifyEmptyList() { insertAppOptModeEventForTest(/* expirationTime= */ 1000L) insertAppOptModeEventForTest(expirationTime = 1000L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp(context, 1001L) AppOptModeSharedPreferencesUtils.resetExpiredAppOptModeBeforeTimestamp( context, queryTimestampMs = 1001L ) assertThat(AppOptModeSharedPreferencesUtils.getAllEvents(context)).isEmpty() } Loading Loading @@ -185,7 +209,7 @@ class AppOptModeSharedPreferencesUtilsTest { mutableListOf(UID), mutableListOf(PACKAGE_NAME), mutableListOf(MODE_OPTIMIZED), longArrayOf(expirationTime) longArrayOf(expirationTime), ) { _: Int, _: String -> testBatteryOptimizeUtils } Loading