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

Commit 91733d22 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Android (Google) Code Review
Browse files

Merge "Delay processing of BatteryStats events until onSystemReady" into main

parents d0c4ff5d e7d6f4fa
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ import android.os.BatteryUsageStatsQuery;
import android.os.Binder;
import android.os.BluetoothBatteryStats;
import android.os.Bundle;
import android.os.ConditionVariable;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
@@ -213,6 +214,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
    private final HandlerThread mHandlerThread;
    private final Handler mHandler;
    private final Object mLock = new Object();
    private final ConditionVariable mSystemReady = new ConditionVariable(false);

    private final Object mPowerStatsLock = new Object();
    @GuardedBy("mPowerStatsLock")
@@ -413,6 +415,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        mHandlerThread = new HandlerThread("batterystats-handler");
        mHandlerThread.start();
        mHandler = new Handler(mHandlerThread.getLooper());
        mHandler.post(mSystemReady::block);

        mMonotonicClock = new MonotonicClock(new File(systemDir, "monotonic_clock.xml"));
        mPowerProfile = new PowerProfile(context);
@@ -648,6 +651,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
        dataConnectionStats.startMonitoring();

        registerStatsCallbacks();
        mSystemReady.open();
    }

    private static boolean isBatteryUsageStatsAccumulationSupported() {
+10 −8
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.os.BatteryUsageStatsQuery;
import android.os.Handler;
import android.os.Process;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;

import com.android.internal.os.Clock;
@@ -350,13 +351,14 @@ public class BatteryUsageStatsProvider {

        synchronized (stats) {
            final List<PowerCalculator> powerCalculators = getPowerCalculators();
            if (!powerCalculators.isEmpty()) {
                if (monotonicStartTime != MonotonicClock.UNDEFINED
                        || monotonicEndTime != MonotonicClock.UNDEFINED) {
                    throw new IllegalStateException("BatteryUsageStatsQuery specifies a time "
            boolean usePowerCalculators = !powerCalculators.isEmpty();
            if (usePowerCalculators
                    && (monotonicStartTime != MonotonicClock.UNDEFINED
                    || monotonicEndTime != MonotonicClock.UNDEFINED)) {
                Slog.wtfStack(TAG, "BatteryUsageStatsQuery specifies a time "
                        + "range that is incompatible with PowerCalculators: "
                        + powerCalculators);
                }
                usePowerCalculators = false;
            }

            if (monotonicStartTime == MonotonicClock.UNDEFINED) {
@@ -371,7 +373,7 @@ public class BatteryUsageStatsProvider {
                batteryUsageStatsBuilder.setStatsEndTimestamp(currentTimeMs);
            }

            if (!powerCalculators.isEmpty()) {
            if (usePowerCalculators) {
                final long realtimeUs = mClock.elapsedRealtime() * 1000;
                final long uptimeUs = mClock.uptimeMillis() * 1000;
                final int[] powerComponents = query.getPowerComponents();
+1 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ public final class BatteryStatsServiceTest {
        Handler handler = new Handler(mBgThread.getLooper());
        mBatteryStatsService = new BatteryStatsService(context, systemDir);
        mBatteryStatsService.setRailsStatsCollectionEnabled(false);
        mBatteryStatsService.systemServicesReady();
    }

    @After