Hide Camera background running time in the battery usage screen
hide camera background running time in the battery usage screen to avoid
users confuse about it, since it will standby in the backgound to sspeed
up launching time, not always running in the background
Bug: 196744910
Test: make SettingsRoboTests
Change-Id: Ia391d661bca44435fc5a68b1c86e5ca32dd0fcfe
Merged-In: Ia391d661bca44435fc5a68b1c86e5ca32dd0fcfe
diff --git a/src/com/android/settings/fuelgauge/ConvertUtils.java b/src/com/android/settings/fuelgauge/ConvertUtils.java
index 001e9e9..da84631 100644
--- a/src/com/android/settings/fuelgauge/ConvertUtils.java
+++ b/src/com/android/settings/fuelgauge/ConvertUtils.java
@@ -24,6 +24,8 @@
import androidx.annotation.VisibleForTesting;
+import com.android.settings.overlay.FeatureFactory;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.text.SimpleDateFormat;
@@ -288,7 +290,7 @@
}
insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap);
if (purgeLowPercentageAndFakeData) {
- purgeLowPercentageAndFakeData(resultMap);
+ purgeLowPercentageAndFakeData(context, resultMap);
}
return resultMap;
}
@@ -327,7 +329,12 @@
// Removes low percentage data and fake usage data, which will be zero value.
private static void purgeLowPercentageAndFakeData(
+ final Context context,
final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap) {
+ final List<CharSequence> backgroundUsageTimeHideList =
+ FeatureFactory.getFactory(context)
+ .getPowerUsageFeatureProvider(context)
+ .getHideBackgroundUsageTimeList(context);
for (List<BatteryDiffEntry> entries : indexedUsageMap.values()) {
final Iterator<BatteryDiffEntry> iterator = entries.iterator();
while (iterator.hasNext()) {
@@ -336,6 +343,12 @@
|| FAKE_PACKAGE_NAME.equals(entry.getPackageName())) {
iterator.remove();
}
+ final String packageName = entry.getPackageName();
+ if (packageName != null
+ && !backgroundUsageTimeHideList.isEmpty()
+ && backgroundUsageTimeHideList.contains(packageName)) {
+ entry.mBackgroundUsageTimeInMs = 0;
+ }
}
}
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
index 61abe6b..eff538f 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java
@@ -23,6 +23,7 @@
import com.android.internal.os.BatterySipper;
import com.android.settingslib.fuelgauge.Estimate;
+import java.util.List;
import java.util.Map;
/**
@@ -141,4 +142,9 @@
* Returns battery history data with corresponding timestamp key.
*/
Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context);
+
+ /**
+ * Returns {@link List} for hidding applications background usage time.
+ */
+ List<CharSequence> getHideBackgroundUsageTimeList(Context context);
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
index 1dcdab0..7f1bef0 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java
@@ -26,6 +26,8 @@
import com.android.internal.util.ArrayUtils;
import com.android.settingslib.fuelgauge.Estimate;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
@@ -167,4 +169,9 @@
public Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context) {
return null;
}
+
+ @Override
+ public List<CharSequence> getHideBackgroundUsageTimeList(Context context) {
+ return new ArrayList<>();
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java
index 0b1a1e3..1b9e05b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java
@@ -50,8 +50,11 @@
public final class ConvertUtilsTest {
private Context mContext;
- @Mock private BatteryUsageStats mBatteryUsageStats;
- @Mock private BatteryEntry mockBatteryEntry;
+
+ @Mock
+ private BatteryUsageStats mBatteryUsageStats;
+ @Mock
+ private BatteryEntry mockBatteryEntry;
private FakeFeatureFactory mFeatureFactory;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
@@ -301,7 +304,7 @@
final Map<Integer, List<BatteryDiffEntry>> purgedResultMap =
ConvertUtils.getIndexedUsageMap(
mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
- /*purgeLowPercentageAndFakeData=*/ true);
+ /*purgeLowPercentageAndFakeData=*/ true);
assertThat(purgedResultMap).hasSize(2);
final List<BatteryDiffEntry> entryList = purgedResultMap.get(0);
@@ -383,6 +386,38 @@
}
@Test
+ public void testGetIndexedUsageMap_hideBackgroundUsageTime_returnsExpectedResult() {
+ final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L};
+ final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap = new HashMap<>();
+ final BatteryHistEntry fakeEntry = createBatteryHistEntry(
+ ConvertUtils.FAKE_PACKAGE_NAME, "fake_label", 0, 0L, 0L, 0L);
+ // Adds the index = 0 data.
+ Map<String, BatteryHistEntry> entryMap = new HashMap<>();
+ entryMap.put(fakeEntry.getKey(), fakeEntry);
+ batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[0]), entryMap);
+ // Adds the index = 1 data.
+ entryMap = new HashMap<>();
+ entryMap.put(fakeEntry.getKey(), fakeEntry);
+ batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[1]), entryMap);
+ // Adds the index = 2 data.
+ entryMap = new HashMap<>();
+ final BatteryHistEntry entry = createBatteryHistEntry(
+ "package3", "label3", 500, 5L, 3600000L, 7200000L);
+ entryMap.put(entry.getKey(), entry);
+ batteryHistoryMap.put(Long.valueOf(batteryHistoryKeys[2]), entryMap);
+ when(mPowerUsageFeatureProvider.getHideBackgroundUsageTimeList(mContext))
+ .thenReturn(Arrays.asList((CharSequence) "package3"));
+
+ final Map<Integer, List<BatteryDiffEntry>> purgedResultMap =
+ ConvertUtils.getIndexedUsageMap(
+ mContext, /*timeSlotSize=*/ 1, batteryHistoryKeys, batteryHistoryMap,
+ /*purgeLowPercentageAndFakeData=*/ true);
+
+ final BatteryDiffEntry resultEntry = purgedResultMap.get(0).get(0);
+ assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
+ }
+
+ @Test
public void getLocale_nullContext_returnDefaultLocale() {
assertThat(ConvertUtils.getLocale(/*context=*/ null))
.isEqualTo(Locale.getDefault());