Loading core/java/com/android/internal/os/BatteryStatsImpl.java +16 −8 Original line number Diff line number Diff line Loading @@ -546,9 +546,9 @@ public class BatteryStatsImpl extends BatteryStats { final LongArrayMultiStateCounter onBatteryScreenOffCounter = u.getProcStateScreenOffTimeCounter().getCounter(); if (uid == parentUid) { mKernelSingleUidTimeReader.addDelta(uid, onBatteryCounter, timestampMs); mKernelSingleUidTimeReader.addDelta(uid, onBatteryScreenOffCounter, if (uid == parentUid || Process.isSdkSandboxUid(uid)) { mKernelSingleUidTimeReader.addDelta(parentUid, onBatteryCounter, timestampMs); mKernelSingleUidTimeReader.addDelta(parentUid, onBatteryScreenOffCounter, timestampMs); } else { Uid.ChildUid childUid = u.getChildUid(uid); Loading Loading @@ -4560,7 +4560,10 @@ public class BatteryStatsImpl extends BatteryStats { mIsolatedUidRefCounts.put(uid, refCount + 1); } public int mapUid(int uid) { private int mapUid(int uid) { if (Process.isSdkSandboxUid(uid)) { return Process.getAppUidForSdkSandboxUid(uid); } int isolated = mIsolatedUids.get(uid, -1); return isolated > 0 ? isolated : uid; } Loading Loading @@ -4656,16 +4659,18 @@ public class BatteryStatsImpl extends BatteryStats { long elapsedRealtimeMs, long uptimeMs) { int parentUid = mapUid(uid); if (uid != parentUid) { if (Process.isIsolated(uid)) { // Isolated UIDs process state is already rolled up into parent, so no need to track // Otherwise the parent's process state will get downgraded incorrectly return; } } // TODO(b/155216561): It is possible for isolated uids to be in a higher // state than its parent uid. We should track the highest state within the union of host // and isolated uids rather than only the parent uid. FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid, ActivityManager.processStateAmToProto(state)); getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) getUidStatsLocked(parentUid, elapsedRealtimeMs, uptimeMs) .updateUidProcessStateLocked(state, elapsedRealtimeMs, uptimeMs); } Loading Loading @@ -15970,6 +15975,9 @@ public class BatteryStatsImpl extends BatteryStats { public Uid getUidStatsLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Uid u = mUidStats.get(uid); if (u == null) { if (Process.isSdkSandboxUid(uid)) { Log.wtf(TAG, "Tracking an SDK Sandbox UID"); } u = new Uid(this, uid, elapsedRealtimeMs, uptimeMs); mUidStats.put(uid, u); } core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import junit.framework.TestCase; public class BatteryStatsSensorTest extends TestCase { private static final int UID = 10500; private static final int UID_2 = 10501; // second uid for testing pool usage private static final int SENSOR_ID = -10000; @SmallTest Loading Loading @@ -239,7 +240,6 @@ public class BatteryStatsSensorTest extends TestCase { @SmallTest public void testPooledBackgroundUsage() throws Exception { final int UID_2 = 20000; // second uid for testing pool usage final MockClock clocks = new MockClock(); MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks); bi.mForceOnBattery = true; Loading services/core/java/com/android/server/am/AppProfiler.java +1 −2 Original line number Diff line number Diff line Loading @@ -1886,8 +1886,7 @@ public class AppProfiler { BatteryStatsImpl.Uid.Proc ps = st.batteryStats; if (ps == null || !ps.isActive()) { st.batteryStats = ps = bstats.getProcessStatsLocked( bstats.mapUid(st.uid), st.name, elapsedRealtime, uptime); st.uid, st.name, elapsedRealtime, uptime); } ps.addCpuTimeLocked(st.rel_utime, st.rel_stime); } Loading Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +16 −8 Original line number Diff line number Diff line Loading @@ -546,9 +546,9 @@ public class BatteryStatsImpl extends BatteryStats { final LongArrayMultiStateCounter onBatteryScreenOffCounter = u.getProcStateScreenOffTimeCounter().getCounter(); if (uid == parentUid) { mKernelSingleUidTimeReader.addDelta(uid, onBatteryCounter, timestampMs); mKernelSingleUidTimeReader.addDelta(uid, onBatteryScreenOffCounter, if (uid == parentUid || Process.isSdkSandboxUid(uid)) { mKernelSingleUidTimeReader.addDelta(parentUid, onBatteryCounter, timestampMs); mKernelSingleUidTimeReader.addDelta(parentUid, onBatteryScreenOffCounter, timestampMs); } else { Uid.ChildUid childUid = u.getChildUid(uid); Loading Loading @@ -4560,7 +4560,10 @@ public class BatteryStatsImpl extends BatteryStats { mIsolatedUidRefCounts.put(uid, refCount + 1); } public int mapUid(int uid) { private int mapUid(int uid) { if (Process.isSdkSandboxUid(uid)) { return Process.getAppUidForSdkSandboxUid(uid); } int isolated = mIsolatedUids.get(uid, -1); return isolated > 0 ? isolated : uid; } Loading Loading @@ -4656,16 +4659,18 @@ public class BatteryStatsImpl extends BatteryStats { long elapsedRealtimeMs, long uptimeMs) { int parentUid = mapUid(uid); if (uid != parentUid) { if (Process.isIsolated(uid)) { // Isolated UIDs process state is already rolled up into parent, so no need to track // Otherwise the parent's process state will get downgraded incorrectly return; } } // TODO(b/155216561): It is possible for isolated uids to be in a higher // state than its parent uid. We should track the highest state within the union of host // and isolated uids rather than only the parent uid. FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid, ActivityManager.processStateAmToProto(state)); getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs) getUidStatsLocked(parentUid, elapsedRealtimeMs, uptimeMs) .updateUidProcessStateLocked(state, elapsedRealtimeMs, uptimeMs); } Loading Loading @@ -15970,6 +15975,9 @@ public class BatteryStatsImpl extends BatteryStats { public Uid getUidStatsLocked(int uid, long elapsedRealtimeMs, long uptimeMs) { Uid u = mUidStats.get(uid); if (u == null) { if (Process.isSdkSandboxUid(uid)) { Log.wtf(TAG, "Tracking an SDK Sandbox UID"); } u = new Uid(this, uid, elapsedRealtimeMs, uptimeMs); mUidStats.put(uid, u); }
core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java +1 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import junit.framework.TestCase; public class BatteryStatsSensorTest extends TestCase { private static final int UID = 10500; private static final int UID_2 = 10501; // second uid for testing pool usage private static final int SENSOR_ID = -10000; @SmallTest Loading Loading @@ -239,7 +240,6 @@ public class BatteryStatsSensorTest extends TestCase { @SmallTest public void testPooledBackgroundUsage() throws Exception { final int UID_2 = 20000; // second uid for testing pool usage final MockClock clocks = new MockClock(); MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks); bi.mForceOnBattery = true; Loading
services/core/java/com/android/server/am/AppProfiler.java +1 −2 Original line number Diff line number Diff line Loading @@ -1886,8 +1886,7 @@ public class AppProfiler { BatteryStatsImpl.Uid.Proc ps = st.batteryStats; if (ps == null || !ps.isActive()) { st.batteryStats = ps = bstats.getProcessStatsLocked( bstats.mapUid(st.uid), st.name, elapsedRealtime, uptime); st.uid, st.name, elapsedRealtime, uptime); } ps.addCpuTimeLocked(st.rel_utime, st.rel_stime); } Loading