A recently added NetworkCapabilities feature expects that a
NetworkRequest defines a real UID in order for it to be satisfied
by a VPN-based network.
So when creating our JobStatus inside the system (either from a new
external request, or from a persisted job on disk), splice in the
source UID of the job, so that VPNs start matching.
Test: bit CtsJobSchedulerTestCases:*
Bug:
72765718,
73418534
Change-Id: Id611a98fee8f53cea92f7a22ec02f7f6d8a4c534
this.numFailures = numFailures;
int requiredConstraints = job.getConstraintFlags();
-
if (job.getRequiredNetwork() != null) {
requiredConstraints |= CONSTRAINT_CONNECTIVITY;
}
mInternalFlags = internalFlags;
updateEstimatedNetworkBytesLocked();
+
+ if (job.getRequiredNetwork() != null) {
+ // 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);
+ }
}
/** Copy constructor: used specifically when cloning JobStatus objects for persistence,