Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abd364e1 authored by YUKAI HUNG's avatar YUKAI HUNG Committed by Android (Google) Code Review
Browse files

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

parents 0174c4ba e8d1374e
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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 =
+24 −4
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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