diff options
| author | 2022-01-24 22:53:18 +0000 | |
|---|---|---|
| committer | 2022-01-24 22:53:18 +0000 | |
| commit | 2f3e7488cb56a1d54c5d580433010ff344b0179f (patch) | |
| tree | 588b0d5bd51cb9acb02ebc333179c921314e8686 | |
| parent | 9e91d73a5e8593521929cae579710f843e84fb16 (diff) | |
| parent | 514337c716ede5aded2c07bff4e143c792ccc7c7 (diff) | |
Merge "Fix Doze FGS job handling."
3 files changed, 11 insertions, 13 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java index 12a8654c61f7..d93ad3c0d8bc 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -1633,12 +1633,9 @@ public class JobSchedulerService extends com.android.server.SystemService for (int i=0; i<mActiveServices.size(); i++) { final JobServiceContext jsc = mActiveServices.get(i); final JobStatus job = jsc.getRunningJobLocked(); - if (job != null - && !job.canRunInDoze() - && !job.dozeWhitelisted - && !job.uidActive) { - // We will report active if we have a job running and it is not an exception - // due to being in the foreground or whitelisted. + if (job != null && !job.canRunInDoze()) { + // We will report active if we have a job running and it does not have an + // exception that allows it to run in Doze. active = true; break; } diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java index 090260cb8eb3..f6de109d7ec9 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java @@ -246,7 +246,7 @@ public final class DeviceIdleJobsController extends StateController { pw.print((jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0 ? " RUNNABLE" : " WAITING"); - if (jobStatus.dozeWhitelisted) { + if (jobStatus.appHasDozeExemption) { pw.print(" WHITELISTED"); } if (mAllowInIdleJobs.contains(jobStatus)) { @@ -273,7 +273,7 @@ public final class DeviceIdleJobsController extends StateController { proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); - proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); + proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.appHasDozeExemption); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); proto.end(jsToken); diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java index f74a4facd24c..0eea70106608 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java @@ -267,7 +267,7 @@ public final class JobStatus { private final boolean mHasMediaBackupExemption; // Set to true if doze constraint was satisfied due to app being whitelisted. - public boolean dozeWhitelisted; + boolean appHasDozeExemption; // Set to true when the app is "active" per AppStateTracker public boolean uidActive; @@ -1179,7 +1179,8 @@ public final class JobStatus { * in Doze. */ public boolean canRunInDoze() { - return (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0 + return appHasDozeExemption + || (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0 || ((shouldTreatAsExpeditedJob() || startedAsExpeditedJob) && (mDynamicConstraints & CONSTRAINT_DEVICE_NOT_DOZING) == 0); } @@ -1243,7 +1244,7 @@ public final class JobStatus { /** @return true if the constraint was changed, false otherwise. */ boolean setDeviceNotDozingConstraintSatisfied(final long nowElapsed, boolean state, boolean whitelisted) { - dozeWhitelisted = whitelisted; + appHasDozeExemption = whitelisted; if (setConstraintSatisfied(CONSTRAINT_DEVICE_NOT_DOZING, nowElapsed, state)) { // The constraint was changed. Update the ready flag. mReadyNotDozing = state || canRunInDoze(); @@ -2110,7 +2111,7 @@ public final class JobStatus { } pw.decreaseIndent(); - if (dozeWhitelisted) { + if (appHasDozeExemption) { pw.println("Doze whitelisted: true"); } if (uidActive) { @@ -2323,7 +2324,7 @@ public final class JobStatus { dumpConstraints(proto, JobStatusDumpProto.SATISFIED_CONSTRAINTS, satisfiedConstraints); dumpConstraints(proto, JobStatusDumpProto.UNSATISFIED_CONSTRAINTS, ((requiredConstraints | CONSTRAINT_WITHIN_QUOTA) & ~satisfiedConstraints)); - proto.write(JobStatusDumpProto.IS_DOZE_WHITELISTED, dozeWhitelisted); + proto.write(JobStatusDumpProto.IS_DOZE_WHITELISTED, appHasDozeExemption); proto.write(JobStatusDumpProto.IS_UID_ACTIVE, uidActive); proto.write(JobStatusDumpProto.IS_EXEMPTED_FROM_APP_STANDBY, job.isExemptedFromAppStandby()); |