Extract the logic of loading battery usage data form BatteryUsageStats
in DataProcessor to make it reusable by BatteryUsageLoaderService. Bug: 246233366 Test: make RunSettingsRoboTests + manually Change-Id: I5c721120cc4005044def63937506cc64339a3e6b
This commit is contained in:
@@ -171,6 +171,56 @@ public final class DataProcessor {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the {@link BatteryUsageStats} from system service.
|
||||
*/
|
||||
@Nullable
|
||||
public static BatteryUsageStats getBatteryUsageStats(final Context context) {
|
||||
final BatteryUsageStatsQuery batteryUsageStatsQuery =
|
||||
new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build();
|
||||
return context.getSystemService(BatteryStatsManager.class)
|
||||
.getBatteryUsageStats(batteryUsageStatsQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the {@link BatteryUsageStats} after using it.
|
||||
*/
|
||||
public static void closeBatteryUsageStats(BatteryUsageStats batteryUsageStats) {
|
||||
if (batteryUsageStats != null) {
|
||||
try {
|
||||
batteryUsageStats.close();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "BatteryUsageStats.close() failed", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the list of {@link BatteryEntry} from the supplied {@link BatteryUsageStats}.
|
||||
*/
|
||||
@Nullable
|
||||
public static List<BatteryEntry> generateBatteryEntryListFromBatteryUsageStats(
|
||||
final Context context,
|
||||
@Nullable final BatteryUsageStats batteryUsageStats,
|
||||
@Nullable BatteryAppListPreferenceController batteryAppListPreferenceController) {
|
||||
if (batteryUsageStats == null) {
|
||||
Log.w(TAG, "batteryUsageStats is null content");
|
||||
return null;
|
||||
}
|
||||
// Loads the battery consuming data.
|
||||
final BatteryAppListPreferenceController controller =
|
||||
batteryAppListPreferenceController == null
|
||||
? new BatteryAppListPreferenceController(
|
||||
context,
|
||||
/*preferenceKey=*/ null,
|
||||
/*lifecycle=*/ null,
|
||||
/*activity*=*/ null,
|
||||
/*fragment=*/ null)
|
||||
: batteryAppListPreferenceController;
|
||||
|
||||
return controller.getBatteryEntryList(batteryUsageStats, /*showAllApps=*/ true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the processed history map which has interpolated to every hour data.
|
||||
* The start and end timestamp must be the even hours.
|
||||
@@ -477,20 +527,14 @@ public final class DataProcessor {
|
||||
final Context context) {
|
||||
BatteryDiffData batteryDiffData = null;
|
||||
try {
|
||||
final BatteryUsageStatsQuery batteryUsageStatsQuery =
|
||||
new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build();
|
||||
final BatteryUsageStats batteryUsageStats =
|
||||
context.getSystemService(BatteryStatsManager.class)
|
||||
.getBatteryUsageStats(batteryUsageStatsQuery);
|
||||
|
||||
if (batteryUsageStats == null) {
|
||||
Log.w(TAG, "batteryUsageStats is null content");
|
||||
return null;
|
||||
}
|
||||
|
||||
final BatteryUsageStats batteryUsageStats = getBatteryUsageStats(context);
|
||||
final List<BatteryEntry> batteryEntryList =
|
||||
generateBatteryEntryListFromBatteryUsageStats(context, batteryUsageStats);
|
||||
generateBatteryEntryListFromBatteryUsageStats(
|
||||
context,
|
||||
batteryUsageStats,
|
||||
/*batteryAppListPreferenceController=*/ null);
|
||||
batteryDiffData = generateBatteryDiffData(context, batteryEntryList, batteryUsageStats);
|
||||
closeBatteryUsageStats(batteryUsageStats);
|
||||
} catch (RuntimeException e) {
|
||||
Log.e(TAG, "load batteryUsageStats:" + e);
|
||||
}
|
||||
@@ -498,20 +542,6 @@ public final class DataProcessor {
|
||||
return batteryDiffData;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static List<BatteryEntry> generateBatteryEntryListFromBatteryUsageStats(
|
||||
final Context context, final BatteryUsageStats batteryUsageStats) {
|
||||
// Loads the battery consuming data.
|
||||
final BatteryAppListPreferenceController controller =
|
||||
new BatteryAppListPreferenceController(
|
||||
context,
|
||||
/*preferenceKey=*/ null,
|
||||
/*lifecycle=*/ null,
|
||||
/*activity*=*/ null,
|
||||
/*fragment=*/ null);
|
||||
return controller.getBatteryEntryList(batteryUsageStats, /*showAllApps=*/ true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static List<BatteryHistEntry> convertToBatteryHistEntry(
|
||||
@Nullable final List<BatteryEntry> batteryEntryList,
|
||||
|
@@ -579,9 +579,13 @@ public class DataProcessorTest {
|
||||
ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0,
|
||||
/*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 3);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
|
||||
3);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||
0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -674,9 +678,13 @@ public class DataProcessorTest {
|
||||
assertThat(resultMap.get(0).get(0)).isNotNull();
|
||||
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
|
||||
2);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||
0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -739,9 +747,13 @@ public class DataProcessorTest {
|
||||
assertThat(resultMap.get(0).get(0)).isNotNull();
|
||||
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
|
||||
1);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||
0);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -814,9 +826,13 @@ public class DataProcessorTest {
|
||||
ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
|
||||
/*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
|
||||
1);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 1);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||
1);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -889,9 +905,13 @@ public class DataProcessorTest {
|
||||
resultEntry = resultDiffData.getAppDiffEntryList().get(1);
|
||||
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
|
||||
2);
|
||||
verify(mMetricsFeatureProvider)
|
||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||
.action(mContext.getApplicationContext(),
|
||||
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||
0);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user