Loading src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +22 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -591,6 +592,27 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll 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( final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) { final List<Long> batteryHistoryKeyList = Loading tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java +24 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.os.BatteryManager; import android.os.BatteryUsageStats; import android.os.UserHandle; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -45,15 +47,18 @@ import java.util.TimeZone; public final class ConvertUtilsTest { private Context mContext; @Mock private BatteryUsageStats mBatteryUsageStats; @Mock private BatteryEntry mockBatteryEntry; @Mock private BatteryUsageStats mBatteryUsageStats; @Mock private BatteryEntry mockBatteryEntry; private FakeFeatureFactory mFeatureFactory; private PowerUsageFeatureProvider mPowerUsageFeatureProvider; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mFeatureFactory = FakeFeatureFactory.setupForTest(); mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider; } @Test Loading Loading @@ -250,6 +255,21 @@ public final class ConvertUtilsTest { // Verifies the fake data is cleared out. assertThat(entryList.get(0).getPackageName()) .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 Loading Loading
src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +22 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -591,6 +592,27 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll 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( final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) { final List<Long> batteryHistoryKeyList = Loading
tests/robotests/src/com/android/settings/fuelgauge/ConvertUtilsTest.java +24 −4 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.os.BatteryManager; import android.os.BatteryUsageStats; import android.os.UserHandle; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -45,15 +47,18 @@ import java.util.TimeZone; public final class ConvertUtilsTest { private Context mContext; @Mock private BatteryUsageStats mBatteryUsageStats; @Mock private BatteryEntry mockBatteryEntry; @Mock private BatteryUsageStats mBatteryUsageStats; @Mock private BatteryEntry mockBatteryEntry; private FakeFeatureFactory mFeatureFactory; private PowerUsageFeatureProvider mPowerUsageFeatureProvider; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); mFeatureFactory = FakeFeatureFactory.setupForTest(); mPowerUsageFeatureProvider = mFeatureFactory.powerUsageFeatureProvider; } @Test Loading Loading @@ -250,6 +255,21 @@ public final class ConvertUtilsTest { // Verifies the fake data is cleared out. assertThat(entryList.get(0).getPackageName()) .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 Loading