Merge "Remove the hidden NetworkRequest usage"
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user