From 08a3aa7f336ffdfc803f7835d235d6167c43ffdc Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Wed, 19 Mar 2025 17:49:16 +0800 Subject: [PATCH] Support phonetype control for Settings Battery database retention time Bug: 404740486 Fix: 404740486 Test: atest Flag: EXEMPT bug fix Change-Id: Ifc9032e19a5b26e307d1426ea5c07de84e1613f4 --- .../settings/fuelgauge/PowerUsageFeatureProvider.java | 3 +++ .../fuelgauge/PowerUsageFeatureProviderImpl.java | 5 +++++ .../settings/fuelgauge/batteryusage/DatabaseUtils.java | 7 +++++-- .../fuelgauge/batteryusage/PeriodicJobReceiverTest.java | 9 +++++++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index e441b85c2d3..004fc74ae8f 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -64,6 +64,9 @@ public interface PowerUsageFeatureProvider { /** Returns an allowlist of app names combined into the system-apps item */ List getSystemAppsAllowlist(); + /** Returns the data retention days in the database */ + int getDataRetentionDays(); + /** Check whether location setting is enabled */ boolean isLocationSettingEnabled(String[] packages); diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index bdb236a5192..903ae64b489 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -118,6 +118,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider return new ArrayList<>(); } + @Override + public int getDataRetentionDays() { + return 9; + } + @Override public boolean isLocationSettingEnabled(String[] packages) { return false; diff --git a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java index 6cfe115f5c3..1d26d65c8bd 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java +++ b/src/com/android/settings/fuelgauge/batteryusage/DatabaseUtils.java @@ -45,6 +45,7 @@ import com.android.settings.fuelgauge.BatteryUsageHistoricalLogEntry.Action; import com.android.settings.fuelgauge.BatteryUtils; import com.android.settings.fuelgauge.batteryusage.bugreport.BatteryUsageLogUtils; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase; +import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.fuelgauge.BatteryStatus; import java.io.PrintWriter; @@ -67,7 +68,6 @@ public final class DatabaseUtils { private static final String SHARED_PREFS_FILE = "battery_usage_shared_prefs"; private static final long INVALID_TIMESTAMP = 0L; - static final int DATA_RETENTION_INTERVAL_DAY = 9; static final String KEY_LAST_LOAD_FULL_CHARGE_TIME = "last_load_full_charge_time"; static final String KEY_LAST_UPLOAD_FULL_CHARGE_TIME = "last_upload_full_charge_time"; static final String KEY_LAST_USAGE_SOURCE = "last_usage_source"; @@ -468,11 +468,14 @@ public final class DatabaseUtils { AsyncTask.execute( () -> { try { + final int dataRetentionDays = + FeatureFactory.getFeatureFactory() + .getPowerUsageFeatureProvider().getDataRetentionDays(); final BatteryStateDatabase database = BatteryStateDatabase.getInstance(context.getApplicationContext()); final long earliestTimestamp = Clock.systemUTC().millis() - - Duration.ofDays(DATA_RETENTION_INTERVAL_DAY).toMillis(); + - Duration.ofDays(dataRetentionDays).toMillis(); database.appUsageEventDao().clearAllBefore(earliestTimestamp); database.batteryEventDao().clearAllBefore(earliestTimestamp); database.batteryStateDao().clearAllBefore(earliestTimestamp); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java index 82121660c19..338bab89a48 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiverTest.java @@ -32,6 +32,7 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDao; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.testutils.BatteryTestUtils; import org.junit.After; @@ -104,7 +105,9 @@ public final class PeriodicJobReceiverTest { @Test public void onReceive_containsExpiredData_clearsExpiredDataFromDatabase() throws InterruptedException { - insertExpiredData(/* shiftDay= */ DatabaseUtils.DATA_RETENTION_INTERVAL_DAY); + int dataRetentionDays = FeatureFactory.getFeatureFactory() + .getPowerUsageFeatureProvider().getDataRetentionDays(); + insertExpiredData(/* shiftDay= */ dataRetentionDays); mReceiver.onReceive(mContext, JOB_UPDATE_INTENT); @@ -115,7 +118,9 @@ public final class PeriodicJobReceiverTest { @Test public void onReceive_withoutExpiredData_notClearsExpiredDataFromDatabase() throws InterruptedException { - insertExpiredData(/* shiftDay= */ DatabaseUtils.DATA_RETENTION_INTERVAL_DAY - 1); + int dataRetentionDays = FeatureFactory.getFeatureFactory() + .getPowerUsageFeatureProvider().getDataRetentionDays(); + insertExpiredData(dataRetentionDays - 1); mReceiver.onReceive(mContext, JOB_UPDATE_INTENT);