Merge "Hide Camera background running time in the battery usage screen" into sc-dev am: 3f1d329878

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15723822

Change-Id: Ie57e3be9bda2316a8ee6a59fba76043ed6e61c54
This commit is contained in:
YUKAI HUNG
2021-09-03 02:50:11 +00:00
committed by Automerger Merge Worker
4 changed files with 65 additions and 4 deletions

View File

@@ -25,6 +25,8 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.settings.overlay.FeatureFactory;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.time.Duration; import java.time.Duration;
@@ -259,7 +261,7 @@ public final class ConvertUtils {
} }
insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap); insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap);
if (purgeLowPercentageAndFakeData) { if (purgeLowPercentageAndFakeData) {
purgeLowPercentageAndFakeData(resultMap); purgeLowPercentageAndFakeData(context, resultMap);
} }
return resultMap; return resultMap;
} }
@@ -298,7 +300,12 @@ public final class ConvertUtils {
// Removes low percentage data and fake usage data, which will be zero value. // Removes low percentage data and fake usage data, which will be zero value.
private static void purgeLowPercentageAndFakeData( private static void purgeLowPercentageAndFakeData(
final Context context,
final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap) { final Map<Integer, List<BatteryDiffEntry>> indexedUsageMap) {
final List<CharSequence> backgroundUsageTimeHideList =
FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context)
.getHideBackgroundUsageTimeList(context);
for (List<BatteryDiffEntry> entries : indexedUsageMap.values()) { for (List<BatteryDiffEntry> entries : indexedUsageMap.values()) {
final Iterator<BatteryDiffEntry> iterator = entries.iterator(); final Iterator<BatteryDiffEntry> iterator = entries.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
@@ -307,6 +314,12 @@ public final class ConvertUtils {
|| FAKE_PACKAGE_NAME.equals(entry.getPackageName())) { || FAKE_PACKAGE_NAME.equals(entry.getPackageName())) {
iterator.remove(); iterator.remove();
} }
final String packageName = entry.getPackageName();
if (packageName != null
&& !backgroundUsageTimeHideList.isEmpty()
&& backgroundUsageTimeHideList.contains(packageName)) {
entry.mBackgroundUsageTimeInMs = 0;
}
} }
} }
} }

View File

@@ -23,6 +23,7 @@ import android.util.SparseIntArray;
import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper;
import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.fuelgauge.Estimate;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@@ -141,4 +142,9 @@ public interface PowerUsageFeatureProvider {
* Returns battery history data with corresponding timestamp key. * Returns battery history data with corresponding timestamp key.
*/ */
Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context); Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context);
/**
* Returns {@link List} for hidding applications background usage time.
*/
List<CharSequence> getHideBackgroundUsageTimeList(Context context);
} }

View File

@@ -26,6 +26,8 @@ import com.android.internal.os.BatterySipper;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.fuelgauge.Estimate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider { public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider {
@@ -167,4 +169,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
public Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context) { public Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context) {
return null; return null;
} }
@Override
public List<CharSequence> getHideBackgroundUsageTimeList(Context context) {
return new ArrayList<>();
}
} }

View File

@@ -49,8 +49,11 @@ import java.util.TimeZone;
public final class ConvertUtilsTest { public final class ConvertUtilsTest {
private Context mContext; private Context mContext;
@Mock private BatteryUsageStats mBatteryUsageStats;
@Mock private BatteryEntry mockBatteryEntry; @Mock
private BatteryUsageStats mBatteryUsageStats;
@Mock
private BatteryEntry mockBatteryEntry;
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider; private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
@@ -300,7 +303,7 @@ public final class ConvertUtilsTest {
final Map<Integer, List<BatteryDiffEntry>> purgedResultMap = final Map<Integer, List<BatteryDiffEntry>> purgedResultMap =
ConvertUtils.getIndexedUsageMap( ConvertUtils.getIndexedUsageMap(
mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap, mContext, timeSlotSize, batteryHistoryKeys, batteryHistoryMap,
/*purgeLowPercentageAndFakeData=*/ true); /*purgeLowPercentageAndFakeData=*/ true);
assertThat(purgedResultMap).hasSize(2); assertThat(purgedResultMap).hasSize(2);
final List<BatteryDiffEntry> entryList = purgedResultMap.get(0); final List<BatteryDiffEntry> entryList = purgedResultMap.get(0);
@@ -316,6 +319,38 @@ public final class ConvertUtilsTest {
.isEqualTo(entry.mConsumePower * ratio); .isEqualTo(entry.mConsumePower * ratio);
} }
@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 @Test
public void getLocale_nullContext_returnDefaultLocale() { public void getLocale_nullContext_returnDefaultLocale() {
assertThat(ConvertUtils.getLocale(/*context=*/ null)) assertThat(ConvertUtils.getLocale(/*context=*/ null))