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

Commit 5e672984 authored by Bill Yi's avatar Bill Yi
Browse files

Merge SP1A.211105.004 to aosp-master - DO NOT MERGE

Merged-In: I62be3678022753eaba32209c33f95edf220294f1
Merged-In: I1d17526b87d442bc3513a1e7f526fcf5ff11e881
Change-Id: I63bda2d4f97e2c35d317675624c69d45e6dfbcaa
parents 41cfaa9f 889ed9ff
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -24,6 +24,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.text.SimpleDateFormat;
@@ -288,7 +290,7 @@ public final class ConvertUtils {
        }
        insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap);
        if (purgeLowPercentageAndFakeData) {
            purgeLowPercentageAndFakeData(resultMap);
            purgeLowPercentageAndFakeData(context, resultMap);
        }
        return resultMap;
    }
@@ -327,7 +329,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()) {
@@ -336,6 +343,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
@@ -50,8 +50,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;
@@ -382,6 +385,38 @@ public final class ConvertUtilsTest {
        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
    public void getLocale_nullContext_returnDefaultLocale() {
        assertThat(ConvertUtils.getLocale(/*context=*/ null))