diff options
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java index 90ece0ba7c61..11a8b3b73075 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java @@ -729,17 +729,23 @@ public final class ConnectivityController extends RestrictingController implemen for (int j = 0; j < jobs.size(); ++j) { JobStatus job = jobs.valueAt(j); - us.earliestEnqueueTime = Math.min(us.earliestEnqueueTime, job.enqueueTime); if (wouldBeReadyWithConstraintLocked(job, JobStatus.CONSTRAINT_CONNECTIVITY)) { us.numReadyWithConnectivity++; if (isNetworkAvailable(job)) { us.numRequestedNetworkAvailable++; } + // Only use the enqueue time of jobs that would be ready to prevent apps + // from gaming the system (eg. by scheduling a job that requires all + // constraints and has a minimum latency of 6 months to always have the + // earliest enqueue time). + us.earliestEnqueueTime = Math.min(us.earliestEnqueueTime, job.enqueueTime); + if (job.shouldTreatAsExpeditedJob() || job.startedAsExpeditedJob) { + us.earliestEJEnqueueTime = + Math.min(us.earliestEJEnqueueTime, job.enqueueTime); + } } if (job.shouldTreatAsExpeditedJob() || job.startedAsExpeditedJob) { us.numEJs++; - us.earliestEJEnqueueTime = - Math.min(us.earliestEJEnqueueTime, job.enqueueTime); } else { us.numRegular++; } |