diff options
4 files changed, 6 insertions, 40 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 235dbeeb9e27..5cf909095de2 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -6621,8 +6621,8 @@ public final class ActiveServices { final Integer allowedType = mAm.mProcessList.searchEachLruProcessesLOSP(false, app -> { if (app.uid == callingUid) { final ProcessStateRecord state = app.mState; - if (state.isAllowedStartFgsState()) { - return getReasonCodeFromProcState(state.getAllowStartFgsState()); + if (state.isAllowedStartFgs()) { + return getReasonCodeFromProcState(state.getCurProcState()); } else { final ActiveInstrumentation instr = app.getActiveInstrumentation(); if (instr != null diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index 4ecc36d2750c..4d10574149ff 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -1478,7 +1478,6 @@ public class OomAdjuster { state.setAdjTarget(null); state.setEmpty(false); state.setCached(false); - state.resetAllowStartFgsState(); if (!cycleReEval) { // Don't reset this flag when doing cycles re-evaluation. state.setNoKillOnBgRestrictedAndIdle(false); @@ -1537,7 +1536,6 @@ public class OomAdjuster { state.setCurRawProcState(state.getCurProcState()); state.setCurAdj(state.getMaxAdj()); state.setCompletedAdjSeq(state.getAdjSeq()); - state.bumpAllowStartFgsState(state.getCurProcState()); // if curAdj is less than prevAppAdj, then this process was promoted return state.getCurAdj() < prevAppAdj || state.getCurProcState() < prevProcState; } @@ -1563,7 +1561,6 @@ public class OomAdjuster { foregroundActivities = true; hasVisibleActivities = true; procState = PROCESS_STATE_CUR_TOP; - state.bumpAllowStartFgsState(PROCESS_STATE_TOP); if (DEBUG_OOM_ADJ_REASON || logUid == appUid) { reportOomAdjMessageLocked(TAG_OOM_ADJ, "Making top: " + app); } @@ -1661,7 +1658,6 @@ public class OomAdjuster { // The user is aware of this app, so make it visible. adj = ProcessList.PERCEPTIBLE_APP_ADJ; procState = PROCESS_STATE_FOREGROUND_SERVICE; - state.bumpAllowStartFgsState(PROCESS_STATE_FOREGROUND_SERVICE); state.setAdjType("fg-service"); state.setCached(false); schedGroup = ProcessList.SCHED_GROUP_DEFAULT; @@ -2103,8 +2099,6 @@ public class OomAdjuster { // give them the best bound state after that. if (cr.hasFlag(Context.BIND_FOREGROUND_SERVICE)) { clientProcState = PROCESS_STATE_BOUND_FOREGROUND_SERVICE; - state.bumpAllowStartFgsState( - PROCESS_STATE_BOUND_FOREGROUND_SERVICE); } else if (mService.mWakefulness.get() == PowerManagerInternal.WAKEFULNESS_AWAKE && (cr.flags & Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE) @@ -2118,7 +2112,6 @@ public class OomAdjuster { // Go at most to BOUND_TOP, unless requested to elevate // to client's state. clientProcState = PROCESS_STATE_BOUND_TOP; - state.bumpAllowStartFgsState(PROCESS_STATE_BOUND_TOP); final boolean enabled = cstate.getCachedCompatChange( CACHED_COMPAT_CHANGE_PROCESS_CAPABILITY); if (enabled) { diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java index b08f6c1949be..e0660b41a232 100644 --- a/services/core/java/com/android/server/am/ProcessStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessStateRecord.java @@ -296,13 +296,6 @@ final class ProcessStateRecord { private boolean mSystemNoUi; /** - * If the proc state is PROCESS_STATE_BOUND_FOREGROUND_SERVICE or above, it can start FGS. - * It must obtain the proc state from a persistent/top process or FGS, not transitive. - */ - @GuardedBy("mService") - private int mAllowStartFgsState = PROCESS_STATE_NONEXISTENT; - - /** * Whether or not the app is background restricted (OP_RUN_ANY_IN_BACKGROUND is NOT allowed). */ @GuardedBy("mService") @@ -1165,33 +1158,15 @@ final class ProcessStateRecord { mCurRawAdj = mSetRawAdj = mCurAdj = mSetAdj = mVerifiedAdj = ProcessList.INVALID_ADJ; mCurCapability = mSetCapability = PROCESS_CAPABILITY_NONE; mCurSchedGroup = mSetSchedGroup = ProcessList.SCHED_GROUP_BACKGROUND; - mCurProcState = mCurRawProcState = mSetProcState = mAllowStartFgsState = - PROCESS_STATE_NONEXISTENT; + mCurProcState = mCurRawProcState = mSetProcState = PROCESS_STATE_NONEXISTENT; for (int i = 0; i < mCachedCompatChanges.length; i++) { mCachedCompatChanges[i] = VALUE_INVALID; } } @GuardedBy("mService") - void resetAllowStartFgsState() { - mAllowStartFgsState = PROCESS_STATE_NONEXISTENT; - } - - @GuardedBy("mService") - void bumpAllowStartFgsState(int newProcState) { - if (newProcState < mAllowStartFgsState) { - mAllowStartFgsState = newProcState; - } - } - - @GuardedBy("mService") - int getAllowStartFgsState() { - return mAllowStartFgsState; - } - - @GuardedBy("mService") - boolean isAllowedStartFgsState() { - return mAllowStartFgsState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE; + boolean isAllowedStartFgs() { + return mCurProcState <= PROCESS_STATE_BOUND_FOREGROUND_SERVICE; } @GuardedBy("mService") @@ -1331,8 +1306,6 @@ final class ProcessStateRecord { pw.print(" setCapability="); ActivityManager.printCapabilitiesFull(pw, mSetCapability); pw.println(); - pw.print(prefix); pw.print("allowStartFgsState="); - pw.print(mAllowStartFgsState); if (mBackgroundRestricted) { pw.print(" backgroundRestricted="); pw.print(mBackgroundRestricted); diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index 5a55b8b33cad..480e69bd4f19 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -488,7 +488,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN pw.print(prefix); pw.print("recentCallingUid="); pw.println(mRecentCallingUid); pw.print(prefix); pw.print("allowStartForeground="); - pw.println(mAllowStartForeground); + pw.println(PowerExemptionManager.reasonCodeToString(mAllowStartForeground)); pw.print(prefix); pw.print("startForegroundCount="); pw.println(mStartForegroundCount); pw.print(prefix); pw.print("infoAllowStartForeground="); |