Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fb9350e authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

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
parent bb2c6c9f
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -198,7 +198,7 @@ public class AppOpsService extends IAppOpsService.Stub {
    @VisibleForTesting
    final SparseArray<UidState> 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) {