diff options
3 files changed, 46 insertions, 9 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 358f009e8797..d9fe30da2cb7 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -1310,7 +1310,16 @@ public class JobSchedulerService extends com.android.server.SystemService jobStatus.getJob().isPrefetch(), jobStatus.getJob().getPriority(), jobStatus.getEffectivePriority(), - jobStatus.getNumPreviousAttempts()); + jobStatus.getNumPreviousAttempts(), + jobStatus.getJob().getMaxExecutionDelayMillis(), + /* isDeadlineConstraintSatisfied */ false, + /* isCharging */ false, + /* batteryNotLow */ false, + /* storageNotLow */false, + /* timingDelayConstraintSatisfied */ false, + /* isDeviceIdle */ false, + /* hasConnectivityConstraintSatisfied */ false, + /* hasContentTriggerConstraintSatisfied */ false); // If the job is immediately ready to run, then we can just immediately // put it in the pending list and try to schedule it. This is especially @@ -1509,7 +1518,16 @@ public class JobSchedulerService extends com.android.server.SystemService cancelled.getJob().isPrefetch(), cancelled.getJob().getPriority(), cancelled.getEffectivePriority(), - cancelled.getNumPreviousAttempts()); + cancelled.getNumPreviousAttempts(), + cancelled.getJob().getMaxExecutionDelayMillis(), + cancelled.isConstraintSatisfied(JobStatus.CONSTRAINT_DEADLINE), + cancelled.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_CHARGING), + cancelled.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW), + cancelled.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW), + cancelled.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY), + cancelled.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE), + cancelled.isConstraintSatisfied(JobStatus.CONSTRAINT_CONNECTIVITY), + cancelled.isConstraintSatisfied(JobStatus.CONSTRAINT_CONTENT_TRIGGER)); } // If this is a replacement, bring in the new version of the job if (incomingJob != null) { diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java index 1615122ea2b4..9aa6b1c298ef 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java @@ -388,7 +388,16 @@ public final class JobServiceContext implements ServiceConnection { job.getJob().isPrefetch(), job.getJob().getPriority(), job.getEffectivePriority(), - job.getNumPreviousAttempts()); + job.getNumPreviousAttempts(), + job.getJob().getMaxExecutionDelayMillis(), + isDeadlineExpired, + job.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_CHARGING), + job.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW), + job.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW), + job.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY), + job.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE), + job.isConstraintSatisfied(JobStatus.CONSTRAINT_CONNECTIVITY), + job.isConstraintSatisfied(JobStatus.CONSTRAINT_CONTENT_TRIGGER)); if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) { // Use the context's ID to distinguish traces since there'll only be one job // running per context. @@ -1081,7 +1090,16 @@ public final class JobServiceContext implements ServiceConnection { completedJob.getJob().isPrefetch(), completedJob.getJob().getPriority(), completedJob.getEffectivePriority(), - completedJob.getNumPreviousAttempts()); + completedJob.getNumPreviousAttempts(), + completedJob.getJob().getMaxExecutionDelayMillis(), + mParams.isOverrideDeadlineExpired(), + completedJob.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_CHARGING), + completedJob.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW), + completedJob.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW), + completedJob.isConstraintSatisfied(JobStatus.CONSTRAINT_TIMING_DELAY), + completedJob.isConstraintSatisfied(JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE), + completedJob.isConstraintSatisfied(JobStatus.CONSTRAINT_CONNECTIVITY), + completedJob.isConstraintSatisfied(JobStatus.CONSTRAINT_CONTENT_TRIGGER)); if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) { Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_SYSTEM_SERVER, "JobScheduler", completedJob.getTag(), getId()); 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 92716f475b88..f6410ffbd3dd 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 @@ -95,11 +95,11 @@ public final class JobStatus { static final int CONSTRAINT_IDLE = JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE; // 1 << 2 static final int CONSTRAINT_BATTERY_NOT_LOW = JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW; // 1 << 1 static final int CONSTRAINT_STORAGE_NOT_LOW = JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW; // 1 << 3 - static final int CONSTRAINT_TIMING_DELAY = 1<<31; - static final int CONSTRAINT_DEADLINE = 1<<30; - static final int CONSTRAINT_CONNECTIVITY = 1 << 28; + public static final int CONSTRAINT_TIMING_DELAY = 1 << 31; + public static final int CONSTRAINT_DEADLINE = 1 << 30; + public static final int CONSTRAINT_CONNECTIVITY = 1 << 28; static final int CONSTRAINT_TARE_WEALTH = 1 << 27; // Implicit constraint - static final int CONSTRAINT_CONTENT_TRIGGER = 1<<26; + public static final int CONSTRAINT_CONTENT_TRIGGER = 1 << 26; static final int CONSTRAINT_DEVICE_NOT_DOZING = 1 << 25; // Implicit constraint static final int CONSTRAINT_WITHIN_QUOTA = 1 << 24; // Implicit constraint static final int CONSTRAINT_PREFETCH = 1 << 23; @@ -1613,7 +1613,8 @@ public final class JobStatus { } } - boolean isConstraintSatisfied(int constraint) { + /** @return whether or not the @param constraint is satisfied */ + public boolean isConstraintSatisfied(int constraint) { return (satisfiedConstraints&constraint) != 0; } |