Merge "Hide Camera background running time in the battery usage screen" into sc-dev
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());