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

Commit 11f8f526 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Fix IndexOutOfBounds exception in dumpsys batterystats

Also, fix NPE caused by PowerProfile not being set on
BatteryStats during `dumpsys batterystats --checkout`

Bug: 208701409
Test: dumpsys batterystats --checkout
Change-Id: I2ec914610f9d61567eba8d4ff53e384f8390ceaa
parent 77243f98
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -328,7 +328,7 @@ public class MeasuredEnergyStats {
                if (multiStateCounter != null) {
                    if (mAccumulatedMultiStateChargeMicroCoulomb == null) {
                        mAccumulatedMultiStateChargeMicroCoulomb =
                                new LongMultiStateCounter[numWrittenEntries];
                                new LongMultiStateCounter[mAccumulatedChargeMicroCoulomb.length];
                    }
                    mAccumulatedMultiStateChargeMicroCoulomb[index] = multiStateCounter;
                }
+6 −1
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub

    private static IBatteryStats sService;

    private final PowerProfile mPowerProfile;
    final BatteryStatsImpl mStats;
    private final BatteryUsageStatsStore mBatteryUsageStatsStore;
    private final BatteryStatsImpl.UserInfoProvider mUserManagerUserInfoProvider;
@@ -343,13 +344,15 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        mHandlerThread.start();
        mHandler = new Handler(mHandlerThread.getLooper());

        mPowerProfile = new PowerProfile(context);

        mStats = new BatteryStatsImpl(systemDir, handler, this,
                this, mUserManagerUserInfoProvider);
        mWorker = new BatteryExternalStatsWorker(context, mStats);
        mStats.setExternalStatsSyncLocked(mWorker);
        mStats.setRadioScanningTimeoutLocked(mContext.getResources().getInteger(
                com.android.internal.R.integer.config_radioScanningTimeout) * 1000L);
        mStats.setPowerProfileLocked(new PowerProfile(context));
        mStats.setPowerProfileLocked(mPowerProfile);
        mStats.startTrackingSystemServerCpuTime();

        if (BATTERY_USAGE_STORE_ENABLED) {
@@ -2464,6 +2467,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
                                BatteryStatsImpl checkinStats = new BatteryStatsImpl(
                                        null, mStats.mHandler, null, null,
                                        mUserManagerUserInfoProvider);
                                checkinStats.setPowerProfileLocked(mPowerProfile);
                                checkinStats.readSummaryFromParcel(in);
                                in.recycle();
                                checkinStats.dumpProtoLocked(
@@ -2504,6 +2508,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
                                BatteryStatsImpl checkinStats = new BatteryStatsImpl(
                                        null, mStats.mHandler, null, null,
                                        mUserManagerUserInfoProvider);
                                checkinStats.setPowerProfileLocked(mPowerProfile);
                                checkinStats.readSummaryFromParcel(in);
                                in.recycle();
                                checkinStats.dumpCheckinLocked(mContext, pw, apps, flags,