From 0dc50c4556c7981191fe63e035f139ba2b67bf1c Mon Sep 17 00:00:00 2001 From: Fan Wu Date: Fri, 29 Nov 2024 02:10:30 +0000 Subject: [PATCH] Update BatteryHeaderPreference with storage and read permit Bug: 372774754 Test: atest and devtool test NO_IFTTT=initial implementation Flag: com.android.settings.flags.catalyst_power_usage_summary_screen Change-Id: Idcf2241ccd52b2a8f19c1bb22577d7551ea1bc56 --- res/xml/power_usage_summary.xml | 1 - .../fuelgauge/BatteryHeaderPreference.kt | 51 +++++++++++++++---- 2 files changed, 41 insertions(+), 11 deletions(-) diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml index c7cf873f017..21a836d6d9a 100644 --- a/res/xml/power_usage_summary.xml +++ b/res/xml/power_usage_summary.xml @@ -26,7 +26,6 @@ android:title="@string/summary_placeholder" android:selectable="false" android:paddingBottom="0px" - android:persistent="false" settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" /> , PreferenceMetadata, PreferenceBinding, - PreferenceLifecycleProvider { + PreferenceLifecycleProvider, + RangeValue { - @VisibleForTesting - var batteryBroadcastReceiver: BatteryBroadcastReceiver? = null + @VisibleForTesting var batteryBroadcastReceiver: BatteryBroadcastReceiver? = null override val key: String get() = KEY @@ -58,25 +64,50 @@ class BatteryHeaderPreference : override fun onCreate(context: PreferenceLifecycleContext) { super.onCreate(context) - batteryBroadcastReceiver = BatteryBroadcastReceiver(context).apply { - setBatteryChangedListener { - if (it != BATTERY_NOT_PRESENT) { - context.notifyPreferenceChange(KEY) + batteryBroadcastReceiver = + BatteryBroadcastReceiver(context).apply { + setBatteryChangedListener { + if (it != BATTERY_NOT_PRESENT) { + context.notifyPreferenceChange(KEY) + } } } - } } override fun onStart(context: PreferenceLifecycleContext) { super.onStart(context) - batteryBroadcastReceiver?.register(); + batteryBroadcastReceiver?.register() } override fun onStop(context: PreferenceLifecycleContext) { super.onStop(context) - batteryBroadcastReceiver?.unRegister(); + batteryBroadcastReceiver?.unRegister() } + override fun storage(context: Context): KeyValueStore = + object : NoOpKeyedObservable(), KeyValueStore { + override fun contains(key: String) = BatteryUtils.getBatteryIntent(context) != null + + @Suppress("UNCHECKED_CAST") + override fun getValue(key: String, valueType: Class): T? { + val batteryIntent = BatteryUtils.getBatteryIntent(context) ?: return null + return Utils.getBatteryLevel(batteryIntent) as T + } + + override fun setValue(key: String, valueType: Class, value: T?) = + throw UnsupportedOperationException() + } + + override fun getMinValue(context: Context): Int = 0 + + override fun getMaxValue(context: Context): Int = 100 + + override fun getReadPermit(context: Context, myUid: Int, callingUid: Int) = + ReadWritePermit.ALLOW + + override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) = + ReadWritePermit.DISALLOW + companion object { private const val KEY = "battery_header" private const val BATTERY_MAX_LEVEL: Long = 100L