summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/jobscheduler/framework/java/android/app/job/JobInfo.java2
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java9
-rw-r--r--services/core/java/com/android/server/content/SyncOperation.java2
3 files changed, 7 insertions, 6 deletions
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
index 52442a66cf1d..b3c33b6615f4 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
@@ -1703,7 +1703,7 @@ public class JobInfo implements Parcelable {
throw new IllegalArgumentException("An expedited job cannot be periodic");
}
if ((constraintFlags & ~CONSTRAINT_FLAG_STORAGE_NOT_LOW) != 0
- || (flags & ~FLAG_EXPEDITED) != 0) {
+ || (flags & ~(FLAG_EXPEDITED | FLAG_EXEMPT_FROM_APP_STANDBY)) != 0) {
throw new IllegalArgumentException(
"An expedited job can only have network and storage-not-low constraints");
}
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 4bd1fd8e44cc..0314510b2b5a 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -1478,12 +1478,11 @@ public class SyncManager {
+ logSafe(syncOperation.target));
backoff = new Pair<Long, Long>(SyncStorageEngine.NOT_IN_BACKOFF_MODE,
SyncStorageEngine.NOT_IN_BACKOFF_MODE);
- } else {
+ } else if (backoff.first != SyncStorageEngine.NOT_IN_BACKOFF_MODE) {
// if an EJ is being backed-off but doesn't have SYNC_EXTRAS_IGNORE_BACKOFF set,
- // reschedule it as a regular job
- if (syncOperation.isScheduledAsExpeditedJob()) {
- syncOperation.scheduleEjAsRegularJob = true;
- }
+ // reschedule it as a regular job. Immediately downgrade here in case minDelay is
+ // set to 0.
+ syncOperation.scheduleEjAsRegularJob = true;
}
long now = SystemClock.elapsedRealtime();
long backoffDelay = backoff.first == SyncStorageEngine.NOT_IN_BACKOFF_MODE ? 0
diff --git a/services/core/java/com/android/server/content/SyncOperation.java b/services/core/java/com/android/server/content/SyncOperation.java
index c8654d1b36ee..f6fad2500626 100644
--- a/services/core/java/com/android/server/content/SyncOperation.java
+++ b/services/core/java/com/android/server/content/SyncOperation.java
@@ -258,6 +258,7 @@ public class SyncOperation {
jobInfoExtras.putLong("expectedRuntime", expectedRuntime);
jobInfoExtras.putInt("retries", retries);
jobInfoExtras.putInt("syncExemptionFlag", syncExemptionFlag);
+ jobInfoExtras.putBoolean("ejDowngradedToRegular", scheduleEjAsRegularJob);
return jobInfoExtras;
}
@@ -325,6 +326,7 @@ public class SyncOperation {
op.jobId = jobExtras.getInt("jobId");
op.expectedRuntime = jobExtras.getLong("expectedRuntime");
op.retries = jobExtras.getInt("retries");
+ op.scheduleEjAsRegularJob = jobExtras.getBoolean("ejDowngradedToRegular");
return op;
}