diff options
5 files changed, 15 insertions, 20 deletions
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl index 04f7c76c8e74..a44fd675a709 100644 --- a/core/java/com/android/internal/app/IBatteryStats.aidl +++ b/core/java/com/android/internal/app/IBatteryStats.aidl @@ -130,7 +130,7 @@ interface IBatteryStats { long getAwakeTimePlugged(); void noteBleScanStarted(in WorkSource ws, boolean isUnoptimized); - void noteBleScanStopped(in WorkSource ws); + void noteBleScanStopped(in WorkSource ws, boolean isUnoptimized); void noteResetBleScan(); void noteBleScanResults(in WorkSource ws, int numNewResults); diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index dd7d43d99b4a..30875a86d30b 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -4852,7 +4852,7 @@ public class BatteryStatsImpl extends BatteryStats { } } - private void noteBluetoothScanStoppedLocked(int uid) { + private void noteBluetoothScanStoppedLocked(int uid, boolean isUnoptimized) { uid = mapUid(uid); final long elapsedRealtime = mClocks.elapsedRealtime(); final long uptime = mClocks.uptimeMillis(); @@ -4864,13 +4864,13 @@ public class BatteryStatsImpl extends BatteryStats { addHistoryRecordLocked(elapsedRealtime, uptime); mBluetoothScanTimer.stopRunningLocked(elapsedRealtime); } - getUidStatsLocked(uid).noteBluetoothScanStoppedLocked(elapsedRealtime); + getUidStatsLocked(uid).noteBluetoothScanStoppedLocked(elapsedRealtime, isUnoptimized); } - public void noteBluetoothScanStoppedFromSourceLocked(WorkSource ws) { + public void noteBluetoothScanStoppedFromSourceLocked(WorkSource ws, boolean isUnoptimized) { final int N = ws.size(); for (int i = 0; i < N; i++) { - noteBluetoothScanStoppedLocked(ws.get(i)); + noteBluetoothScanStoppedLocked(ws.get(i), isUnoptimized); } } @@ -6121,14 +6121,11 @@ public class BatteryStatsImpl extends BatteryStats { } } - public void noteBluetoothScanStoppedLocked(long elapsedRealtimeMs) { + public void noteBluetoothScanStoppedLocked(long elapsedRealtimeMs, boolean isUnoptimized) { if (mBluetoothScanTimer != null) { mBluetoothScanTimer.stopRunningLocked(elapsedRealtimeMs); } - // In the ble code, a scan cannot change types and nested starts are not possible. - // So if an unoptimizedScan is running, it is now being stopped. - if (mBluetoothUnoptimizedScanTimer != null - && mBluetoothUnoptimizedScanTimer.isRunningLocked()) { + if (isUnoptimized && mBluetoothUnoptimizedScanTimer != null) { mBluetoothUnoptimizedScanTimer.stopRunningLocked(elapsedRealtimeMs); } } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java index c539f789ff60..c21c3be2bcbe 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java @@ -217,10 +217,6 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { curr = 1000 * (clocks.realtime = clocks.uptime = 305); bi.updateTimeBasesLocked(false, false, curr, curr); // off battery - // Stop timer - curr = 1000 * (clocks.realtime = clocks.uptime = 409); - bi.noteBluetoothScanStoppedFromSourceLocked(ws); - // Start timer (unoptimized) curr = 1000 * (clocks.realtime = clocks.uptime = 1000); bi.noteBluetoothScanStartedFromSourceLocked(ws, true); @@ -233,9 +229,13 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { curr = 1000 * (clocks.realtime = clocks.uptime = 3004); bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_TOP); - // Stop timer + // Stop timer (optimized) + curr = 1000 * (clocks.realtime = clocks.uptime = 3409); + bi.noteBluetoothScanStoppedFromSourceLocked(ws, false); + + // Stop timer (unoptimized) curr = 1000 * (clocks.realtime = clocks.uptime = 4008); - bi.noteBluetoothScanStoppedFromSourceLocked(ws); + bi.noteBluetoothScanStoppedFromSourceLocked(ws, true); // Test curr = 1000 * (clocks.realtime = clocks.uptime = 5000); diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java index 4e8ab316e1c9..ed54f5303750 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java @@ -44,8 +44,6 @@ public class BatteryStatsNoteTest extends TestCase{ assertEquals(101, bi.getUidStats().get(UID).getBluetoothScanResultCounter() .getCountLocked(STATS_SINCE_CHARGED)); - // TODO: remove next line when Counter misreporting values when plugged-in bug is fixed. - bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND); BatteryStats.Counter bgCntr = bi.getUidStats().get(UID).getBluetoothScanResultBgCounter(); if (bgCntr != null) { assertEquals(0, bgCntr.getCountLocked(STATS_SINCE_CHARGED)); diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 06ab75a8fb40..65697e9d7143 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -985,10 +985,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub } @Override - public void noteBleScanStopped(WorkSource ws) { + public void noteBleScanStopped(WorkSource ws, boolean isUnoptimized) { enforceCallingPermission(); synchronized (mStats) { - mStats.noteBluetoothScanStoppedFromSourceLocked(ws); + mStats.noteBluetoothScanStoppedFromSourceLocked(ws, isUnoptimized); } } |