From 911ef5217963786b86707f5d1a026eb2ff6af76d Mon Sep 17 00:00:00 2001 From: Varun Shah Date: Fri, 9 Apr 2021 14:46:43 -0700 Subject: [PATCH] Use elapsed-time in AppTimeLimitController. Bug: 181983817 Test: atest AppTimeLimitControllerTests Change-Id: Ia0f20475ebd54039a1a4fd3206d730a8d5649765 --- .../usage/AppTimeLimitControllerTests.java | 8 ++++---- .../server/usage/AppTimeLimitController.java | 19 +++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/services/tests/servicestests/src/com/android/server/usage/AppTimeLimitControllerTests.java b/services/tests/servicestests/src/com/android/server/usage/AppTimeLimitControllerTests.java index 958b23ff773f8..7d86961392450 100644 --- a/services/tests/servicestests/src/com/android/server/usage/AppTimeLimitControllerTests.java +++ b/services/tests/servicestests/src/com/android/server/usage/AppTimeLimitControllerTests.java @@ -91,7 +91,7 @@ public class AppTimeLimitControllerTests { private HandlerThread mThread; - private long mUptimeMillis; + private long mElapsedTime; AppTimeLimitController.TimeLimitCallbackListener mListener = new AppTimeLimitController.TimeLimitCallbackListener() { @@ -116,8 +116,8 @@ public class AppTimeLimitControllerTests { } @Override - protected long getUptimeMillis() { - return mUptimeMillis; + protected long getElapsedRealtime() { + return mElapsedTime; } @Override @@ -1108,6 +1108,6 @@ public class AppTimeLimitControllerTests { } private void setTime(long time) { - mUptimeMillis = time; + mElapsedTime = time; } } diff --git a/services/usage/java/com/android/server/usage/AppTimeLimitController.java b/services/usage/java/com/android/server/usage/AppTimeLimitController.java index 4986d1883307f..1dc1e7776b010 100644 --- a/services/usage/java/com/android/server/usage/AppTimeLimitController.java +++ b/services/usage/java/com/android/server/usage/AppTimeLimitController.java @@ -536,14 +536,13 @@ public class AppTimeLimitController { long getUsageRemaining() { // If there is currently an active session, account for its usage if (mActives > 0) { - return mTimeLimitMs - mUsageTimeMs - (getUptimeMillis() - mLastKnownUsageTimeMs); + return mTimeLimitMs - mUsageTimeMs - (getElapsedRealtime() - mLastKnownUsageTimeMs); } else { return mTimeLimitMs - mUsageTimeMs; } } } - private class MyHandler extends Handler { static final int MSG_CHECK_TIMEOUT = 1; static final int MSG_INFORM_LIMIT_REACHED_LISTENER = 2; @@ -558,7 +557,7 @@ public class AppTimeLimitController { switch (msg.what) { case MSG_CHECK_TIMEOUT: synchronized (mLock) { - ((UsageGroup) msg.obj).checkTimeout(getUptimeMillis()); + ((UsageGroup) msg.obj).checkTimeout(getElapsedRealtime()); } break; case MSG_INFORM_LIMIT_REACHED_LISTENER: @@ -585,8 +584,8 @@ public class AppTimeLimitController { /** Overrideable by a test */ @VisibleForTesting - protected long getUptimeMillis() { - return SystemClock.uptimeMillis(); + protected long getElapsedRealtime() { + return SystemClock.elapsedRealtime(); } /** Overrideable for testing purposes */ @@ -760,7 +759,7 @@ public class AppTimeLimitController { } user.addUsageGroup(group); - noteActiveLocked(user, group, getUptimeMillis()); + noteActiveLocked(user, group, getElapsedRealtime()); } } @@ -813,7 +812,7 @@ public class AppTimeLimitController { observerApp.sessionUsageGroups.append(observerId, group); user.addUsageGroup(group); - noteActiveLocked(user, group, getUptimeMillis()); + noteActiveLocked(user, group, getElapsedRealtime()); } } @@ -869,7 +868,7 @@ public class AppTimeLimitController { } user.addUsageGroup(group); - noteActiveLocked(user, group, getUptimeMillis()); + noteActiveLocked(user, group, getElapsedRealtime()); } } @@ -914,7 +913,7 @@ public class AppTimeLimitController { return; } } - final long currentTime = getUptimeMillis(); + final long currentTime = getElapsedRealtime(); user.currentlyActive.put(name, ONE); @@ -964,7 +963,7 @@ public class AppTimeLimitController { } user.currentlyActive.removeAt(index); - final long currentTime = getUptimeMillis(); + final long currentTime = getElapsedRealtime(); // Check if any of the groups need to watch for this entity ArrayList groups = user.observedMap.get(name);