Merge "Remove the hidden NetworkRequest usage" am: b2d5ab569c

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1649296

Change-Id: I88ec60e29e8a9e9b5511ce6b77bb7ec8bc7cbec8
This commit is contained in:
Chiachang Wang
2021-03-24 03:19:00 +00:00
committed by Automerger Merge Worker
2 changed files with 46 additions and 1 deletions

View File

@@ -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) {

View File

@@ -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());