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

Commit c21066b0 authored by Narayan Kamath's avatar Narayan Kamath Committed by Android (Google) Code Review
Browse files

Merge "BatteryStats: Add WorkChain support for WiFi events."

parents 48e5682a 728c8a08
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -387,7 +387,7 @@ public final class BluetoothLeScanner {
                if (mScannerId > 0) {
                    mLeScanClients.put(mScanCallback, this);
                } else {
                    // Registration timed out or got exception, reset scannerId to -1 so no
                    // Registration timed out or got exception, reset RscannerId to -1 so no
                    // subsequent operations can proceed.
                    if (mScannerId == 0) mScannerId = -1;

+134 −20
Original line number Diff line number Diff line
@@ -5397,6 +5397,15 @@ public class BatteryStatsImpl extends BatteryStats {
                int uid = mapUid(ws.get(i));
                getUidStatsLocked(uid).noteWifiRunningLocked(elapsedRealtime);
            }
            List<WorkChain> workChains = ws.getWorkChains();
            if (workChains != null) {
                for (int i = 0; i < workChains.size(); ++i) {
                    int uid = mapUid(workChains.get(i).getAttributionUid());
                    getUidStatsLocked(uid).noteWifiRunningLocked(elapsedRealtime);
                }
            }
            scheduleSyncExternalStatsLocked("wifi-running", ExternalStatsSync.UPDATE_WIFI);
        } else {
            Log.w(TAG, "noteWifiRunningLocked -- called while WIFI running");
@@ -5411,11 +5420,28 @@ public class BatteryStatsImpl extends BatteryStats {
                int uid = mapUid(oldWs.get(i));
                getUidStatsLocked(uid).noteWifiStoppedLocked(elapsedRealtime);
            }
            List<WorkChain> workChains = oldWs.getWorkChains();
            if (workChains != null) {
                for (int i = 0; i < workChains.size(); ++i) {
                    int uid = mapUid(workChains.get(i).getAttributionUid());
                    getUidStatsLocked(uid).noteWifiStoppedLocked(elapsedRealtime);
                }
            }
            N = newWs.size();
            for (int i=0; i<N; i++) {
                int uid = mapUid(newWs.get(i));
                getUidStatsLocked(uid).noteWifiRunningLocked(elapsedRealtime);
            }
            workChains = newWs.getWorkChains();
            if (workChains != null) {
                for (int i = 0; i < workChains.size(); ++i) {
                    int uid = mapUid(workChains.get(i).getAttributionUid());
                    getUidStatsLocked(uid).noteWifiRunningLocked(elapsedRealtime);
                }
            }
        } else {
            Log.w(TAG, "noteWifiRunningChangedLocked -- called while WIFI not running");
        }
@@ -5436,6 +5462,15 @@ public class BatteryStatsImpl extends BatteryStats {
                int uid = mapUid(ws.get(i));
                getUidStatsLocked(uid).noteWifiStoppedLocked(elapsedRealtime);
            }
            List<WorkChain> workChains = ws.getWorkChains();
            if (workChains != null) {
                for (int i = 0; i < workChains.size(); ++i) {
                    int uid = mapUid(workChains.get(i).getAttributionUid());
                    getUidStatsLocked(uid).noteWifiStoppedLocked(elapsedRealtime);
                }
            }
            scheduleSyncExternalStatsLocked("wifi-stopped", ExternalStatsSync.UPDATE_WIFI);
        } else {
            Log.w(TAG, "noteWifiStoppedLocked -- called while WIFI not running");
@@ -5517,7 +5552,6 @@ public class BatteryStatsImpl extends BatteryStats {
    int mWifiFullLockNesting = 0;
    public void noteFullWifiLockAcquiredLocked(int uid) {
        uid = mapUid(uid);
        final long elapsedRealtime = mClocks.elapsedRealtime();
        final long uptime = mClocks.uptimeMillis();
        if (mWifiFullLockNesting == 0) {
@@ -5531,7 +5565,6 @@ public class BatteryStatsImpl extends BatteryStats {
    }
    public void noteFullWifiLockReleasedLocked(int uid) {
        uid = mapUid(uid);
        final long elapsedRealtime = mClocks.elapsedRealtime();
        final long uptime = mClocks.uptimeMillis();
        mWifiFullLockNesting--;
@@ -5547,7 +5580,6 @@ public class BatteryStatsImpl extends BatteryStats {
    int mWifiScanNesting = 0;
    public void noteWifiScanStartedLocked(int uid) {
        uid = mapUid(uid);
        final long elapsedRealtime = mClocks.elapsedRealtime();
        final long uptime = mClocks.uptimeMillis();
        if (mWifiScanNesting == 0) {
@@ -5561,7 +5593,6 @@ public class BatteryStatsImpl extends BatteryStats {
    }
    public void noteWifiScanStoppedLocked(int uid) {
        uid = mapUid(uid);
        final long elapsedRealtime = mClocks.elapsedRealtime();
        final long uptime = mClocks.uptimeMillis();
        mWifiScanNesting--;
@@ -5631,28 +5662,95 @@ public class BatteryStatsImpl extends BatteryStats {
    public void noteFullWifiLockAcquiredFromSourceLocked(WorkSource ws) {
        int N = ws.size();
        for (int i=0; i<N; i++) {
            noteFullWifiLockAcquiredLocked(ws.get(i));
            final int uid = mapUid(ws.get(i));
            noteFullWifiLockAcquiredLocked(uid);
            StatsLog.write(StatsLog.WIFI_LOCK_STATE_CHANGED, uid, 1);
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                final WorkChain workChain = workChains.get(i);
                final int uid = mapUid(workChain.getAttributionUid());
                noteFullWifiLockAcquiredLocked(uid);
                // TODO(statsd): Log workChain instead of uid here.
                if (DEBUG) {
                    Slog.v(TAG, "noteFullWifiLockAcquiredFromSourceLocked: " + workChain);
                }
                StatsLog.write(StatsLog.WIFI_LOCK_STATE_CHANGED, uid, 1);
            }
        }
    }
    public void noteFullWifiLockReleasedFromSourceLocked(WorkSource ws) {
        int N = ws.size();
        for (int i=0; i<N; i++) {
            noteFullWifiLockReleasedLocked(ws.get(i));
            final int uid = mapUid(ws.get(i));
            noteFullWifiLockReleasedLocked(uid);
            StatsLog.write(StatsLog.WIFI_LOCK_STATE_CHANGED, uid, 0);
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                final WorkChain workChain = workChains.get(i);
                final int uid = mapUid(workChain.getAttributionUid());
                noteFullWifiLockReleasedLocked(uid);
                // TODO(statsd): Log workChain instead of uid here.
                if (DEBUG) {
                    Slog.v(TAG, "noteFullWifiLockReleasedFromSourceLocked: " + workChain);
                }
                StatsLog.write(StatsLog.WIFI_LOCK_STATE_CHANGED, uid, 0);
            }
        }
    }
    public void noteWifiScanStartedFromSourceLocked(WorkSource ws) {
        int N = ws.size();
        for (int i=0; i<N; i++) {
            noteWifiScanStartedLocked(ws.get(i));
            final int uid = mapUid(ws.get(i));
            noteWifiScanStartedLocked(uid);
            StatsLog.write(StatsLog.WIFI_SCAN_STATE_CHANGED, uid, 1);
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                final WorkChain workChain = workChains.get(i);
                final int uid = mapUid(workChain.getAttributionUid());
                noteWifiScanStartedLocked(uid);
                // TODO(statsd): Log workChain instead of uid here.
                if (DEBUG) {
                    Slog.v(TAG, "noteWifiScanStartedFromSourceLocked: " + workChain);
                }
                StatsLog.write(StatsLog.WIFI_SCAN_STATE_CHANGED, uid, 1);
            }
        }
    }
    public void noteWifiScanStoppedFromSourceLocked(WorkSource ws) {
        int N = ws.size();
        for (int i=0; i<N; i++) {
            noteWifiScanStoppedLocked(ws.get(i));
            final int uid = mapUid(ws.get(i));
            noteWifiScanStoppedLocked(uid);
            StatsLog.write(StatsLog.WIFI_SCAN_STATE_CHANGED, uid, 0);
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                final WorkChain workChain = workChains.get(i);
                final int uid = mapUid(workChain.getAttributionUid());
                noteWifiScanStoppedLocked(uid);
                if (DEBUG) {
                    Slog.v(TAG, "noteWifiScanStoppedFromSourceLocked: " + workChain);
                }
                StatsLog.write(StatsLog.WIFI_SCAN_STATE_CHANGED, uid, 0);
            }
        }
    }
@@ -5661,6 +5759,13 @@ public class BatteryStatsImpl extends BatteryStats {
        for (int i=0; i<N; i++) {
            noteWifiBatchedScanStartedLocked(ws.get(i), csph);
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                noteWifiBatchedScanStartedLocked(workChains.get(i).getAttributionUid(), csph);
            }
        }
    }
    public void noteWifiBatchedScanStoppedFromSourceLocked(WorkSource ws) {
@@ -5668,6 +5773,13 @@ public class BatteryStatsImpl extends BatteryStats {
        for (int i=0; i<N; i++) {
            noteWifiBatchedScanStoppedLocked(ws.get(i));
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                noteWifiBatchedScanStoppedLocked(workChains.get(i).getAttributionUid());
            }
        }
    }
    public void noteWifiMulticastEnabledFromSourceLocked(WorkSource ws) {
@@ -5675,6 +5787,13 @@ public class BatteryStatsImpl extends BatteryStats {
        for (int i=0; i<N; i++) {
            noteWifiMulticastEnabledLocked(ws.get(i));
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                noteWifiMulticastEnabledLocked(workChains.get(i).getAttributionUid());
            }
        }
    }
    public void noteWifiMulticastDisabledFromSourceLocked(WorkSource ws) {
@@ -5682,6 +5801,13 @@ public class BatteryStatsImpl extends BatteryStats {
        for (int i=0; i<N; i++) {
            noteWifiMulticastDisabledLocked(ws.get(i));
        }
        final List<WorkChain> workChains = ws.getWorkChains();
        if (workChains != null) {
            for (int i = 0; i < workChains.size(); ++i) {
                noteWifiMulticastDisabledLocked(workChains.get(i).getAttributionUid());
            }
        }
    }
    private static String[] includeInStringArray(String[] array, String str) {
@@ -6476,8 +6602,6 @@ public class BatteryStatsImpl extends BatteryStats {
                            mBsi.mFullWifiLockTimers, mBsi.mOnBatteryTimeBase);
                }
                mFullWifiLockTimer.startRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.WIFI_LOCK_STATE_CHANGED, getUid(), 1);
            }
        }
@@ -6486,10 +6610,6 @@ public class BatteryStatsImpl extends BatteryStats {
            if (mFullWifiLockOut) {
                mFullWifiLockOut = false;
                mFullWifiLockTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mFullWifiLockTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.WIFI_LOCK_STATE_CHANGED, getUid(), 0);
                }
            }
        }
@@ -6503,8 +6623,6 @@ public class BatteryStatsImpl extends BatteryStats {
                            mOnBatteryBackgroundTimeBase);
                }
                mWifiScanTimer.startRunningLocked(elapsedRealtimeMs);
                // TODO(statsd): Possibly use a worksource instead of a uid.
                StatsLog.write(StatsLog.WIFI_SCAN_STATE_CHANGED, getUid(), 1);
            }
        }
@@ -6513,10 +6631,6 @@ public class BatteryStatsImpl extends BatteryStats {
            if (mWifiScanStarted) {
                mWifiScanStarted = false;
                mWifiScanTimer.stopRunningLocked(elapsedRealtimeMs);
                if (!mWifiScanTimer.isRunningLocked()) { // only tell statsd if truly stopped
                    // TODO(statsd): Possibly use a worksource instead of a uid.
                    StatsLog.write(StatsLog.WIFI_SCAN_STATE_CHANGED, getUid(), 0);
                }
            }
        }
+2 −2
Original line number Diff line number Diff line
@@ -3123,7 +3123,7 @@ public class WifiManager {

        public void setWorkSource(WorkSource ws) {
            synchronized (mBinder) {
                if (ws != null && ws.size() == 0) {
                if (ws != null && ws.isEmpty()) {
                    ws = null;
                }
                boolean changed = true;
@@ -3135,7 +3135,7 @@ public class WifiManager {
                        changed = mWorkSource != null;
                        mWorkSource = new WorkSource(ws);
                    } else {
                        changed = mWorkSource.diff(ws);
                        changed = !mWorkSource.equals(ws);
                        if (changed) {
                            mWorkSource.set(ws);
                        }