Commit Graph

21 Commits

Author SHA1 Message Date
ykhung
ef66549e64 Add a mechanism to log battery usage periodic job events
Example history log:
      	Jul 07, 2023, 15:28:51 SCHEDULE_JOB triggerTime=Jul 07, 2023, 16:00:00
      	Jul 07, 2023, 15:32:16 FETCH_USAGE_DATA
      	Jul 07, 2023, 15:32:17 INSERT_USAGE_DATA size=37
      	Jul 07, 2023, 15:43:45 FETCH_USAGE_DATA
      	Jul 07, 2023, 15:43:48 INSERT_USAGE_DATA size=47
      	Jul 07, 2023, 15:43:49 SCHEDULE_JOB triggerTime=Jul 07, 2023, 16:00:00

Bug: 284893240
Test: make test RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge
Change-Id: I45a1ce0ce9b70f095702727e53d7b7ce8824abdb
2023-07-07 17:47:19 +08:00
ykhung
24cbb2c0aa Limit the optimization mode restore mechanism for specific conditions
Limit the app optimization mode restore mechanism is enabled by checking
the isValidToRestoreOptimizationMode() method (default false)

Bug: 280192659
Test: make test RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.BatteryBackupHelperTest
Change-Id: I90a438a15905578336bc46ec7cd92d3bbe2858b7
2023-05-16 18:40:11 +08:00
ykhung
cad41681d6 Add device build information in the backup stage
Insert the device build information in the battery optimization mode
backup stage, such that we can use it to decide whether we should
restore the data in the targeted device or not

Bug: 192523697
Test: make test RunSettingsRoboTests
ROBOTEST_FILTER=com.android.settings.fuelgauge.*

Change-Id: I3ab76e013ea9aca4d336a62e0c7cb6882c5b5085
2023-05-16 11:07:31 +08:00
ykhung
2c125d29a3 Remove useless optimization mode backup for FULL_POWER_LIST
Remove the useless backup for the FULL_POWER_LIST, since we will not use
it to restore data, only backup the optimization_mode_list is enough

Test: presubmit
Bug: 192523697
Change-Id: I95f1f41732b8aff090e8b722896d153f6181a6ac
2023-05-15 23:45:16 +08:00
ykhung
0cd24adec5 Add allowlist mechanism for battery optimization mode
Add a mechanism to add package name into the allowlist to avoid users
change the battery optimization modes for specific apps in the list

https://screenshot.googleplex.com/8hrHCcTh5bNYXqp

Bug: 281566984
Test: make test RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.*
Change-Id: I8efa6a55646d761f5bee3667a59b38ab68c74bc1
2023-05-15 14:28:49 +08:00
ykhung
8f56114489 Record app optimization mode backup into BatteryHistoricalLog
App optimization mode format:
https://screenshot.googleplex.com/di9DDzBfYf7ihfV

App optimization mode backup format:
https://screenshot.googleplex.com/GkVW5HrgGvmv5yh

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I60a9a76a8ffc89d625ee3f77c138a19181c81c38
2023-05-11 10:48:47 +08:00
ykhung
981726c0e7 Move duplicate operations in the BackupHelper to OptimizeUtils
Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current
adb shell bmgr restore 34bbf79f36c8ed43 com.android.settings

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I2bc8842849998841aa38af3564f51bb81606c8cf
2023-05-10 08:41:58 +00:00
Alex Johnston
2747dc6e8c Implement OP_SYSTEM_EXEMPT_FROM_POWER_RESTRICTIONS exemption
OP_SYSTEM_EXEMPT_FROM_POWER_RESTRICTIONS details:
* An app with this appop will be made exempt from all
  power restrictions, including app standby and doze.
* In addition, the app will be able to start fgs from
  the bg, and the user will not be able to stop fgs
  run by the app.

Changes:
* Implement the OP_SYSTEM_EXEMPT_FROM_POWER_RESTRICTIONS

Bug: 246330879
Test: atest PowerAllowlistBackendTest

Manual testing:
- Give OP_SYSTEM_EXEMPT_FROM_POWER_RESTRICTIONS appop to TestDPC app
- Verify the app can start fg services from the bg
- Verify fgs started by the app cannot be stopped
- Verify the app cannot be put into background restricted via Settings

Change-Id: If9e76076c59195f1e6e5f3eee3c8e7a0c754d8de
2023-02-10 13:37:38 +00:00
ykhung
d66fd82c35 Verify and reset invalid battery setting in the data restore stage
Verify and reset invalid battery setting configuration in the data
restore stage to avoid resoring invalid configuration from other devices

Bug: 258243197
Test: make RunSettingsRoboTests
Change-Id: I1a0febd2ad527147e4e9e9c77734c4b51963263a
2022-11-14 01:51:46 +00:00
Wesley Wang
d90026d184 Add BatteryHistoricalLogUtil class
- Impl optimize mode log mechanism to record optimize setup flow
 - Log optimize action with MANUAL, APPLY, RESET and RESTORE
 - Use proto file to serialize logs
 sample result: https://screenshot.googleplex.com/5KPrHVGb4pMvS7V.png

Bug: 241735485
Test: make SettingsRoboTests
Change-Id: I879663de4cf45d0cfb9cd7eee957eeb65addfbe1
2022-11-04 18:09:11 +08:00
Kuan Wang
4028e6123c Reset Optimization Mode of apps when users reset app settings.
Fix the issue that Optimization Mode is not reset when users click the
"Reset apps" button in the setting.

Bug: 222037028
Test: make RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.fuelgauge" + emulator
Change-Id: I22fb8aa19e284e11882b2920b77b544dee4cc33c
2022-05-16 05:01:20 +00:00
ykhung
c8a63b3416 Fix broken tests: com.android.settings.fuelgauge
Bug: 215064709
Fixes: 215064709
Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.fuelgauge"
Change-Id: I79a27b4fcef3a21207b37db422d983ae9d521b45
2022-01-23 16:28:31 +08:00
Wesley.CW Wang
151b88f76f Optimize battery optimize page control flow
- Post the setup logic into background and setup once only when leaving
 this page, this can improve the performance since we won't setup
 every time when switching preference

Bug: 195306545
Bug: 199892006
Test: make SettingsRoboTests
Change-Id: I1c3ee4673cf5cdba0abe39f208dfb1412082c579
2021-11-01 14:52:42 +08:00
YUKAI HUNG
b1e10399cc [B&R] avoid to backup & restore app which is in the PowerSaveWhitelistExceptIdle
This reverts commit 9de5fe158d.

Reason for revert: revert it too based on ag/16048452

Change-Id: I97ffcfcbc37fb4a99e66213023b95af759d1ed3e
2021-10-14 09:34:27 +00:00
ykhung
9de5fe158d [B&R] avoid to backup & restore app which is in the PowerSaveWhitelistExceptIdle
BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy method name

Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current
adb shell bmgr restore 3e9867a7660315b8 com.android.settings

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I78f34870af3146698e6d1b9fbc5ec4385a8d5384
2021-09-23 17:29:22 +08:00
ykhung
adec23a106 [B&R] restore the backup data for app optimization mode back
BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy method name

Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current
adb shell bmgr restore 3e9867a7660315b8 com.android.settings

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: Ia35f8caa8fe2408be28c3494785a174a1aeb11da
2021-08-30 06:45:26 +00:00
ykhung
a90496e92e [B&R] ignore backup system app or default app optimization modes
Avoid backup system app or default app optimization modes, since all of
them are using the MODE_UNRESTRICTED in default, and the system or
default apps may be different in the different devices.

BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy method name

Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I0862ee31fcfa3bece15c2d4fdef5b0ea70235967
2021-08-25 15:01:52 +00:00
ykhung
0ab0a3af56 Refactor BatteryOptimizeUtils from enum to @IntDef
Based on the Android API Council guideline, we should avoid using the
Enum structure to define the constant definition.
go/android-api-guidelines#avoid-enum

Bug: 197595292
Test: make SettingsRoboTests
Change-Id: I4b22f0abde7f4ce2c3a0b076db786e619783d93e
Merged-In: I4b22f0abde7f4ce2c3a0b076db786e619783d93e
2021-08-24 12:04:31 +00:00
ykhung
37ddf4bc3e [B&R] backup the battery optimization mode for installed apps
BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy method name

Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I4671e48a9d3b315362b451384db637d5cae36a4d
2021-08-23 12:32:07 +08:00
ykhung
7cbc683d3e [B&R] backup the getFullPowerWhitelist() for battery setting
BYPASS_INCLUSIVE_LANGUAGE_REASON=legacy method name

Test command for backup manager:
adb shell bmgr backupnow com.android.settings
adb shell dumpsys backup | grep Current

Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I2d5c51b5b5788d703a233f5df719a298382feb98
2021-08-19 23:59:21 +00:00
ykhung
96e9685687 Add a skeleton to support battery configucation backup/restore
Bug: 192523697
Test: make SettingsRoboTests
Change-Id: I559eed40b05b73e7af5e091115afb11c4ba51068
2021-08-13 20:25:09 +08:00