Loading src/com/android/settings/fuelgauge/ConvertUtils.java +14 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -288,7 +290,7 @@ public final class ConvertUtils { } insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap); if (purgeLowPercentageAndFakeData) { purgeLowPercentageAndFakeData(resultMap); purgeLowPercentageAndFakeData(context, resultMap); } return resultMap; } Loading Loading @@ -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()) { Loading @@ -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; } } } } Loading src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +6 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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); } src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +7 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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<>(); } } tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java +38 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) Loading Loading
src/com/android/settings/fuelgauge/ConvertUtils.java +14 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -288,7 +290,7 @@ public final class ConvertUtils { } insert24HoursData(BatteryChartView.SELECTED_INDEX_ALL, resultMap); if (purgeLowPercentageAndFakeData) { purgeLowPercentageAndFakeData(resultMap); purgeLowPercentageAndFakeData(context, resultMap); } return resultMap; } Loading Loading @@ -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()) { Loading @@ -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; } } } } Loading
src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +6 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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); }
src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +7 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -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<>(); } }
tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java +38 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)) Loading