Loading apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +16 −3 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void startTrackingLocked() { mAppStateTracker.addListener(mForceAppStandbyListener); final IntentFilter filter = new IntentFilter(); Loading @@ -137,15 +138,18 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) { updateSingleJobRestrictionLocked(jobStatus, sElapsedRealtimeClock.millis(), UNKNOWN); } @Override @GuardedBy("mLock") public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) { } @Override @GuardedBy("mLock") public void evaluateStateLocked(JobStatus jobStatus) { if (jobStatus.isRequestedExpeditedJob()) { // Only requested-EJs could have their run-in-bg constraint change outside of something Loading @@ -155,11 +159,13 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void onAppRemovedLocked(String packageName, int uid) { mPackageStoppedState.delete(uid, packageName); } @Override @GuardedBy("mLock") public void onUserRemovedLocked(int userId) { for (int u = mPackageStoppedState.numMaps() - 1; u >= 0; --u) { final int uid = mPackageStoppedState.keyAt(u); Loading @@ -170,6 +176,7 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void dumpControllerStateLocked(final IndentingPrintWriter pw, final Predicate<JobStatus> predicate) { pw.println("Aconfig flags:"); Loading Loading @@ -223,6 +230,7 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId, Predicate<JobStatus> predicate) { final long token = proto.start(fieldId); Loading Loading @@ -260,14 +268,17 @@ public final class BackgroundJobsController extends StateController { proto.end(token); } @GuardedBy("mLock") private void updateAllJobRestrictionsLocked() { updateJobRestrictionsLocked(/*filterUid=*/ -1, UNKNOWN); } @GuardedBy("mLock") private void updateJobRestrictionsForUidLocked(int uid, boolean isActive) { updateJobRestrictionsLocked(uid, (isActive) ? KNOWN_ACTIVE : KNOWN_INACTIVE); } @GuardedBy("mLock") private void updateJobRestrictionsLocked(int filterUid, int newActiveState) { mUpdateJobFunctor.prepare(newActiveState); Loading Loading @@ -295,7 +306,8 @@ public final class BackgroundJobsController extends StateController { } } private boolean isPackageStopped(String packageName, int uid) { @GuardedBy("mLock") private boolean isPackageStoppedLocked(String packageName, int uid) { if (mPackageStoppedState.contains(uid, packageName)) { return mPackageStoppedState.get(uid, packageName); } Loading @@ -304,19 +316,20 @@ public final class BackgroundJobsController extends StateController { return isStopped; } @GuardedBy("mLock") boolean updateSingleJobRestrictionLocked(JobStatus jobStatus, final long nowElapsed, int activeState) { final int uid = jobStatus.getSourceUid(); final String packageName = jobStatus.getSourcePackageName(); final boolean isSourcePkgStopped = isPackageStopped(jobStatus.getSourcePackageName(), jobStatus.getSourceUid()); isPackageStoppedLocked(jobStatus.getSourcePackageName(), jobStatus.getSourceUid()); final boolean isCallingPkgStopped; if (!jobStatus.isProxyJob()) { isCallingPkgStopped = isSourcePkgStopped; } else { isCallingPkgStopped = isPackageStopped(jobStatus.getCallingPackageName(), jobStatus.getUid()); isPackageStoppedLocked(jobStatus.getCallingPackageName(), jobStatus.getUid()); } final boolean isStopped = android.content.pm.Flags.stayStopped() && (isCallingPkgStopped || isSourcePkgStopped); Loading services/tests/mockingservicestests/src/com/android/server/job/controllers/BackgroundJobsControllerTest.java +1 −1 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +16 −3 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void startTrackingLocked() { mAppStateTracker.addListener(mForceAppStandbyListener); final IntentFilter filter = new IntentFilter(); Loading @@ -137,15 +138,18 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) { updateSingleJobRestrictionLocked(jobStatus, sElapsedRealtimeClock.millis(), UNKNOWN); } @Override @GuardedBy("mLock") public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) { } @Override @GuardedBy("mLock") public void evaluateStateLocked(JobStatus jobStatus) { if (jobStatus.isRequestedExpeditedJob()) { // Only requested-EJs could have their run-in-bg constraint change outside of something Loading @@ -155,11 +159,13 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void onAppRemovedLocked(String packageName, int uid) { mPackageStoppedState.delete(uid, packageName); } @Override @GuardedBy("mLock") public void onUserRemovedLocked(int userId) { for (int u = mPackageStoppedState.numMaps() - 1; u >= 0; --u) { final int uid = mPackageStoppedState.keyAt(u); Loading @@ -170,6 +176,7 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void dumpControllerStateLocked(final IndentingPrintWriter pw, final Predicate<JobStatus> predicate) { pw.println("Aconfig flags:"); Loading Loading @@ -223,6 +230,7 @@ public final class BackgroundJobsController extends StateController { } @Override @GuardedBy("mLock") public void dumpControllerStateLocked(ProtoOutputStream proto, long fieldId, Predicate<JobStatus> predicate) { final long token = proto.start(fieldId); Loading Loading @@ -260,14 +268,17 @@ public final class BackgroundJobsController extends StateController { proto.end(token); } @GuardedBy("mLock") private void updateAllJobRestrictionsLocked() { updateJobRestrictionsLocked(/*filterUid=*/ -1, UNKNOWN); } @GuardedBy("mLock") private void updateJobRestrictionsForUidLocked(int uid, boolean isActive) { updateJobRestrictionsLocked(uid, (isActive) ? KNOWN_ACTIVE : KNOWN_INACTIVE); } @GuardedBy("mLock") private void updateJobRestrictionsLocked(int filterUid, int newActiveState) { mUpdateJobFunctor.prepare(newActiveState); Loading Loading @@ -295,7 +306,8 @@ public final class BackgroundJobsController extends StateController { } } private boolean isPackageStopped(String packageName, int uid) { @GuardedBy("mLock") private boolean isPackageStoppedLocked(String packageName, int uid) { if (mPackageStoppedState.contains(uid, packageName)) { return mPackageStoppedState.get(uid, packageName); } Loading @@ -304,19 +316,20 @@ public final class BackgroundJobsController extends StateController { return isStopped; } @GuardedBy("mLock") boolean updateSingleJobRestrictionLocked(JobStatus jobStatus, final long nowElapsed, int activeState) { final int uid = jobStatus.getSourceUid(); final String packageName = jobStatus.getSourcePackageName(); final boolean isSourcePkgStopped = isPackageStopped(jobStatus.getSourcePackageName(), jobStatus.getSourceUid()); isPackageStoppedLocked(jobStatus.getSourcePackageName(), jobStatus.getSourceUid()); final boolean isCallingPkgStopped; if (!jobStatus.isProxyJob()) { isCallingPkgStopped = isSourcePkgStopped; } else { isCallingPkgStopped = isPackageStopped(jobStatus.getCallingPackageName(), jobStatus.getUid()); isPackageStoppedLocked(jobStatus.getCallingPackageName(), jobStatus.getUid()); } final boolean isStopped = android.content.pm.Flags.stayStopped() && (isCallingPkgStopped || isSourcePkgStopped); Loading
services/tests/mockingservicestests/src/com/android/server/job/controllers/BackgroundJobsControllerTest.java +1 −1 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading