Add logging for count of shown / hidden apps in Battery Usage page.
Bug: 245455490 Test: manually Change-Id: I7342e822f00f9a0aedcef592cae9809251518812
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage;
|
|||||||
|
|
||||||
import static com.android.settings.fuelgauge.batteryusage.ConvertUtils.utcToLocalTime;
|
import static com.android.settings.fuelgauge.batteryusage.ConvertUtils.utcToLocalTime;
|
||||||
|
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
@@ -36,6 +37,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.fuelgauge.BatteryUtils;
|
import com.android.settings.fuelgauge.BatteryUtils;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.fuelgauge.BatteryStatus;
|
import com.android.settingslib.fuelgauge.BatteryStatus;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
@@ -354,10 +356,25 @@ public final class DataProcessor {
|
|||||||
insertDailyUsageDiffData(hourlyBatteryLevelsPerDay, resultMap);
|
insertDailyUsageDiffData(hourlyBatteryLevelsPerDay, resultMap);
|
||||||
// Insert diff data [SELECTED_INDEX_ALL][SELECTED_INDEX_ALL].
|
// Insert diff data [SELECTED_INDEX_ALL][SELECTED_INDEX_ALL].
|
||||||
insertAllUsageDiffData(resultMap);
|
insertAllUsageDiffData(resultMap);
|
||||||
|
// Compute the apps number before purge. Must put before purgeLowPercentageAndFakeData.
|
||||||
|
final int countOfAppBeforePurge = getCountOfApps(resultMap);
|
||||||
purgeLowPercentageAndFakeData(context, resultMap);
|
purgeLowPercentageAndFakeData(context, resultMap);
|
||||||
|
// Compute the apps number after purge. Must put after purgeLowPercentageAndFakeData.
|
||||||
|
final int countOfAppAfterPurge = getCountOfApps(resultMap);
|
||||||
if (!isUsageMapValid(resultMap, hourlyBatteryLevelsPerDay)) {
|
if (!isUsageMapValid(resultMap, hourlyBatteryLevelsPerDay)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final MetricsFeatureProvider metricsFeatureProvider =
|
||||||
|
FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||||
|
metricsFeatureProvider.action(
|
||||||
|
context,
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT,
|
||||||
|
countOfAppAfterPurge);
|
||||||
|
metricsFeatureProvider.action(
|
||||||
|
context,
|
||||||
|
SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT,
|
||||||
|
countOfAppBeforePurge - countOfAppAfterPurge);
|
||||||
return resultMap;
|
return resultMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -933,6 +950,15 @@ public final class DataProcessor {
|
|||||||
return calendar.getTimeInMillis();
|
return calendar.getTimeInMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int getCountOfApps(final Map<Integer, Map<Integer, BatteryDiffData>> resultMap) {
|
||||||
|
final BatteryDiffData diffDataList =
|
||||||
|
resultMap.get(SELECTED_INDEX_ALL).get(SELECTED_INDEX_ALL);
|
||||||
|
return diffDataList == null
|
||||||
|
? 0
|
||||||
|
: diffDataList.getAppDiffEntryList().size()
|
||||||
|
+ diffDataList.getSystemDiffEntryList().size();
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean contains(String target, Set<CharSequence> packageNames) {
|
private static boolean contains(String target, Set<CharSequence> packageNames) {
|
||||||
if (target != null && packageNames != null) {
|
if (target != null && packageNames != null) {
|
||||||
for (CharSequence packageName : packageNames) {
|
for (CharSequence packageName : packageNames) {
|
||||||
|
@@ -18,9 +18,12 @@ package com.android.settings.fuelgauge.batteryusage;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.format.DateUtils;
|
import android.text.format.DateUtils;
|
||||||
@@ -28,6 +31,7 @@ import android.text.format.DateUtils;
|
|||||||
import com.android.settings.fuelgauge.BatteryUtils;
|
import com.android.settings.fuelgauge.BatteryUtils;
|
||||||
import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
|
import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -52,6 +56,7 @@ public class DataProcessorTest {
|
|||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
private FakeFeatureFactory mFeatureFactory;
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
|
private MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
|
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -61,6 +66,7 @@ public class DataProcessorTest {
|
|||||||
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
mFeatureFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
mMetricsFeatureProvider = mFeatureFactory.metricsFeatureProvider;
|
||||||
mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
|
mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,6 +81,10 @@ public class DataProcessorTest {
|
|||||||
assertThat(DataProcessor.getBatteryLevelData(
|
assertThat(DataProcessor.getBatteryLevelData(
|
||||||
mContext, /*handler=*/ null, new HashMap<>(), /*asyncResponseDelegate=*/ null))
|
mContext, /*handler=*/ null, new HashMap<>(), /*asyncResponseDelegate=*/ null))
|
||||||
.isNull();
|
.isNull();
|
||||||
|
verify(mMetricsFeatureProvider, never())
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT);
|
||||||
|
verify(mMetricsFeatureProvider, never())
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -88,6 +98,10 @@ public class DataProcessorTest {
|
|||||||
assertThat(DataProcessor.getBatteryLevelData(
|
assertThat(DataProcessor.getBatteryLevelData(
|
||||||
mContext, /*handler=*/ null, batteryHistoryMap, /*asyncResponseDelegate=*/ null))
|
mContext, /*handler=*/ null, batteryHistoryMap, /*asyncResponseDelegate=*/ null))
|
||||||
.isNull();
|
.isNull();
|
||||||
|
verify(mMetricsFeatureProvider, never())
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT);
|
||||||
|
verify(mMetricsFeatureProvider, never())
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -421,6 +435,10 @@ public class DataProcessorTest {
|
|||||||
|
|
||||||
assertThat(DataProcessor.getBatteryUsageMap(
|
assertThat(DataProcessor.getBatteryUsageMap(
|
||||||
mContext, hourlyBatteryLevelsPerDay, new HashMap<>())).isNull();
|
mContext, hourlyBatteryLevelsPerDay, new HashMap<>())).isNull();
|
||||||
|
verify(mMetricsFeatureProvider, never())
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT);
|
||||||
|
verify(mMetricsFeatureProvider, never())
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -549,6 +567,10 @@ public class DataProcessorTest {
|
|||||||
resultDiffData.getSystemDiffEntryList().get(0), currentUserId, /*uid=*/ 3L,
|
resultDiffData.getSystemDiffEntryList().get(0), currentUserId, /*uid=*/ 3L,
|
||||||
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)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 3);
|
||||||
|
verify(mMetricsFeatureProvider)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -640,6 +662,10 @@ public class DataProcessorTest {
|
|||||||
/*backgroundUsageTimeInMs=*/ 0);
|
/*backgroundUsageTimeInMs=*/ 0);
|
||||||
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)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2);
|
||||||
|
verify(mMetricsFeatureProvider)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -701,6 +727,10 @@ public class DataProcessorTest {
|
|||||||
.isEqualTo(entry.mConsumePower * ratio);
|
.isEqualTo(entry.mConsumePower * ratio);
|
||||||
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)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1);
|
||||||
|
verify(mMetricsFeatureProvider)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -772,6 +802,10 @@ public class DataProcessorTest {
|
|||||||
resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L,
|
resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L,
|
||||||
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)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 1);
|
||||||
|
verify(mMetricsFeatureProvider)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -843,6 +877,10 @@ public class DataProcessorTest {
|
|||||||
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(20);
|
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(20);
|
||||||
resultEntry = resultDiffData.getAppDiffEntryList().get(1);
|
resultEntry = resultDiffData.getAppDiffEntryList().get(1);
|
||||||
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
|
assertThat(resultEntry.mBackgroundUsageTimeInMs).isEqualTo(0);
|
||||||
|
verify(mMetricsFeatureProvider)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_SHOWN_APP_COUNT, 2);
|
||||||
|
verify(mMetricsFeatureProvider)
|
||||||
|
.action(mContext, SettingsEnums.ACTION_BATTERY_USAGE_HIDDEN_APP_COUNT, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Map<Long, Map<String, BatteryHistEntry>> createHistoryMap(
|
private static Map<Long, Map<String, BatteryHistEntry>> createHistoryMap(
|
||||||
|
Reference in New Issue
Block a user