Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2401ec42 authored by ykhung's avatar ykhung Committed by YUKAI HUNG
Browse files

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
parent ef51aec9
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import android.util.Log;

import androidx.annotation.VisibleForTesting;

import com.android.settings.overlay.FeatureFactory;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.time.Duration;
@@ -259,7 +261,7 @@ public final class ConvertUtils {
        }
        insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap);
        if (purgeLowPercentageAndFakeData) {
            purgeLowPercentageAndFakeData(resultMap);
            purgeLowPercentageAndFakeData(context, resultMap);
        }
        return resultMap;
    }
@@ -298,7 +300,12 @@ public final class ConvertUtils {

    // 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()) {
@@ -307,6 +314,12 @@ public final class ConvertUtils {
                        || FAKE_PACKAGE_NAME.equals(entry.getPackageName())) {
                    iterator.remove();
                }
                final String packageName = entry.getPackageName();
                if (packageName != null
                        && !backgroundUsageTimeHideList.isEmpty()
                        && backgroundUsageTimeHideList.contains(packageName)) {
                  entry.mBackgroundUsageTimeInMs = 0;
                }
            }
        }
    }
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.SparseIntArray;
import com.android.internal.os.BatterySipper;
import com.android.settingslib.fuelgauge.Estimate;

import java.util.List;
import java.util.Map;

/**
@@ -147,4 +148,9 @@ public interface PowerUsageFeatureProvider {
     * Returns {@link Uri} to monitor battery history data is update.
     */
    Uri getBatteryHistoryUri();

    /**
     * Returns {@link List} for hidding applications background usage time.
     */
    List<CharSequence> getHideBackgroundUsageTimeList(Context context);
}
+7 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@ import com.android.internal.os.BatterySipper;
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 {
@@ -173,4 +175,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
    public Uri getBatteryHistoryUri() {
        return null;
    }

    @Override
    public List<CharSequence> getHideBackgroundUsageTimeList(Context context) {
        return new ArrayList<>();
    }
}
+43 −8
Original line number Diff line number Diff line
@@ -49,8 +49,11 @@ import java.util.TimeZone;
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;
@@ -64,7 +67,7 @@ public final class ConvertUtilsTest {
    }

    @Test
    public void testConvert_returnsExpectedContentValues() {
    public void convert_returnsExpectedContentValues() {
        final int expectedType = 3;
        when(mockBatteryEntry.getUid()).thenReturn(1001);
        when(mockBatteryEntry.getLabel()).thenReturn("Settings");
@@ -121,7 +124,7 @@ public final class ConvertUtilsTest {
    }

    @Test
    public void testConvert_nullBatteryEntry_returnsExpectedContentValues() {
    public void convert_nullBatteryEntry_returnsExpectedContentValues() {
        final ContentValues values =
            ConvertUtils.convert(
                /*entry=*/ null,
@@ -148,7 +151,7 @@ public final class ConvertUtilsTest {
    }

    @Test
    public void testGetIndexedUsageMap_nullOrEmptyHistoryMap_returnEmptyCollection() {
    public void getIndexedUsageMap_nullOrEmptyHistoryMap_returnEmptyCollection() {
        final int timeSlotSize = 2;
        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L, 104L, 105L};

@@ -163,7 +166,7 @@ public final class ConvertUtilsTest {
            .isEmpty();
    }
    @Test
    public void testGetIndexedUsageMap_returnsExpectedResult() {
    public void getIndexedUsageMap_returnsExpectedResult() {
        // Creates the fake testing data.
        final int timeSlotSize = 2;
        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L, 104L, 105L};
@@ -275,7 +278,7 @@ public final class ConvertUtilsTest {
    }

    @Test
    public void testGetIndexedUsageMap_usageTimeExceed_returnsExpectedResult() {
    public void getIndexedUsageMap_usageTimeExceed_returnsExpectedResult() {
        final int timeSlotSize = 1;
        final long[] batteryHistoryKeys = new long[] {101L, 102L, 103L};
        final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
@@ -316,6 +319,38 @@ public final class ConvertUtilsTest {
            .isEqualTo(entry.mConsumePower * ratio);
    }

    @Test
    public void getIndexedUsageMap_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))