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
This commit is contained in:
ykhung
2021-08-30 17:07:53 +08:00
committed by YUKAI HUNG
parent 31208c4948
commit 4e3f692164
4 changed files with 65 additions and 4 deletions

View File

@@ -24,6 +24,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.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -288,7 +290,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;
} }
@@ -327,7 +329,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()) {
@@ -336,6 +343,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

@@ -50,8 +50,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;
@@ -382,6 +385,38 @@ public final class ConvertUtilsTest {
assertThat(ConvertUtils.sLocaleForHour).isEqualTo(new Locale("en_US")); assertThat(ConvertUtils.sLocaleForHour).isEqualTo(new Locale("en_US"));
} }
@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))