Merge "Export a method for app info page to get last 24 battery history data" into sc-dev

This commit is contained in:
YUKAI HUNG
2021-05-14 10:11:28 +00:00
committed by Android (Google) Code Review
2 changed files with 46 additions and 4 deletions

View File

@@ -35,6 +35,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -591,6 +592,27 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
return true; return true;
} }
static List<BatteryDiffEntry> getBatteryLast24HrUsageData(Context context) {
final long start = System.currentTimeMillis();
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap =
FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context)
.getBatteryHistory(context);
if (batteryHistoryMap == null || batteryHistoryMap.isEmpty()) {
return null;
}
Log.d(TAG, String.format("getBatteryLast24HrData() size=%d time=&d/ms",
batteryHistoryMap.size(), (System.currentTimeMillis() - start)));
final Map<Integer, List<BatteryDiffEntry>> batteryIndexedMap =
ConvertUtils.getIndexedUsageMap(
context,
/*timeSlotSize=*/ CHART_LEVEL_ARRAY_SIZE - 1,
getBatteryHistoryKeys(batteryHistoryMap),
batteryHistoryMap,
/*purgeLowPercentageAndFakeData=*/ true);
return batteryIndexedMap.get(BatteryChartView.SELECTED_INDEX_ALL);
}
private static long[] getBatteryHistoryKeys( private static long[] getBatteryHistoryKeys(
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) { final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
final List<Long> batteryHistoryKeyList = final List<Long> batteryHistoryKeyList =

View File

@@ -26,6 +26,8 @@ import android.os.BatteryManager;
import android.os.BatteryUsageStats; import android.os.BatteryUsageStats;
import android.os.UserHandle; import android.os.UserHandle;
import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -45,15 +47,18 @@ import java.util.TimeZone;
public final class ConvertUtilsTest { public final class ConvertUtilsTest {
private Context mContext; private Context mContext;
@Mock @Mock private BatteryUsageStats mBatteryUsageStats;
private BatteryUsageStats mBatteryUsageStats; @Mock private BatteryEntry mockBatteryEntry;
@Mock
private BatteryEntry mockBatteryEntry; private FakeFeatureFactory mFeatureFactory;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mFeatureFactory = FakeFeatureFactory.setupForTest();
mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider;
} }
@Test @Test
@@ -250,6 +255,21 @@ public final class ConvertUtilsTest {
// Verifies the fake data is cleared out. // Verifies the fake data is cleared out.
assertThat(entryList.get(0).getPackageName()) assertThat(entryList.get(0).getPackageName())
.isNotEqualTo(ConvertUtils.FAKE_PACKAGE_NAME); .isNotEqualTo(ConvertUtils.FAKE_PACKAGE_NAME);
// Adds lacked data into the battery history map.
final int remainingSize = 25 - batteryHistoryKeys.length;
for (int index = 0; index < remainingSize; index++) {
batteryHistoryMap.put(105L + index + 1, new HashMap<>());
}
when(mPowerUsageFeatureProvider.getBatteryHistory(mContext))
.thenReturn(batteryHistoryMap);
final List<BatteryDiffEntry> batteryDiffEntryList =
BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
assertThat(batteryDiffEntryList).isNotEmpty();
final BatteryDiffEntry resultEntry = batteryDiffEntryList.get(0);
assertThat(resultEntry.getPackageName()).isEqualTo("package2");
} }
@Test @Test