Refactor PowerUsageFeatureProvider: Cache the config set to avoid generating the set again.

Bug: 262802531
Test: manual
Change-Id: I61b36e4e057c432d814aa104a37f0e0d552720cb
This commit is contained in:
Zaiyue Xue
2023-01-10 11:14:14 +08:00
parent 5fc863fc01
commit 7f3ff17bcf
8 changed files with 31 additions and 31 deletions

View File

@@ -33,12 +33,12 @@ public interface PowerUsageFeatureProvider {
/** /**
* Check whether the battery usage button is enabled in the battery page * Check whether the battery usage button is enabled in the battery page
*/ */
boolean isBatteryUsageEnabled(Context context); boolean isBatteryUsageEnabled();
/** /**
* Returns an allowlist of app names combined into the system-apps item * Returns an allowlist of app names combined into the system-apps item
*/ */
List<String> getSystemAppsAllowlist(Context context); List<String> getSystemAppsAllowlist();
/** /**
* Check whether location setting is enabled * Check whether location setting is enabled
@@ -135,25 +135,25 @@ public interface PowerUsageFeatureProvider {
/** /**
* Returns {@link Set} for the system component ids which are combined into others. * Returns {@link Set} for the system component ids which are combined into others.
*/ */
Set<Integer> getOthersSystemComponentSet(Context context); Set<Integer> getOthersSystemComponentSet();
/** /**
* Returns {@link Set} for hiding system component ids in the usage screen. * Returns {@link Set} for hiding system component ids in the usage screen.
*/ */
Set<Integer> getHideSystemComponentSet(Context context); Set<Integer> getHideSystemComponentSet();
/** /**
* Returns {@link Set} for hiding application package names in the usage screen. * Returns {@link Set} for hiding application package names in the usage screen.
*/ */
Set<CharSequence> getHideApplicationSet(Context context); Set<String> getHideApplicationSet();
/** /**
* Returns {@link Set} for hiding applications background usage time. * Returns {@link Set} for hiding applications background usage time.
*/ */
Set<CharSequence> getHideBackgroundUsageTimeSet(Context context); Set<String> getHideBackgroundUsageTimeSet();
/** /**
* 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.
*/ */
Set<CharSequence> getIgnoreScreenOnTimeTaskRootSet(Context context); Set<String> getIgnoreScreenOnTimeTaskRootSet();
} }

View File

@@ -67,12 +67,12 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
} }
@Override @Override
public boolean isBatteryUsageEnabled(Context context) { public boolean isBatteryUsageEnabled() {
return true; return true;
} }
@Override @Override
public List<String> getSystemAppsAllowlist(Context context) { public List<String> getSystemAppsAllowlist() {
return null; return null;
} }
@@ -153,27 +153,27 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
} }
@Override @Override
public Set<Integer> getOthersSystemComponentSet(Context context) { public Set<Integer> getOthersSystemComponentSet() {
return new ArraySet<>(); return new ArraySet<>();
} }
@Override @Override
public Set<Integer> getHideSystemComponentSet(Context context) { public Set<Integer> getHideSystemComponentSet() {
return new ArraySet<>(); return new ArraySet<>();
} }
@Override @Override
public Set<CharSequence> getHideApplicationSet(Context context) { public Set<String> getHideApplicationSet() {
return new ArraySet<>(); return new ArraySet<>();
} }
@Override @Override
public Set<CharSequence> getHideBackgroundUsageTimeSet(Context context) { public Set<String> getHideBackgroundUsageTimeSet() {
return new ArraySet<>(); return new ArraySet<>();
} }
@Override @Override
public Set<CharSequence> getIgnoreScreenOnTimeTaskRootSet(Context context) { public Set<String> getIgnoreScreenOnTimeTaskRootSet() {
return new ArraySet<>(); return new ArraySet<>();
} }
} }

View File

@@ -323,10 +323,10 @@ public final class DataProcessor {
final List<AppUsageEvent> appUsageEventList = new ArrayList<>(); final List<AppUsageEvent> appUsageEventList = new ArrayList<>();
long numEventsFetched = 0; long numEventsFetched = 0;
long numAllEventsFetched = 0; long numAllEventsFetched = 0;
final Set<CharSequence> ignoreScreenOnTimeTaskRootSet = final Set<String> ignoreScreenOnTimeTaskRootSet =
FeatureFactory.getFactory(context) FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider(context)
.getIgnoreScreenOnTimeTaskRootSet(context); .getIgnoreScreenOnTimeTaskRootSet();
for (final long userId : usageEventsMap.keySet()) { for (final long userId : usageEventsMap.keySet()) {
final UsageEvents usageEvents = usageEventsMap.get(userId); final UsageEvents usageEvents = usageEventsMap.get(userId);
while (usageEvents.hasNextEvent()) { while (usageEvents.hasNextEvent()) {
@@ -1691,15 +1691,15 @@ public final class DataProcessor {
final Set<Integer> hideSystemComponentSet = final Set<Integer> hideSystemComponentSet =
FeatureFactory.getFactory(context) FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider(context)
.getHideSystemComponentSet(context); .getHideSystemComponentSet();
final Set<CharSequence> hideBackgroundUsageTimeSet = final Set<String> hideBackgroundUsageTimeSet =
FeatureFactory.getFactory(context) FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider(context)
.getHideBackgroundUsageTimeSet(context); .getHideBackgroundUsageTimeSet();
final Set<CharSequence> hideApplicationSet = final Set<String> hideApplicationSet =
FeatureFactory.getFactory(context) FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider(context)
.getHideApplicationSet(context); .getHideApplicationSet();
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(batteryDiffData -> { dailyUsageMap.values().forEach(batteryDiffData -> {
@@ -1727,8 +1727,8 @@ public final class DataProcessor {
private static void purgeFakeAndHiddenPackages( private static void purgeFakeAndHiddenPackages(
final List<BatteryDiffEntry> entries, final List<BatteryDiffEntry> entries,
final Set<Integer> hideSystemComponentSet, final Set<Integer> hideSystemComponentSet,
final Set<CharSequence> hideApplicationSet, final Set<String> hideApplicationSet,
final Set<CharSequence> hideBackgroundUsageTimeSet) { final Set<String> hideBackgroundUsageTimeSet) {
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();
@@ -1750,7 +1750,7 @@ public final class DataProcessor {
final Set<Integer> othersSystemComponentSet = final Set<Integer> othersSystemComponentSet =
FeatureFactory.getFactory(context) FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider(context)
.getOthersSystemComponentSet(context); .getOthersSystemComponentSet();
BatteryDiffEntry.OthersBatteryDiffEntry othersDiffEntry = null; BatteryDiffEntry.OthersBatteryDiffEntry othersDiffEntry = null;
final Iterator<BatteryDiffEntry> systemListIterator = final Iterator<BatteryDiffEntry> systemListIterator =
@@ -1777,7 +1777,7 @@ public final class DataProcessor {
final List<String> systemAppsAllowlist = final List<String> systemAppsAllowlist =
FeatureFactory.getFactory(context) FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider(context)
.getSystemAppsAllowlist(context); .getSystemAppsAllowlist();
final Application application = (Application) context.getApplicationContext(); final Application application = (Application) context.getApplicationContext();
final ApplicationsState applicationsState = final ApplicationsState applicationsState =
application == null ? null : ApplicationsState.getInstance(application); application == null ? null : ApplicationsState.getInstance(application);

View File

@@ -256,7 +256,7 @@ public class PowerUsageSummary extends PowerUsageBase implements
mBatteryUsagePreference = findPreference(KEY_BATTERY_USAGE); mBatteryUsagePreference = findPreference(KEY_BATTERY_USAGE);
mBatteryUsagePreference.setSummary(getString(R.string.advanced_battery_preference_summary)); mBatteryUsagePreference.setSummary(getString(R.string.advanced_battery_preference_summary));
mBatteryUsagePreference.setVisible( mBatteryUsagePreference.setVisible(
mPowerFeatureProvider.isBatteryUsageEnabled(getContext())); mPowerFeatureProvider.isBatteryUsageEnabled());
mHelpPreference = findPreference(KEY_BATTERY_ERROR); mHelpPreference = findPreference(KEY_BATTERY_ERROR);
mHelpPreference.setVisible(false); mHelpPreference.setVisible(false);

View File

@@ -64,7 +64,7 @@ public class PowerUsageFeatureProviderImplTest {
@Test @Test
public void testIsBatteryUsageEnabled_returnFalse() { public void testIsBatteryUsageEnabled_returnFalse() {
assertThat(mPowerFeatureProvider.isBatteryUsageEnabled(mContext)).isTrue(); assertThat(mPowerFeatureProvider.isBatteryUsageEnabled()).isTrue();
} }
@Test @Test

View File

@@ -101,7 +101,7 @@ public final class BatteryChartPreferenceControllerTest {
doReturn(resources).when(mContext).getResources(); doReturn(resources).when(mContext).getResources();
doReturn(Set.of("com.android.gms.persistent")) doReturn(Set.of("com.android.gms.persistent"))
.when(mFeatureFactory.powerUsageFeatureProvider) .when(mFeatureFactory.powerUsageFeatureProvider)
.getHideApplicationSet(mContext); .getHideApplicationSet();
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());

View File

@@ -90,7 +90,7 @@ public final class BatteryUsageBreakdownControllerTest {
doReturn(resources).when(mContext).getResources(); doReturn(resources).when(mContext).getResources();
doReturn(Set.of("com.android.gms.persistent")) doReturn(Set.of("com.android.gms.persistent"))
.when(mFeatureFactory.powerUsageFeatureProvider) .when(mFeatureFactory.powerUsageFeatureProvider)
.getHideApplicationSet(mContext); .getHideApplicationSet();
mBatteryUsageBreakdownController = createController(); mBatteryUsageBreakdownController = createController();
mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup; mBatteryUsageBreakdownController.mAppListPreferenceGroup = mAppListPreferenceGroup;
mBatteryDiffEntry = new BatteryDiffEntry( mBatteryDiffEntry = new BatteryDiffEntry(

View File

@@ -1237,7 +1237,7 @@ public final 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.getHideApplicationSet(mContext)) when(mPowerUsageFeatureProvider.getHideApplicationSet())
.thenReturn(Set.of("package1")); .thenReturn(Set.of("package1"));
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap = final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =
@@ -1330,7 +1330,7 @@ public final 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.getHideBackgroundUsageTimeSet(mContext)) when(mPowerUsageFeatureProvider.getHideBackgroundUsageTimeSet())
.thenReturn(new HashSet(Arrays.asList((CharSequence) "package2"))); .thenReturn(new HashSet(Arrays.asList((CharSequence) "package2")));
final Map<Integer, Map<Integer, BatteryDiffData>> resultMap = final Map<Integer, Map<Integer, BatteryDiffData>> resultMap =