From 9fb9350e49154e3677b37ee64a0f3b9087d25443 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 18 Jun 2018 12:29:44 -0700 Subject: [PATCH] Change app ops state timeouts to elapsed realtime We want to use elapsed realtime for this instead of uptime, so that the device going to sleep does not extend the duration for which an application may have access to an app op. Test: manual Bug: 109754053 Change-Id: I2bb1018b4c370cc6188eb7811ef29ae0e344b19b --- .../core/java/com/android/server/AppOpsService.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index 786d757557d16..1167e1d41a9cb 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -198,7 +198,7 @@ public class AppOpsService extends IAppOpsService.Stub { @VisibleForTesting final SparseArray mUidStates = new SparseArray<>(); - long mLastUptime; + long mLastRealtime; /* * These are app op restrictions imposed per user from various parties. @@ -770,7 +770,7 @@ public class AppOpsService extends IAppOpsService.Stub { } else { settleTime = mConstants.BG_STATE_SETTLE_TIME; } - uidState.pendingStateCommitTime = SystemClock.uptimeMillis() + settleTime; + uidState.pendingStateCommitTime = SystemClock.elapsedRealtime() + settleTime; } if (uidState.startNesting != 0) { // There is some actively running operation... need to find it @@ -1881,11 +1881,11 @@ public class AppOpsService extends IAppOpsService.Stub { mUidStates.put(uid, uidState); } else { if (uidState.pendingStateCommitTime != 0) { - if (uidState.pendingStateCommitTime < mLastUptime) { + if (uidState.pendingStateCommitTime < mLastRealtime) { commitUidPendingStateLocked(uidState); } else { - mLastUptime = SystemClock.uptimeMillis(); - if (uidState.pendingStateCommitTime < mLastUptime) { + mLastRealtime = SystemClock.elapsedRealtime(); + if (uidState.pendingStateCommitTime < mLastRealtime) { commitUidPendingStateLocked(uidState); } } @@ -3284,7 +3284,7 @@ public class AppOpsService extends IAppOpsService.Stub { } if (uidState.pendingStateCommitTime != 0) { pw.print(" pendingStateCommitTime="); - TimeUtils.formatDuration(uidState.pendingStateCommitTime, nowUptime, pw); + TimeUtils.formatDuration(uidState.pendingStateCommitTime, nowElapsed, pw); pw.println(); } if (uidState.startNesting != 0) {