Merge "Batterystats handles nested unoptimized ble scans" into oc-dr1-dev

This commit is contained in:
Ajay Panicker
2017-07-25 02:11:26 +00:00
committed by Android (Google) Code Review
5 changed files with 15 additions and 20 deletions

View File

@@ -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);

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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));

View File

@@ -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);
}
}