Adding multilayered requests to NetworkRequestInfo
Updating NetworkRequestInfo for "multilayered requests" functionality so that requests can support a network hierarchy. I.e., requests network with capability A first and if not available, request network with capability B. This CL is the first step in adding that support by updating the request object from a single request to a collection. Bug: 171991028 Test: atest FrameworksNetTests atest NetworkStackTests atest FrameworksNetIntegrationTests atest NetworkStackIntegrationTests atest CtsNetTestCasesLatestSdk Change-Id: I64a124802986e4cf4aa7de158c6690fdf9851cb2
This commit is contained in:
@@ -235,6 +235,7 @@ import java.net.UnknownHostException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.ConcurrentModificationException;
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -5358,7 +5359,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
* Also used to notice when the calling process dies so we can self-expire
|
* Also used to notice when the calling process dies so we can self-expire
|
||||||
*/
|
*/
|
||||||
private class NetworkRequestInfo implements IBinder.DeathRecipient {
|
private class NetworkRequestInfo implements IBinder.DeathRecipient {
|
||||||
|
final List<NetworkRequest> mRequests;
|
||||||
final NetworkRequest request;
|
final NetworkRequest request;
|
||||||
|
|
||||||
// The network currently satisfying this request, or null if none. Must only be touched
|
// The network currently satisfying this request, or null if none. Must only be touched
|
||||||
// on the handler thread. This only makes sense for network requests and not for listens,
|
// on the handler thread. This only makes sense for network requests and not for listens,
|
||||||
// as defined by NetworkRequest#isRequest(). For listens, this is always null.
|
// as defined by NetworkRequest#isRequest(). For listens, this is always null.
|
||||||
@@ -5373,6 +5376,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
NetworkRequestInfo(NetworkRequest r, PendingIntent pi) {
|
NetworkRequestInfo(NetworkRequest r, PendingIntent pi) {
|
||||||
request = r;
|
request = r;
|
||||||
|
mRequests = initializeRequests(r);
|
||||||
ensureNetworkRequestHasType(request);
|
ensureNetworkRequestHasType(request);
|
||||||
mPendingIntent = pi;
|
mPendingIntent = pi;
|
||||||
messenger = null;
|
messenger = null;
|
||||||
@@ -5386,6 +5390,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
super();
|
super();
|
||||||
messenger = m;
|
messenger = m;
|
||||||
request = r;
|
request = r;
|
||||||
|
mRequests = initializeRequests(r);
|
||||||
ensureNetworkRequestHasType(request);
|
ensureNetworkRequestHasType(request);
|
||||||
mBinder = binder;
|
mBinder = binder;
|
||||||
mPid = getCallingPid();
|
mPid = getCallingPid();
|
||||||
@@ -5404,6 +5409,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
this(r, null);
|
this(r, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<NetworkRequest> initializeRequests(NetworkRequest r) {
|
||||||
|
final ArrayList<NetworkRequest> tempRequests = new ArrayList<>();
|
||||||
|
tempRequests.add(new NetworkRequest(r));
|
||||||
|
return Collections.unmodifiableList(tempRequests);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void enforceRequestCountLimit() {
|
private void enforceRequestCountLimit() {
|
||||||
synchronized (mUidToNetworkRequestCount) {
|
synchronized (mUidToNetworkRequestCount) {
|
||||||
int networkRequests = mUidToNetworkRequestCount.get(mUid, 0) + 1;
|
int networkRequests = mUidToNetworkRequestCount.get(mUid, 0) + 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user