Refactor getting allowlist set from feature provider.
(1) Use Set<CharSequence> for all the allowlists. (2) The contains() method of Set<CharSequence> also works for String. No need an extra contains() util function. Bug: 262802531 Fix: 262802531 Test: presubmit Change-Id: Ib2aaf9a3b8db4618a8c46f138e8d35f15b77c104
This commit is contained in:
@@ -146,9 +146,9 @@ public interface PowerUsageFeatureProvider {
|
|||||||
Set<CharSequence> getHideBackgroundUsageTimeSet(Context context);
|
Set<CharSequence> 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<CharSequence> getHideApplicationSet(Context context);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns {@link Set} for ignoring task root class names for screen on time.
|
* Returns {@link Set} for ignoring task root class names for screen on time.
|
||||||
|
@@ -162,8 +162,8 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence[] getHideApplicationEntries(Context context) {
|
public Set<CharSequence> getHideApplicationSet(Context context) {
|
||||||
return new CharSequence[0];
|
return new ArraySet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -280,9 +280,7 @@ public final class DataProcessor {
|
|||||||
case Event.DEVICE_SHUTDOWN:
|
case Event.DEVICE_SHUTDOWN:
|
||||||
final String taskRootClassName = event.getTaskRootClassName();
|
final String taskRootClassName = event.getTaskRootClassName();
|
||||||
if (!TextUtils.isEmpty(taskRootClassName)
|
if (!TextUtils.isEmpty(taskRootClassName)
|
||||||
&& !ignoreScreenOnTimeTaskRootSet.isEmpty()
|
&& ignoreScreenOnTimeTaskRootSet.contains(taskRootClassName)) {
|
||||||
&& contains(
|
|
||||||
taskRootClassName, ignoreScreenOnTimeTaskRootSet)) {
|
|
||||||
Log.w(TAG, String.format(
|
Log.w(TAG, String.format(
|
||||||
"Ignoring a usage event with task root class name %s, "
|
"Ignoring a usage event with task root class name %s, "
|
||||||
+ "(timestamp=%d, type=%d)",
|
+ "(timestamp=%d, type=%d)",
|
||||||
@@ -1238,14 +1236,14 @@ public final class DataProcessor {
|
|||||||
private static void purgeFakeAndHiddenPackages(
|
private static void purgeFakeAndHiddenPackages(
|
||||||
final Context context,
|
final Context context,
|
||||||
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap) {
|
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap) {
|
||||||
final Set<CharSequence> backgroundUsageTimeHideList =
|
final Set<CharSequence> hideBackgroundUsageTimeSet =
|
||||||
FeatureFactory.getFactory(context)
|
FeatureFactory.getFactory(context)
|
||||||
.getPowerUsageFeatureProvider(context)
|
.getPowerUsageFeatureProvider(context)
|
||||||
.getHideBackgroundUsageTimeSet(context);
|
.getHideBackgroundUsageTimeSet(context);
|
||||||
final CharSequence[] notAllowShowEntryPackages =
|
final Set<CharSequence> hideApplicationSet =
|
||||||
FeatureFactory.getFactory(context)
|
FeatureFactory.getFactory(context)
|
||||||
.getPowerUsageFeatureProvider(context)
|
.getPowerUsageFeatureProvider(context)
|
||||||
.getHideApplicationEntries(context);
|
.getHideApplicationSet(context);
|
||||||
resultMap.keySet().forEach(dailyKey -> {
|
resultMap.keySet().forEach(dailyKey -> {
|
||||||
final Map<Integer, BatteryDiffData> dailyUsageMap = resultMap.get(dailyKey);
|
final Map<Integer, BatteryDiffData> dailyUsageMap = resultMap.get(dailyKey);
|
||||||
dailyUsageMap.values().forEach(diffEntryLists -> {
|
dailyUsageMap.values().forEach(diffEntryLists -> {
|
||||||
@@ -1253,30 +1251,31 @@ public final class DataProcessor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
purgeFakeAndHiddenPackages(
|
purgeFakeAndHiddenPackages(
|
||||||
diffEntryLists.getAppDiffEntryList(), backgroundUsageTimeHideList,
|
diffEntryLists.getAppDiffEntryList(), hideBackgroundUsageTimeSet,
|
||||||
notAllowShowEntryPackages);
|
hideApplicationSet);
|
||||||
purgeFakeAndHiddenPackages(
|
purgeFakeAndHiddenPackages(
|
||||||
diffEntryLists.getSystemDiffEntryList(), backgroundUsageTimeHideList,
|
diffEntryLists.getSystemDiffEntryList(), hideBackgroundUsageTimeSet,
|
||||||
notAllowShowEntryPackages);
|
hideApplicationSet);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void purgeFakeAndHiddenPackages(
|
private static void purgeFakeAndHiddenPackages(
|
||||||
final List<BatteryDiffEntry> entries,
|
final List<BatteryDiffEntry> entries,
|
||||||
final Set<CharSequence> backgroundUsageTimeHideList,
|
final Set<CharSequence> hideBackgroundUsageTimeSet,
|
||||||
final CharSequence[] notAllowShowEntryPackages) {
|
final Set<CharSequence> hideApplicationSet) {
|
||||||
final Iterator<BatteryDiffEntry> iterator = entries.iterator();
|
final Iterator<BatteryDiffEntry> iterator = entries.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
final BatteryDiffEntry entry = iterator.next();
|
final BatteryDiffEntry entry = iterator.next();
|
||||||
final String packageName = entry.getPackageName();
|
final String packageName = entry.getPackageName();
|
||||||
|
if (packageName == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (ConvertUtils.FAKE_PACKAGE_NAME.equals(packageName)
|
if (ConvertUtils.FAKE_PACKAGE_NAME.equals(packageName)
|
||||||
|| contains(packageName, notAllowShowEntryPackages)) {
|
|| hideApplicationSet.contains(packageName)) {
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
if (packageName != null
|
if (hideBackgroundUsageTimeSet.contains(packageName)) {
|
||||||
&& !backgroundUsageTimeHideList.isEmpty()
|
|
||||||
&& contains(packageName, backgroundUsageTimeHideList)) {
|
|
||||||
entry.mBackgroundUsageTimeInMs = 0;
|
entry.mBackgroundUsageTimeInMs = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1465,18 +1464,6 @@ public final class DataProcessor {
|
|||||||
return calendar.getTimeInMillis();
|
return calendar.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Whether the Set contains the target. */
|
|
||||||
private static boolean contains(String target, Set<CharSequence> 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) {
|
private static long getDiffValue(long v1, long v2, long v3) {
|
||||||
return (v2 > v1 ? v2 - v1 : 0) + (v3 > v2 ? v3 - v2 : 0);
|
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 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,
|
private static void log(Context context, final String content, final long timestamp,
|
||||||
final BatteryHistEntry entry) {
|
final BatteryHistEntry entry) {
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
|
@@ -57,6 +57,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@@ -92,9 +93,9 @@ public final class BatteryChartPreferenceControllerTest {
|
|||||||
final Resources resources = spy(mContext.getResources());
|
final Resources resources = spy(mContext.getResources());
|
||||||
resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
|
resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
|
||||||
doReturn(resources).when(mContext).getResources();
|
doReturn(resources).when(mContext).getResources();
|
||||||
doReturn(new String[]{"com.android.gms.persistent"})
|
doReturn(Set.of("com.android.gms.persistent"))
|
||||||
.when(mFeatureFactory.powerUsageFeatureProvider)
|
.when(mFeatureFactory.powerUsageFeatureProvider)
|
||||||
.getHideApplicationEntries(mContext);
|
.getHideApplicationSet(mContext);
|
||||||
doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
|
doReturn(mLayoutParams).when(mDailyChartView).getLayoutParams();
|
||||||
doReturn(mIntent).when(mContext).registerReceiver(any(), any());
|
doReturn(mIntent).when(mContext).registerReceiver(any(), any());
|
||||||
doReturn(100).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_SCALE), anyInt());
|
doReturn(100).when(mIntent).getIntExtra(eq(BatteryManager.EXTRA_SCALE), anyInt());
|
||||||
|
@@ -48,6 +48,7 @@ import org.robolectric.RuntimeEnvironment;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@@ -86,9 +87,9 @@ public final class BatteryUsageBreakdownControllerTest {
|
|||||||
final Resources resources = spy(mContext.getResources());
|
final Resources resources = spy(mContext.getResources());
|
||||||
resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
|
resources.getConfiguration().setLocales(new LocaleList(new Locale("en_US")));
|
||||||
doReturn(resources).when(mContext).getResources();
|
doReturn(resources).when(mContext).getResources();
|
||||||
doReturn(new String[]{"com.android.gms.persistent"})
|
doReturn(Set.of("com.android.gms.persistent"))
|
||||||
.when(mFeatureFactory.powerUsageFeatureProvider)
|
.when(mFeatureFactory.powerUsageFeatureProvider)
|
||||||
.getHideApplicationEntries(mContext);
|
.getHideApplicationSet(mContext);
|
||||||
mBatteryUsageBreakdownController = createController();
|
mBatteryUsageBreakdownController = createController();
|
||||||
mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup;
|
mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup;
|
||||||
mBatteryDiffEntry = new BatteryDiffEntry(
|
mBatteryDiffEntry = new BatteryDiffEntry(
|
||||||
|
@@ -60,6 +60,7 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@@ -1062,8 +1063,8 @@ public class DataProcessorTest {
|
|||||||
final List<Integer> levels = List.of(100, 100);
|
final List<Integer> levels = List.of(100, 100);
|
||||||
hourlyBatteryLevelsPerDay.add(
|
hourlyBatteryLevelsPerDay.add(
|
||||||
new BatteryLevelData.PeriodBatteryLevelData(timestamps, levels));
|
new BatteryLevelData.PeriodBatteryLevelData(timestamps, levels));
|
||||||
when(mPowerUsageFeatureProvider.getHideApplicationEntries(mContext))
|
when(mPowerUsageFeatureProvider.getHideApplicationSet(mContext))
|
||||||
.thenReturn(new CharSequence[]{"package1"});
|
.thenReturn(Set.of("package1"));
|
||||||
|
|
||||||
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
|
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
|
||||||
DataProcessor.getBatteryUsageMap(
|
DataProcessor.getBatteryUsageMap(
|
||||||
|
Reference in New Issue
Block a user