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 251a4dac36850..30977e4d56c71 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 @@ -607,7 +607,7 @@ public final class JobStatus { // The first time a job is rescheduled it will not be subject to flexible constraints. // Otherwise, every consecutive reschedule increases a jobs' flexibility deadline. - if (!isRequestedExpeditedJob() + if (!isRequestedExpeditedJob() && !job.isUserInitiated() && satisfiesMinWindowException && (numFailures + numSystemStops) != 1 && lacksSomeFlexibleConstraints) { diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/FlexibilityControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/FlexibilityControllerTest.java index 3bee6871b4b91..398acb81378dd 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/FlexibilityControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/FlexibilityControllerTest.java @@ -616,6 +616,14 @@ public class FlexibilityControllerTest { assertFalse(js.hasFlexibilityConstraint()); } + @Test + public void testExceptions_UserInitiated() { + JobInfo.Builder jb = createJob(0); + jb.setUserInitiated(true); + JobStatus js = createJobStatus("testExceptions_UserInitiated", jb); + assertFalse(js.hasFlexibilityConstraint()); + } + @Test public void testExceptions_ShortWindow() { JobInfo.Builder jb = createJob(0);