Allow a way to track the active request in an NRI
As we are now allowing for multi-layered requests in NetworkRequestInfo (NRI), we need a way to track which of those requests ended up being satisfied. This also includes updates to NetworkRequestInfo itself to support multilayared requests. Bug: 173146509 Bug: 171991028 Test: atest FrameworksNetTests atest FrameworksNetIntegrationTests atest CtsNetTestCasesLatestSdk Change-Id: I7bb5a564769c90928871fe28de05195c9cfae6b5 Change-Id: Ibf37f94b53eb2e833821553e00d76fe38bfea266
This commit is contained in:
@@ -5350,6 +5350,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ensureAllNetworkRequestsHaveType(List<NetworkRequest> requests) {
|
||||||
|
for (int i = 0; i < requests.size(); i++) {
|
||||||
|
ensureNetworkRequestHasType(requests.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ensureNetworkRequestHasType(NetworkRequest request) {
|
private void ensureNetworkRequestHasType(NetworkRequest request) {
|
||||||
if (request.type == NetworkRequest.Type.NONE) {
|
if (request.type == NetworkRequest.Type.NONE) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
@@ -5380,7 +5386,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
NetworkRequestInfo(NetworkRequest r, PendingIntent pi) {
|
NetworkRequestInfo(NetworkRequest r, PendingIntent pi) {
|
||||||
request = r;
|
request = r;
|
||||||
mRequests = initializeRequests(r);
|
mRequests = initializeRequests(r);
|
||||||
ensureNetworkRequestHasType(request);
|
ensureAllNetworkRequestsHaveType(mRequests);
|
||||||
mPendingIntent = pi;
|
mPendingIntent = pi;
|
||||||
messenger = null;
|
messenger = null;
|
||||||
mBinder = null;
|
mBinder = null;
|
||||||
@@ -5394,7 +5400,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
messenger = m;
|
messenger = m;
|
||||||
request = r;
|
request = r;
|
||||||
mRequests = initializeRequests(r);
|
mRequests = initializeRequests(r);
|
||||||
ensureNetworkRequestHasType(request);
|
ensureAllNetworkRequestsHaveType(mRequests);
|
||||||
mBinder = binder;
|
mBinder = binder;
|
||||||
mPid = getCallingPid();
|
mPid = getCallingPid();
|
||||||
mUid = getCallingUid();
|
mUid = getCallingUid();
|
||||||
@@ -5418,6 +5424,19 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
return Collections.unmodifiableList(tempRequests);
|
return Collections.unmodifiableList(tempRequests);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private NetworkRequest getSatisfiedRequest() {
|
||||||
|
if (mSatisfier == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (NetworkRequest req : mRequests) {
|
||||||
|
if (mSatisfier.isSatisfyingRequest(req.requestId)) {
|
||||||
|
return req;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private void enforceRequestCountLimit() {
|
private void enforceRequestCountLimit() {
|
||||||
synchronized (mUidToNetworkRequestCount) {
|
synchronized (mUidToNetworkRequestCount) {
|
||||||
@@ -5436,14 +5455,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void binderDied() {
|
public void binderDied() {
|
||||||
log("ConnectivityService NetworkRequestInfo binderDied(" +
|
log("ConnectivityService NetworkRequestInfo binderDied(" +
|
||||||
request + ", " + mBinder + ")");
|
mRequests + ", " + mBinder + ")");
|
||||||
releaseNetworkRequest(request);
|
releaseNetworkRequest(mRequests);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "uid/pid:" + mUid + "/" + mPid + " " + request
|
return "uid/pid:" + mUid + "/" + mPid + " " + mRequests
|
||||||
+ (mPendingIntent == null ? "" : " to trigger " + mPendingIntent);
|
+ (mPendingIntent == null ? "" : " to trigger " + mPendingIntent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5763,6 +5784,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
return mNextNetworkProviderId.getAndIncrement();
|
return mNextNetworkProviderId.getAndIncrement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void releaseNetworkRequest(List<NetworkRequest> networkRequests) {
|
||||||
|
for (int i = 0; i < networkRequests.size(); i++) {
|
||||||
|
releaseNetworkRequest(networkRequests.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void releaseNetworkRequest(NetworkRequest networkRequest) {
|
public void releaseNetworkRequest(NetworkRequest networkRequest) {
|
||||||
ensureNetworkRequestHasType(networkRequest);
|
ensureNetworkRequestHasType(networkRequest);
|
||||||
|
|||||||
Reference in New Issue
Block a user