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;
|
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.
|
* @return Returns the processed history map which has interpolated to every hour data.
|
||||||
* The start and end timestamp must be the even hours.
|
* The start and end timestamp must be the even hours.
|
||||||
@@ -477,20 +527,14 @@ public final class DataProcessor {
|
|||||||
final Context context) {
|
final Context context) {
|
||||||
BatteryDiffData batteryDiffData = null;
|
BatteryDiffData batteryDiffData = null;
|
||||||
try {
|
try {
|
||||||
final BatteryUsageStatsQuery batteryUsageStatsQuery =
|
final BatteryUsageStats batteryUsageStats = getBatteryUsageStats(context);
|
||||||
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 List<BatteryEntry> batteryEntryList =
|
final List<BatteryEntry> batteryEntryList =
|
||||||
generateBatteryEntryListFromBatteryUsageStats(context, batteryUsageStats);
|
generateBatteryEntryListFromBatteryUsageStats(
|
||||||
|
context,
|
||||||
|
batteryUsageStats,
|
||||||
|
/*batteryAppListPreferenceController=*/ null);
|
||||||
batteryDiffData = generateBatteryDiffData(context, batteryEntryList, batteryUsageStats);
|
batteryDiffData = generateBatteryDiffData(context, batteryEntryList, batteryUsageStats);
|
||||||
|
closeBatteryUsageStats(batteryUsageStats);
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
Log.e(TAG, "load batteryUsageStats:" + e);
|
Log.e(TAG, "load batteryUsageStats:" + e);
|
||||||
}
|
}
|
||||||
@@ -498,20 +542,6 @@ public final class DataProcessor {
|
|||||||
return batteryDiffData;
|
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
|
@Nullable
|
||||||
private static List<BatteryHistEntry> convertToBatteryHistEntry(
|
private static List<BatteryHistEntry> convertToBatteryHistEntry(
|
||||||
@Nullable final List<BatteryEntry> batteryEntryList,
|
@Nullable final List<BatteryEntry> batteryEntryList,
|
||||||
|
@@ -579,9 +579,13 @@ public class DataProcessorTest {
|
|||||||
ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0,
|
ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0,
|
||||||
/*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
|
/*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
|
||||||
verify(mMetricsFeatureProvider)
|
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)
|
verify(mMetricsFeatureProvider)
|
||||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
.action(mContext.getApplicationContext(),
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -674,9 +678,13 @@ public class DataProcessorTest {
|
|||||||
assertThat(resultMap.get(0).get(0)).isNotNull();
|
assertThat(resultMap.get(0).get(0)).isNotNull();
|
||||||
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
|
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
|
||||||
verify(mMetricsFeatureProvider)
|
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)
|
verify(mMetricsFeatureProvider)
|
||||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
.action(mContext.getApplicationContext(),
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -739,9 +747,13 @@ public class DataProcessorTest {
|
|||||||
assertThat(resultMap.get(0).get(0)).isNotNull();
|
assertThat(resultMap.get(0).get(0)).isNotNull();
|
||||||
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
|
assertThat(resultMap.get(0).get(DataProcessor.SELECTED_INDEX_ALL)).isNotNull();
|
||||||
verify(mMetricsFeatureProvider)
|
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)
|
verify(mMetricsFeatureProvider)
|
||||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
.action(mContext.getApplicationContext(),
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -814,9 +826,13 @@ public class DataProcessorTest {
|
|||||||
ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
|
ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
|
||||||
/*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20);
|
/*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20);
|
||||||
verify(mMetricsFeatureProvider)
|
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)
|
verify(mMetricsFeatureProvider)
|
||||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 1);
|
.action(mContext.getApplicationContext(),
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||||
|
1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -889,9 +905,13 @@ public class DataProcessorTest {
|
|||||||
resultEntry = resultDiffData.getAppDiffEntryList().get(1);
|
resultEntry = resultDiffData.getAppDiffEntryList().get(1);
|
||||||
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
|
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
|
||||||
verify(mMetricsFeatureProvider)
|
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)
|
verify(mMetricsFeatureProvider)
|
||||||
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
.action(mContext.getApplicationContext(),
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user