Loading apex/jobscheduler/framework/java/android/app/job/JobInfo.java +35 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +11 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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()); Loading Loading
apex/jobscheduler/framework/java/android/app/job/JobInfo.java +35 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +11 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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()); Loading