diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java index 144536ec2644d..9ab0ad5e5d5eb 100644 --- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java @@ -1250,6 +1250,11 @@ public class JobInfo implements Parcelable { */ public Builder setEstimatedNetworkBytes(@BytesLong long downloadBytes, @BytesLong long uploadBytes) { + if ((downloadBytes != NETWORK_BYTES_UNKNOWN && downloadBytes < 0) + || (uploadBytes != NETWORK_BYTES_UNKNOWN && uploadBytes < 0)) { + throw new IllegalArgumentException( + "Can't provide negative estimated network usage"); + } mNetworkDownloadBytes = downloadBytes; mNetworkUploadBytes = uploadBytes; return this; @@ -1647,12 +1652,16 @@ public class JobInfo implements Parcelable { /** * @hide */ - public void enforceValidity() { + public final void enforceValidity() { // Check that network estimates require network type if ((networkDownloadBytes > 0 || networkUploadBytes > 0) && networkRequest == null) { throw new IllegalArgumentException( "Can't provide estimated network usage without requiring a network"); } + if ((networkDownloadBytes != NETWORK_BYTES_UNKNOWN && networkDownloadBytes < 0) + || (networkUploadBytes != NETWORK_BYTES_UNKNOWN && networkUploadBytes < 0)) { + throw new IllegalArgumentException("Can't provide negative estimated network usage"); + } // Check that a deadline was not set on a periodic job. if (isPeriodic) { diff --git a/apex/jobscheduler/framework/java/android/app/job/JobWorkItem.java b/apex/jobscheduler/framework/java/android/app/job/JobWorkItem.java index 0c45cbf6dc114..c6d366f675a50 100644 --- a/apex/jobscheduler/framework/java/android/app/job/JobWorkItem.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobWorkItem.java @@ -68,6 +68,10 @@ final public class JobWorkItem implements Parcelable { * uploaded by this job work item, in bytes. */ public JobWorkItem(Intent intent, @BytesLong long downloadBytes, @BytesLong long uploadBytes) { + if ((downloadBytes != NETWORK_BYTES_UNKNOWN && downloadBytes < 0) + || (uploadBytes != NETWORK_BYTES_UNKNOWN && uploadBytes < 0)) { + throw new IllegalArgumentException("Can't provide negative estimated network usage"); + } mIntent = intent; mNetworkDownloadBytes = downloadBytes; mNetworkUploadBytes = uploadBytes;