From e15e2397afeead0880de2e7ce8bf032fb6b50943 Mon Sep 17 00:00:00 2001 From: YK Hung Date: Thu, 4 Jul 2024 04:00:18 +0000 Subject: [PATCH] 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 --- .../fuelgauge/PowerUsageFeatureProvider.java | 3 +++ .../PowerUsageFeatureProviderImpl.java | 5 +++++ .../batteryusage/bugreport/LogUtils.java | 16 ++++++++++++--- .../batteryusage/bugreport/LogUtilsTest.java | 20 +++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index e12cc9ff01d..e441b85c2d3 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -166,6 +166,9 @@ public interface PowerUsageFeatureProvider { /** Whether the device is under the battery defender mode */ boolean isBatteryDefend(BatteryInfo info); + /** Whether the battery usage reattribute is eabled or not. */ + boolean isBatteryUsageReattributeEnabled(); + /** Collect and process battery reattribute data if needed. */ boolean processBatteryReattributeData( @NonNull Context context, diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 4f163a28f47..bdb236a5192 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -256,6 +256,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider return info.isLongLife && !isExtraDefend(); } + @Override + public boolean isBatteryUsageReattributeEnabled() { + return false; + } + @Override public boolean processBatteryReattributeData( @NonNull Context context, diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java index d2f3adcd9d7..45871a35b92 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java +++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtils.java @@ -38,6 +38,7 @@ import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDao; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase; import com.android.settings.fuelgauge.batteryusage.db.BatteryUsageSlotDao; import com.android.settings.fuelgauge.batteryusage.db.BatteryUsageSlotEntity; +import com.android.settings.overlay.FeatureFactory; import java.io.PrintWriter; import java.time.Clock; @@ -132,14 +133,23 @@ public final class LogUtils { } static void dumpBatteryReattributeDatabaseHist(Context context, PrintWriter writer) { - dumpBatteryReattributeDatabaseHist( - BatteryStateDatabase.getInstance(context).batteryReattributeDao(), - writer); + try { + dumpBatteryReattributeDatabaseHist( + BatteryStateDatabase.getInstance(context).batteryReattributeDao(), + writer); + } catch (Exception e) { + Log.e(TAG, "failed to run dumpBatteryReattributeDatabaseHist()", e); + } } @VisibleForTesting static void dumpBatteryReattributeDatabaseHist( BatteryReattributeDao batteryReattributeDao, PrintWriter writer) { + if (!FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider() + .isBatteryUsageReattributeEnabled()) { + writer.println("\n\tBatteryReattribute is disabled!"); + return; + } writer.println("\n\tBatteryReattribute DatabaseHistory:"); final List entities = batteryReattributeDao.getAllAfter( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java index bf2b191a65d..9b459c57131 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/bugreport/LogUtilsTest.java @@ -18,15 +18,19 @@ package com.android.settings.fuelgauge.batteryusage.bugreport; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + import android.content.Context; import androidx.test.core.app.ApplicationProvider; +import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.fuelgauge.batteryusage.BatteryReattribute; import com.android.settings.fuelgauge.batteryusage.db.BatteryReattributeDao; import com.android.settings.fuelgauge.batteryusage.db.BatteryReattributeEntity; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase; import com.android.settings.testutils.BatteryTestUtils; +import com.android.settings.testutils.FakeFeatureFactory; import org.junit.After; import org.junit.Before; @@ -48,6 +52,7 @@ public final class LogUtilsTest { private Context mContext; private BatteryStateDatabase mDatabase; private BatteryReattributeDao mBatteryReattributeDao; + private PowerUsageFeatureProvider mPowerUsageFeatureProvider; @Before public void setUp() { @@ -56,6 +61,8 @@ public final class LogUtilsTest { mTestPrintWriter = new PrintWriter(mTestStringWriter); mDatabase = BatteryTestUtils.setUpBatteryStateDatabase(mContext); mBatteryReattributeDao = mDatabase.batteryReattributeDao(); + mPowerUsageFeatureProvider = FakeFeatureFactory.setupForTest().powerUsageFeatureProvider; + when(mPowerUsageFeatureProvider.isBatteryUsageReattributeEnabled()).thenReturn(true); } @After @@ -99,4 +106,17 @@ public final class LogUtilsTest { assertThat(result).contains(batteryReattribute1.toString()); assertThat(result).contains(batteryReattribute2.toString()); } + + @Test + public void dumpBatteryReattributeDatabaseHist_featureDisable_notPrintData() { + mBatteryReattributeDao.insert(new BatteryReattributeEntity( + BatteryReattribute.getDefaultInstance())); + when(mPowerUsageFeatureProvider.isBatteryUsageReattributeEnabled()).thenReturn(false); + + LogUtils.dumpBatteryReattributeDatabaseHist(mBatteryReattributeDao, mTestPrintWriter); + + final String result = mTestStringWriter.toString(); + assertThat(result).contains("BatteryReattribute is disabled!"); + assertThat(result.contains("BatteryReattribute DatabaseHistory:")).isFalse(); + } }