diff options
| author | 2021-03-24 02:41:27 +0000 | |
|---|---|---|
| committer | 2021-03-24 02:41:27 +0000 | |
| commit | b2d5ab569cadfb1b200c0bce166a0c59bb404250 (patch) | |
| tree | 5605d9a16ea0cc850222be567c49a584bbc018c4 | |
| parent | c289c9b0a237dff74e33526d63c7f5ff1c1fd7e6 (diff) | |
| parent | 686d8289896ab312776436e4b7e0e05c89e10993 (diff) | |
Merge "Remove the hidden NetworkRequest usage"
| -rw-r--r-- | apex/jobscheduler/framework/java/android/app/job/JobInfo.java | 35 | ||||
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java | 12 |
2 files changed, 46 insertions, 1 deletions
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java index 24b8055b9a57..a3fa8ac9958c 100644 --- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java @@ -1006,6 +1006,41 @@ public class JobInfo implements Parcelable { mJobId = jobId; } + /** + * Creates a new Builder of JobInfo from an existing instance. + * @hide + */ + public Builder(@NonNull JobInfo job) { + mJobId = job.getId(); + mJobService = job.getService(); + mExtras = job.getExtras(); + mTransientExtras = job.getTransientExtras(); + mClipData = job.getClipData(); + mClipGrantFlags = job.getClipGrantFlags(); + mPriority = job.getPriority(); + mFlags = job.getFlags(); + mConstraintFlags = job.getConstraintFlags(); + mNetworkRequest = job.getRequiredNetwork(); + mNetworkDownloadBytes = job.getEstimatedNetworkDownloadBytes(); + mNetworkUploadBytes = job.getEstimatedNetworkUploadBytes(); + mTriggerContentUris = job.getTriggerContentUris() != null + ? new ArrayList<>(Arrays.asList(job.getTriggerContentUris())) : null; + mTriggerContentUpdateDelay = job.getTriggerContentUpdateDelay(); + mTriggerContentMaxDelay = job.getTriggerContentMaxDelay(); + mIsPersisted = job.isPersisted(); + mMinLatencyMillis = job.getMinLatencyMillis(); + mMaxExecutionDelayMillis = job.getMaxExecutionDelayMillis(); + mIsPeriodic = job.isPeriodic(); + mHasEarlyConstraint = job.hasEarlyConstraint(); + mHasLateConstraint = job.hasLateConstraint(); + mIntervalMillis = job.getIntervalMillis(); + mFlexMillis = job.getFlexMillis(); + mInitialBackoffMillis = job.getInitialBackoffMillis(); + // mBackoffPolicySet isn't set but it's fine since this is copying from an already valid + // job. + mBackoffPolicy = job.getBackoffPolicy(); + } + /** @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public Builder setPriority(int priority) { 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 d7be2595e88b..ea8e7bc4ab06 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 @@ -28,6 +28,7 @@ import android.app.job.JobWorkItem; import android.content.ClipData; import android.content.ComponentName; import android.net.Network; +import android.net.NetworkRequest; import android.net.Uri; import android.os.RemoteException; import android.os.UserHandle; @@ -35,6 +36,7 @@ import android.provider.MediaStore; import android.text.format.DateFormat; import android.util.ArraySet; import android.util.Pair; +import android.util.Range; import android.util.Slog; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; @@ -52,6 +54,7 @@ import com.android.server.job.JobStatusShortInfoProto; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.function.Predicate; /** @@ -486,8 +489,15 @@ public final class JobStatus { // Later, when we check if a given network satisfies the required // network, we need to know the UID that is requesting it, so push // our source UID into place. - job.getRequiredNetwork().networkCapabilities.setSingleUid(this.sourceUid); + final JobInfo.Builder builder = new JobInfo.Builder(job); + final NetworkRequest.Builder requestBuilder = + new NetworkRequest.Builder(job.getRequiredNetwork()); + requestBuilder.setUids( + Collections.singleton(new Range<Integer>(this.sourceUid, this.sourceUid))); + builder.setRequiredNetwork(requestBuilder.build()); + job = builder.build(); } + final JobSchedulerInternal jsi = LocalServices.getService(JobSchedulerInternal.class); mHasMediaBackupExemption = !job.hasLateConstraint() && exemptedMediaUrisOnly && requiresNetwork && this.sourcePackageName.equals(jsi.getMediaBackupPackage()); |