diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 802919408e5..959820a9e5d 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -146,9 +146,9 @@ public interface PowerUsageFeatureProvider { Set getHideBackgroundUsageTimeSet(Context context); /** - * Returns package names for hiding application in the usage screen. + * Returns {@link Set} for hiding application package names in the usage screen. */ - CharSequence[] getHideApplicationEntries(Context context); + Set getHideApplicationSet(Context context); /** * Returns {@link Set} for ignoring task root class names for screen on time. diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index 53d87016354..94e4872d303 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -162,8 +162,8 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider } @Override - public CharSequence[] getHideApplicationEntries(Context context) { - return new CharSequence[0]; + public Set getHideApplicationSet(Context context) { + return new ArraySet<>(); } @Override diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java index e3e1912ed00..e6b37505a93 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java +++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java @@ -280,9 +280,7 @@ public final class DataProcessor { case Event.DEVICE_SHUTDOWN: final String taskRootClassName = event.getTaskRootClassName(); if (!TextUtils.isEmpty(taskRootClassName) - && !ignoreScreenOnTimeTaskRootSet.isEmpty() - && contains( - taskRootClassName, ignoreScreenOnTimeTaskRootSet)) { + && ignoreScreenOnTimeTaskRootSet.contains(taskRootClassName)) { Log.w(TAG, String.format( "Ignoring a usage event with task root class name %s, " + "(timestamp=%d, type=%d)", @@ -1238,14 +1236,14 @@ public final class DataProcessor { private static void purgeFakeAndHiddenPackages( final Context context, final Map> resultMap) { - final Set backgroundUsageTimeHideList = + final Set hideBackgroundUsageTimeSet = FeatureFactory.getFactory(context) .getPowerUsageFeatureProvider(context) .getHideBackgroundUsageTimeSet(context); - final CharSequence[] notAllowShowEntryPackages = + final Set hideApplicationSet = FeatureFactory.getFactory(context) .getPowerUsageFeatureProvider(context) - .getHideApplicationEntries(context); + .getHideApplicationSet(context); resultMap.keySet().forEach(dailyKey -> { final Map dailyUsageMap = resultMap.get(dailyKey); dailyUsageMap.values().forEach(diffEntryLists -> { @@ -1253,30 +1251,31 @@ public final class DataProcessor { return; } purgeFakeAndHiddenPackages( - diffEntryLists.getAppDiffEntryList(), backgroundUsageTimeHideList, - notAllowShowEntryPackages); + diffEntryLists.getAppDiffEntryList(), hideBackgroundUsageTimeSet, + hideApplicationSet); purgeFakeAndHiddenPackages( - diffEntryLists.getSystemDiffEntryList(), backgroundUsageTimeHideList, - notAllowShowEntryPackages); + diffEntryLists.getSystemDiffEntryList(), hideBackgroundUsageTimeSet, + hideApplicationSet); }); }); } private static void purgeFakeAndHiddenPackages( final List entries, - final Set backgroundUsageTimeHideList, - final CharSequence[] notAllowShowEntryPackages) { + final Set hideBackgroundUsageTimeSet, + final Set hideApplicationSet) { final Iterator iterator = entries.iterator(); while (iterator.hasNext()) { final BatteryDiffEntry entry = iterator.next(); final String packageName = entry.getPackageName(); + if (packageName == null) { + continue; + } if (ConvertUtils.FAKE_PACKAGE_NAME.equals(packageName) - || contains(packageName, notAllowShowEntryPackages)) { + || hideApplicationSet.contains(packageName)) { iterator.remove(); } - if (packageName != null - && !backgroundUsageTimeHideList.isEmpty() - && contains(packageName, backgroundUsageTimeHideList)) { + if (hideBackgroundUsageTimeSet.contains(packageName)) { entry.mBackgroundUsageTimeInMs = 0; } } @@ -1465,18 +1464,6 @@ public final class DataProcessor { return calendar.getTimeInMillis(); } - /** Whether the Set contains the target. */ - private static boolean contains(String target, Set packageNames) { - if (target != null && packageNames != null) { - for (CharSequence packageName : packageNames) { - if (TextUtils.equals(target, packageName)) { - return true; - } - } - } - return false; - } - private static long getDiffValue(long v1, long v2, long v3) { return (v2 > v1 ? v2 - v1 : 0) + (v3 > v2 ? v3 - v2 : 0); } @@ -1521,20 +1508,6 @@ public final class DataProcessor { return sFakeCurrentTimeMillis > 0 ? sFakeCurrentTimeMillis : System.currentTimeMillis(); } - /** - * @return Returns whether the target is in the CharSequence array. - */ - private static boolean contains(String target, CharSequence[] packageNames) { - if (target != null && packageNames != null) { - for (CharSequence packageName : packageNames) { - if (TextUtils.equals(target, packageName)) { - return true; - } - } - } - return false; - } - private static void log(Context context, final String content, final long timestamp, final BatteryHistEntry entry) { if (DEBUG) { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java index 95e3bad12b5..57963aaa111 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java @@ -57,6 +57,7 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Set; import java.util.TimeZone; @RunWith(RobolectricTestRunner.class) @@ -92,9 +93,9 @@ public final class BatteryChartPreferenceControllerTest { final Resources resources = spy(mContext.getResources()); resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US"))); doReturn(resources).when(mContext).getResources(); - doReturn(new String[]{"com.android.gms.persistent"}) + doReturn(Set.of("com.android.gms.persistent")) .when(mFeatureFactory.powerUsageFeatureProvider) - .getHideApplicationEntries(mContext); + .getHideApplicationSet(mContext); doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams(); doReturn(mIntent).when(mContext).registerReceiver(any(), any()); doReturn(100).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_SCALE), anyInt()); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index 0bc86932984..5c3da4aedff 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -48,6 +48,7 @@ import org.robolectric.RuntimeEnvironment; import java.util.Arrays; import java.util.Locale; +import java.util.Set; import java.util.TimeZone; @RunWith(RobolectricTestRunner.class) @@ -86,9 +87,9 @@ public final class BatteryUsageBreakdownControllerTest { final Resources resources = spy(mContext.getResources()); resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US"))); doReturn(resources).when(mContext).getResources(); - doReturn(new String[]{"com.android.gms.persistent"}) + doReturn(Set.of("com.android.gms.persistent")) .when(mFeatureFactory.powerUsageFeatureProvider) - .getHideApplicationEntries(mContext); + .getHideApplicationSet(mContext); mBatteryUsageBreakdownController = createController(); mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup; mBatteryDiffEntry = new BatteryDiffEntry( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java index ce958c9eacc..a44768ee3bd 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java @@ -60,6 +60,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.TimeZone; @RunWith(RobolectricTestRunner.class) @@ -1062,8 +1063,8 @@ public class DataProcessorTest { final List levels = List.of(100, 100); hourlyBatteryLevelsPerDay.add( new BatteryLevelData.PeriodBatteryLevelData(timestamps, levels)); - when(mPowerUsageFeatureProvider.getHideApplicationEntries(mContext)) - .thenReturn(new CharSequence[]{"package1"}); + when(mPowerUsageFeatureProvider.getHideApplicationSet(mContext)) + .thenReturn(Set.of("package1")); final Map> resultMap = DataProcessor.getBatteryUsageMap(