From a6c9fe409c08a14d42cb30c26baaeab59d4a67a8 Mon Sep 17 00:00:00 2001 From: Hui Yu Date: Fri, 4 Jun 2021 16:31:00 -0700 Subject: [PATCH] resetFgsRestrictionLocked() must be called AFTER logFGSStateChangeLocked(). Otherwise logFGSStateChangeLocked() picks up the wrong fields value from ServiceRecord. Bug: 190231954 Test: atest cts/tests/app/src/android/app/cts/ActivityManagerFgsBgStartTest.java Change-Id: I9ccfcb695da803350657836975ce03e05f26b4a4 --- services/core/java/com/android/server/am/ActiveServices.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 6dd4f040f7651..afaddd9c418ed 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -1930,7 +1930,6 @@ public final class ActiveServices { decActiveForegroundAppLocked(smap, r); } r.isForeground = false; - resetFgsRestrictionLocked(r); r.mFgsExitTime = SystemClock.uptimeMillis(); ServiceState stracker = r.getTracker(); if (stracker != null) { @@ -1945,6 +1944,7 @@ public final class ActiveServices { FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT, r.mFgsExitTime > r.mFgsEnterTime ? (int)(r.mFgsExitTime - r.mFgsEnterTime) : 0); + resetFgsRestrictionLocked(r); mAm.updateForegroundServiceUsageStats(r.name, r.userId, false); if (r.app != null) { mAm.updateLruProcessLocked(r.app, false, null); @@ -4192,8 +4192,7 @@ public final class ActiveServices { r.isForeground = false; r.foregroundId = 0; r.foregroundNoti = null; - r.mAllowWhileInUsePermissionInFgs = false; - r.mAllowStartForeground = REASON_DENIED; + resetFgsRestrictionLocked(r); // Clear start entries. r.clearDeliveredStartsLocked();