From 5104a0f29c0d4ab15a0b3ad68e3f64844b1347af Mon Sep 17 00:00:00 2001 From: Stanislav Zholnin Date: Mon, 2 Dec 2019 18:22:19 +0000 Subject: [PATCH] Make timestamps used in AppOpsService consistent. Bug:144997947 Test: make statsd_testdrive && ./out/host/linux-x86/bin/statsd_testdrive 10060 - no negative duration observed Change-Id: Ie65f2eec606b886921017061daf97679476cd84d --- services/core/java/com/android/server/appop/AppOpsService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 7e9a17bb8dbce..366766e2e47bc 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -1115,6 +1115,7 @@ public class AppOpsService extends IAppOpsService.Stub { // There is some actively running operation... need to find it // and appropriately update its state. final long now = System.currentTimeMillis(); + final long nowElapsed = SystemClock.elapsedRealtime(); for (int i = uidState.pkgOps.size() - 1; i >= 0; i--) { final Ops ops = uidState.pkgOps.valueAt(i); for (int j = ops.size() - 1; j >= 0; j--) { @@ -1136,7 +1137,7 @@ public class AppOpsService extends IAppOpsService.Stub { featureOp.finished(now, duration, oldPendingState, AppOpsManager.OP_FLAG_SELF); // Start the op in the new state - featureOp.startRealtime = now; + featureOp.startRealtime = nowElapsed; featureOp.started(now, newState, AppOpsManager.OP_FLAG_SELF); } }