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

Commit 0a11568b authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Automerger Merge Worker
Browse files

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

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

Change-Id: Ie57e3be9bda2316a8ee6a59fba76043ed6e61c54
parents f25a0021 3f1d3298
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
@@ -23,6 +23,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;

/**
@@ -141,4 +142,9 @@ public interface PowerUsageFeatureProvider {
     * 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);
}
+7 −0
Original line number Diff line number Diff line
@@ -26,6 +26,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 {
@@ -167,4 +169,9 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
    public Map<Long, Map<String, BatteryHistEntry>> getBatteryHistory(Context context) {
        return null;
    }

    @Override
    public List<CharSequence> getHideBackgroundUsageTimeList(Context context) {
        return new ArrayList<>();
    }
}
+38 −3
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;
@@ -316,6 +319,38 @@ public final class ConvertUtilsTest {
            .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
    public void getLocale_nullContext_returnDefaultLocale() {
        assertThat(ConvertUtils.getLocale(/*context=*/ null))