From 7820b0daadcdb1d3e383d76c3685d719f359f5bd Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Mon, 2 Mar 2020 15:28:36 -0800 Subject: [PATCH] Reevaluate constraints on run command. Reevaluate a UID's constraints when "cmd jobscheduler run" is called so that the latest constraint status is used. Bug: 138253466 Test: atest CtsJobSchedulerTestCases Change-Id: Ib9301a55ac54d3c1b8b738615be3e9f6e649b7e8 --- .../java/com/android/server/job/JobSchedulerService.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 8c08e757e4057..fc29c9cf10355 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -2833,6 +2833,13 @@ public class JobSchedulerService extends com.android.server.SystemService } js.overrideState = (force) ? JobStatus.OVERRIDE_FULL : JobStatus.OVERRIDE_SOFT; + + // Re-evaluate constraints after the override is set in case one of the overridden + // constraints was preventing another constraint from thinking it needed to update. + for (int c = mControllers.size() - 1; c >= 0; --c) { + mControllers.get(c).reevaluateStateLocked(uid); + } + if (!js.isConstraintsSatisfied()) { js.overrideState = 0; return JobSchedulerShellCommand.CMD_ERR_CONSTRAINTS;