Commit Graph

1554 Commits

Author SHA1 Message Date
Jacky Wang
041bc113eb Remove MainSwitchPreference.updateStatus
NO_IFTTT=Update API

Bug: 391092187
Flag: EXEMPT library
Test: atest&manual
Change-Id: I6e31857d8ca7084c737fd69f63b33f6a58cf3022
2025-01-21 07:44:43 +08:00
Zaiyue Xue
ecb9bccc46 Create UI lifecycle aware executor factory.
The executor factory can bind with an UI page life cycle and could
auto-shutdown when the onStop().

Bug: 384795117
Test: manual
Flag: EXEMPT bug fix
Change-Id: Ibd2538fa2def86b08d3874a44f23ae2450483a6e
2025-01-08 11:58:17 +08:00
Jacky Wang
6291dd79e6 Fix flaky LifecycleAwareAsyncTaskTest
Fix: 385137513
Flag: TEST_ONLY
Test: atest SettingsRoboTests:LifecycleAwareAsyncTaskTest --rerun-until-failure 500
Change-Id: I269d2fa1c63e0b805d7d1b0710919f60c2096ec0
2024-12-23 15:31:45 +08:00
Jacky Wang
356fe97185 Fix potential OOM caused by DataProcessManager
The AsyncTasks started in DataProcessManager are not cancelled when
fragment is closed. Introduce helper class LifecycleAwareAsyncTask to
cancel AsyncTask automatically when lifecycle is stopped.

Bug: 384473507
Flag: EXEMPT bug fix
Test: Unit test & open/close battery usage screen 1000 times
Change-Id: I060f559fa85cc5feb9a42cb8dcc0581782a91d09
2024-12-17 17:17:15 +08:00
Jacky Wang
dc1a52a2ee [Catalyst] Simplify KeyValueStore API calls
NO_IFTTT=Catalyst only

Bug: 325144964
Flag: com.android.settings.flags.catalyst
Test: atest
Change-Id: I518b9c861eac6d515dfc7f0ac2d028f9395e06a1
2024-12-08 19:22:18 +08:00
mxyyiyi
7ce71c7619 [ExpressiveBattery] Replace LayoutPreference with IntroPreference.
Use IntroPreference to show apps' icon and label in
(1) App info > App battery usage page
(2)App info > App battery usage > Allow background usage

Bug: 349652542
Test: visual
Flag: EXEMPT flag by System prop
Change-Id: I44f3369e48f073d98455fcab3ccd10ffecdb8d66
2024-12-04 17:38:42 +08:00
Zaiyue Xue
8e6066f5d6 [PixelCare] Catalyst migration for battery header
NO_IFTTT=initialization

Bug: 372774754
Test: manual
Flag: com.android.settings.flags.catalyst_power_usage_summary_screen
Change-Id: Icc1c46069147830b3360a467ffc2e666dadd3ddd
2024-11-26 14:38:16 +08:00
Zaiyue Xue
47d8e1daee Remove BatteryHeaderPreferenceController usage in PowerUsageSummary.
This is a no-op refactor. This change makes the BatteryHeaderPreference Catalyst migration doesn't depend on PowerUsageSummary.

Bug: 372774754
Test: manual
Flag: EXEMPT bug fix
Change-Id: I3d8d2856036f6840a0a163c35668f55baee487ab
2024-11-26 14:36:16 +08:00
Zaiyue Xue
178eb0bd15 Split battery header text to a separated preference
This is a no-op refactor. This change makes the Catalyst migration of battery level bar easy.

Bug: 372774754
Test: manual
Flag: EXEMPT bug fix
Change-Id: I6e64e6d9b34aeca584f4d4e951c58c3e1b361f9d
2024-11-26 13:09:12 +08:00
Zaiyue Xue
457029b355 Branch the following two files to make the next cl easy to review.
BatteryHeaderPreferenceController -> BatteryHeaderTextPreferenceController
BatteryHeaderPreferenceControllerTest -> BatteryHeaderTextPreferenceControllerTest

Bug: 372774754
Test: manual
Flag: EXEMPT bug fix
Change-Id: Ifed34f26b8229598050e9ef0da506ec656a78404
2024-11-25 12:44:10 +08:00
mxyyiyi
4c5f8481bd Remove nested PreferenceCategory in Battery Usage page.
https://screenshot.googleplex.com/83LwysPKMCRoRoG

Bug: 349652542
Test: atest BatteryUsageBreakdownControllerTest
Flag: EXEMPT for simple fix
Change-Id: If97b5e3de9757b814ad72aa47f6491d29106b8a3
2024-11-18 11:09:11 +08:00
Sunny Shao
23367e380a Migrate Use Battery Saver
Test: atest BatterySaverScreenTest BatterySaverMainSwitchPreferenceTest
Bug: 377993674
Flag: com.android.settings.flags.catalyst_battery_saver_screen
Change-Id: I0c788688ed07ddcb5b2c97b2856194fd57c318e0
2024-11-11 10:24:38 +08:00
Zaiyue Xue
bdaadc471b Reafactor DataProcessManager Callback Function Logic
Keep the current thread for period job flow; only call handler back to
the main thread in UI flow.

Bug: 374570240
Fix: 374570240
Test: manual
Flag: EXEMPT bug fix
Change-Id: Ie923dbbd858c0c7000fa16a6c639f56624b2ece5
2024-10-23 13:33:17 +08:00
mxyyiyi
1732fa8db0 Redesign the update logic of Allow Background Usage Page.
- Use one Controller to manage preferences related to battery Optimization Mode.
- Move optimization mode & preferences status update logic from Fragment to Controller.

Bug: 373544647
Test: atest AdvancedPowerUsageDetailTest  PowerBackgroundUsageDetailTest BatteryOptimizationModePreferenceControllerTest BackgroundUsageAllowabilityPreferenceControllerTest
Flag: EXEMPT for simple fix
Change-Id: I2b1fed837fb4904e4118ab51c1d0cda36c0f6198
2024-10-21 16:51:14 +08:00
Jacky Wang
cc693e950f Enable catalyst test for PowerUsageSummaryScreenTest
Bug: 372774754
Flag: EXEMPT test
Test: atest
Change-Id: I5b35b0ff3416dde4781b7874f5bbc12f6b3f2475
2024-10-18 19:55:14 +08:00
Fan Wu
7ae49a51ea Rename context variable and format code
Bug: 372774754
Test: atest
Flag: EXEMPT minor fix
Change-Id: I6cb128afa54613b7c7dba97749f21976ef82a960
2024-10-18 09:15:55 +00:00
Fan Wu
136244ab2a Add Battery skeleton page and corresponding TS flag
Test: atest
Bug: 372774754
Flag: com.android.settings.flags.catalyst_power_usage_summary_screen
Change-Id: I2ce7581d0f7fdce3516fef415efdf562c63e38d4
2024-10-17 10:06:48 +00:00
Treehugger Robot
ff94f6026b Merge "Remove unneeded cast to SettingsActivity" into main 2024-10-16 09:02:46 +00:00
Fan Wu
d93efafd95 Remove unneeded cast to SettingsActivity
This is a prerequisite for using upcoming Catalyst integration test

Bug: 372774754
Test: atest
Flag: EXEMPT minor update
Change-Id: I4809df8d06f0c3d2de1c10d17e997ff80a8d4086
2024-10-16 08:02:03 +00:00
Xinyi Mao
700f7e9ab2 Merge "Take as Unrestricted Mode in the UI if current Mode is Unknown." into main 2024-10-16 05:58:28 +00:00
mxyyiyi
7bfa060c5f Take as Unrestricted Mode in the UI if current Mode is Unknown.
- Battery usage mode MODE_UNKNOWN is (1) apps in allowlist and (2) app's OP_RUN_ANY_IN_BACKGROUND = MODE_IGNORED.
For this case, mode should be displayed as Unrestricted on UI since it is in allowlist; and should be logged as unknown mode for the potential compatibility issues.

- After Backup & Restore, the MODE_UNKNOWN will be reset to Optimized(Default) Mode on target device.

Bug: 372831500
Test: manual
Test: atest BatteryOptimizeUtilsTest
Test: atest AppOptModeSharedPreferencesUtilsTest
Flag: EXEMPT for simple fix
Change-Id: Ic18e026f71a4a50ffa1711e2ca0782aeb8b33076
2024-10-15 15:53:29 +08:00
Sunny Shao
01ad71bc89 Migrate Battery Saver
Add the skeleton of the Battery Saver

Test: atest BatterySaverScreenTest
Bug: 368359126
Flag: com.android.settings.flags.catalyst_battery_saver_screen
Change-Id: I05a694c34468c01e4e032275567acbf37615c6f0
2024-10-14 17:34:10 +08:00
mxyyiyi
c3b20d3a31 Also clear the foreground service usage time for BatteryDiffEntry should hide background usage time.
- Usage time in background is the sum{bg + fgs} usage time

Bug: 371919020
Fix: 371919020
Test: atest DataProcessorTest
Flag: EXEMPT for simple fix
Change-Id: I058d8511eac7510e2df6d9ac1713824cd8dbf3ba
2024-10-09 13:31:18 +08:00
mxyyiyi
f4f78a7382 Extend sleep timeout to fix flake tests.
Fix: 363146362
Test: atest PeriodicJobReceiverTest
Flag: EXEMPT bug fix
Change-Id: If62ed640d25a3ebb3ab1ac0929e8075a2008f4cf
2024-08-30 14:29:48 +08:00
mxyyiyi
05e857de6a Migrate Spinner on Battery Usage to settingsLib Spinner widget.
Bug: 359429437
Test: visual
Test: atest BatteryUsageBreakdownControllerTest
Flag: EXEMPT bug fix
Change-Id: I71bd1f31db302d407603c71d1a1163ed22fafed8
2024-08-16 13:40:07 +08:00
mxyyiyi
427c9c3187 Migrate Tips Card in battery uasge to Settings Card.
before:
[Dark-settings]:https://screenshot.googleplex.com/56EiS3PbtRsh5RR
[Light-app]:https://screenshot.googleplex.com/8UDuFEkkrLUt53D

after:
[Dark-settings]:https://screenshot.googleplex.com/3zKxxGi2Awa6s72
[Light-settings]:https://screenshot.googleplex.com/rsgVh9P62x7itUa
[Dark-app]:https://screenshot.googleplex.com/56EiS3PbtRsh5RR
[Light-app]:https://screenshot.googleplex.com/6bfs2u43nZpHL8y

Bug: 357603119
Test: atest BatteryTipsControllerTest
Flag: EXEMPT bug fix
Change-Id: I25e3b407378b01ef9868326a005554ceb6e94181
2024-08-08 13:59:11 +00:00
mxyyiyi
59e5dc720a Add whether app optimization mode mutable in BatteryUsageDiff proto.
Bug: 350657779
Test: atest ConvertUtilsTest
Flag: EXEMPT bug fix
Change-Id: I80a5e6513e1bee88f85caeed7661b10204df8a51
2024-08-02 10:41:24 +08:00
pajacechen
a9eb7c90dd [Bugfix] Fix the failed test case
Fix the failed test case that missed from ag/28495857

Test: Unit Test
Fix: 348563863
Fix: 356152111
Flag: EXEMPT bug fix
Change-Id: I852da018c6967c6ca13e3aea72290a2d6be8bfdd
2024-07-30 10:10:35 +08:00
Treehugger Robot
c9433c2d52 Merge "Sync settingslib/datastore library" into main 2024-07-26 17:36:14 +00:00
Jacky Wang
5164cd8cbd Sync settingslib/datastore library
Bug: 325144964
Test: atest SettingsRoboTests:BatteryOptimizeUtilsTest
Flag: EXEMPT sync library source code
Change-Id: I3d980f1d36e9fce7633df23107fae612bc028b5e
2024-07-26 19:40:50 +08:00
mxyyiyi
9933688333 Clear cache data to recalculate usage slot after receiving timezone change intent.
- Clear usage slot & even hour calculate event.

Bug: 355084572
Test: atest BootBroadcastReceiverTest
Test: atest BatteryEventDaoTest
Flag: EXEMPT bug fix
Change-Id: I0bc8b71219ce8cea3987a7bfc39b69e0c6047e3d
2024-07-24 18:02:00 +08:00
mxyyiyi
d4965bd5cc Ignore broadcast intent from additional profile.
- Use isAdditionalProfile() to ignore intent from either work or private profile.

Bug: 354828134
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Flag: EXEMPT bug fix
Change-Id: Ic0c91d956e4bfcd53576629efab4be847c94155e
2024-07-23 19:31:05 +08:00
Pajace Chen
c0c3b65c5c [BugFix] Fix the incorrect state for dockdefend on battery settings page
Bug: 348563863
Change-Id: Ie5f0f3e380b9355f96898eeddc755a18a71917a0
Test: Manual Test
Test: http://ab/I16200010297673244
Flag: EXEMPT bug fix
2024-07-22 08:22:32 +00:00
Yiling Chuang
419a6a9079 FRP bypass defense in App battery usage page
Before the setup flow completion, don't allow the app info page in App battery usage to be launched.

Bug: 327748846
Test: atest SettingsRoboTests + manual test
- factory reset + launch app battery usage app info via ADB during Setup -> verify app closes
Flag : EXEMPT bugfix

Change-Id: I486820ca2afecc02729a56a3c531fb931c1907d0
2024-07-09 08:13:49 +00:00
YK Hung
e15e2397af Avoid dump BatteryReattributeDatabaseHist if the feature is disabled
Fix: 346706894
Fix: 350798552
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Flag: EXEMPT bug fix
Change-Id: I1670e2769bc71fe91a752efeea18074d53c5a017
2024-07-04 04:59:34 +00:00
Treehugger Robot
c2c6c5d058 Merge "Update the conditions of power plugged determination." into main 2024-07-02 11:56:53 +00:00
Yiling Chuang
318636d51b Update the conditions of power plugged determination.
Under charging optimization mode, use ADAPTIVE_LONGLIFE as the additional condition to check whether a device is plugged.

Bug: 349949603
Flag: EXEMPT bugfix
Test: atest SettingsRoboTests
Change-Id: Idbdfaaa1d5c54be325b6182bcda81d4282c21ba0
2024-07-02 10:54:36 +00:00
mxyyiyi
a954e914dd Add a flag to protect overwrite app optimization mode to restricted mode.
- Skip set app optimization mode to restricted if the flag disabled.

Bug: 348192536
Fix: 348192536
Test: atest
Flag: EXEMPT bug fix
Change-Id: I92d320ce1edfe9b7044afdcd058651b0d54bd6bd
2024-07-01 17:38:50 +08:00
pajacechen
daeb06c3b0 [Bug Fix] "Dock defend string and tips in settings are incorrectly" issue
Symptom: After the dock defend was triggered, the battery tips still
show "Future-Bypass" dock defend mode. It should be the "Active" dock
defend mode.

Root Cause: The original `BatteryInfo.isBatteryDefender` was implemented
by using `longlife`, due to the charging limit also reuse `longlife`
issue, we replace the implementation of `BatteryInfo.isBatteryDefender`
with HAL API call `isTempDefend` and `isDwellDefend`. However, the
dock defend also needs `longlife`, the original
`BatteryInfo.isBatteryDefender`. So the dock defend checking failed
after replacing the implementation of `BatteryInfo.isBatteryDefender`

Solution:
- Add new property isLonglife in BatteryInfo
- Replace all isBatteryDefender reference that needs isLonglife

Bug: 348563863
Test: Manual Test and robotest
Test: http://ab/I08300010291126076 (unit test)
Test: http://ab/I67800010291096764 (robo test)
Flag: EXEMPT bugfix
Change-Id: I58424927522acc29dc49261a2c24829a5b34ef85
2024-06-27 23:19:08 +08:00
Priyanka Advani
e200279002 Merge "Revert "Fix "Dock defend string and tips in settings are incorrectly" issue"" into main 2024-06-26 20:42:45 +00:00
Chaitanya Cheemala
4cfc0d8156 Revert "Fix "Dock defend string and tips in settings are incorrectly" issue"
This reverts commit d1114107df.

Reason for revert: Likely culprit for b/349578829  - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.

Change-Id: I905a439c73e120efa094f097d59f68d0bedb0648
2024-06-26 15:47:11 +00:00
YK Hung
38f3171f56 Merge "Fix "Dock defend string and tips in settings are incorrectly" issue" into main 2024-06-26 11:11:11 +00:00
YK Hung
59f9bd0630 Merge "Fetch package uid under the corresponding user handle." into main 2024-06-26 11:10:40 +00:00
Xinyi Mao
ede7f73f20 Merge "Skip load app name from PackageManager while init the BatteryEntry." into main 2024-06-26 09:05:09 +00:00
mxyyiyi
7ff146a34a Fetch package uid under the corresponding user handle.
- Make 3p-app usage entry under work profile selectable:
[Before] https://screenshot.googleplex.com/AuD3Q8hrepmxaoS
[After]  https://screenshot.googleplex.com/ACrXLcV2RYYv9aA

Bug: 346982931
Fix: 346982931
Test: atest BatteryDiffEntryTest
Flag: EXEMPT bug fix
Change-Id: Ib54df4c6d343dd32057e741b448596357ec2c12f
2024-06-26 17:03:29 +08:00
pajacechen
d1114107df Fix "Dock defend string and tips in settings are incorrectly" issue
Symptom: After the dock defend was triggered, the battery tips still
show "Future-Bypass" dock defend mode. It should be the "Active" dock
defend mode.

Root Cause: The original `BatteryInfo.isBatteryDefender` was implemented
by using `longlife`, due to the charging limit also reuse `longlife`
issue, we replace the implementation of `BatteryInfo.isBatteryDefender`
with HAL API call `isTempDefend` and `isDwellDefend`. However, the
dock defend also needs `longlife`, the original
`BatteryInfo.isBatteryDefender`. So the dock defend checking failed
after replacing the implementation of `BatteryInfo.isBatteryDefender`

Solution: Add new property isLonglife in BatteryInfo

Bug: 348563863
Test: Manual Test and robotest
Test: http://ab/I55100010289930405
Flag: EXEMPT bugfix
Change-Id: I180cde7a193d75243893471634bab5f354c1623b
2024-06-26 16:38:14 +08:00
mxyyiyi
13988cec01 Skip load app name from PackageManager while init the BatteryEntry.
- getApplicationLabel is time-consuming.
[Before]
https://pprof.corp.google.com/?id=bade2601da25f6169b0685a3e2a3e5cc
https://screenshot.googleplex.com/86R5DhMgcyQakys
[After]
https://pprof.corp.google.com/?id=2ccb1e88222e96db1fbcc072470a254c
https://screenshot.googleplex.com/7QviDFSpgzoQcg6

Bug: 349120408
Fix: 349120408
Test: atest + pprof
Flag: EXEMPT bug fix
Change-Id: I1eed60cea9c5bd3f77f38993f7d04906aa811da5
2024-06-26 15:49:30 +08:00
YK Hung
bc93a6a146 Reattribute data into other apps as the final result (4/5)
Bug: 346706894
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage
Flag: EXEMPT bug fix
Change-Id: I8b8a988df2718b64cd752915205db687ffe9d559
2024-06-26 06:25:15 +00:00
YK Hung
d226a97617 Dump the BatteryReattribute from the database into bugreport (2/5)
Example:

    BatteryReattributeEntity{
    	Jun 18, 2024, 16:22:51
    	Jun 18, 2024, 16:23:01
    reattribute_data {
      key: 1001
      value: 0.1
    }
    reattribute_data {
      key: 1002
      value: 0.99
    }
    timestamp_end: 1718727781368
    timestamp_start: 1718727771368
    }

    BatteryReattributeEntity{
    	Jun 18, 2024, 16:22:31
    	Jun 18, 2024, 16:22:51
    reattribute_data {
      key: 1003
      value: 1.0
    }
    timestamp_end: 1718727771368
    timestamp_start: 1718727751368
    }

Bug: 346706894
Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage.bugreport
Flag: EXEMPT bug fix
Change-Id: Ie2544b9f43e399d87eb29354b401834372c3a9f7
2024-06-18 16:37:55 +00:00
Treehugger Robot
a3894e6761 Merge "Add new database table and proto for battery usage reattribution (2/5)" into main 2024-06-17 11:28:54 +00:00