Merge "Remove legacy network factories"
This commit is contained in:
@@ -3231,32 +3231,6 @@ public class ConnectivityManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** {@hide} - returns the factory serial number */
|
|
||||||
@UnsupportedAppUsage
|
|
||||||
@RequiresPermission(anyOf = {
|
|
||||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
|
||||||
android.Manifest.permission.NETWORK_FACTORY})
|
|
||||||
public int registerNetworkFactory(Messenger messenger, String name) {
|
|
||||||
try {
|
|
||||||
return mService.registerNetworkFactory(messenger, name);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
throw e.rethrowFromSystemServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** {@hide} */
|
|
||||||
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
|
|
||||||
@RequiresPermission(anyOf = {
|
|
||||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
|
||||||
android.Manifest.permission.NETWORK_FACTORY})
|
|
||||||
public void unregisterNetworkFactory(Messenger messenger) {
|
|
||||||
try {
|
|
||||||
mService.unregisterNetworkFactory(messenger);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
throw e.rethrowFromSystemServer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers the specified {@link NetworkProvider}.
|
* Registers the specified {@link NetworkProvider}.
|
||||||
* Each listener must only be registered once. The listener can be unregistered with
|
* Each listener must only be registered once. The listener can be unregistered with
|
||||||
|
|||||||
@@ -156,9 +156,6 @@ interface IConnectivityManager
|
|||||||
|
|
||||||
boolean requestBandwidthUpdate(in Network network);
|
boolean requestBandwidthUpdate(in Network network);
|
||||||
|
|
||||||
int registerNetworkFactory(in Messenger messenger, in String name);
|
|
||||||
void unregisterNetworkFactory(in Messenger messenger);
|
|
||||||
|
|
||||||
int registerNetworkProvider(in Messenger messenger, in String name);
|
int registerNetworkProvider(in Messenger messenger, in String name);
|
||||||
void unregisterNetworkProvider(in Messenger messenger);
|
void unregisterNetworkProvider(in Messenger messenger);
|
||||||
|
|
||||||
|
|||||||
@@ -3357,7 +3357,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
if (VDBG) log("NetworkFactory connected");
|
if (VDBG) log("NetworkFactory connected");
|
||||||
// Finish setting up the full connection
|
// Finish setting up the full connection
|
||||||
NetworkProviderInfo npi = mNetworkProviderInfos.get(msg.replyTo);
|
NetworkProviderInfo npi = mNetworkProviderInfos.get(msg.replyTo);
|
||||||
npi.completeConnection();
|
|
||||||
sendAllRequestsToProvider(npi);
|
sendAllRequestsToProvider(npi);
|
||||||
} else {
|
} else {
|
||||||
loge("Error connecting NetworkFactory");
|
loge("Error connecting NetworkFactory");
|
||||||
@@ -5443,27 +5442,21 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
private static class NetworkProviderInfo {
|
private static class NetworkProviderInfo {
|
||||||
public final String name;
|
public final String name;
|
||||||
public final Messenger messenger;
|
public final Messenger messenger;
|
||||||
private final AsyncChannel mAsyncChannel;
|
|
||||||
private final IBinder.DeathRecipient mDeathRecipient;
|
private final IBinder.DeathRecipient mDeathRecipient;
|
||||||
public final int providerId;
|
public final int providerId;
|
||||||
|
|
||||||
NetworkProviderInfo(String name, Messenger messenger, AsyncChannel asyncChannel,
|
NetworkProviderInfo(String name, Messenger messenger, AsyncChannel asyncChannel,
|
||||||
int providerId, IBinder.DeathRecipient deathRecipient) {
|
int providerId, @NonNull IBinder.DeathRecipient deathRecipient) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.messenger = messenger;
|
this.messenger = messenger;
|
||||||
this.providerId = providerId;
|
this.providerId = providerId;
|
||||||
mAsyncChannel = asyncChannel;
|
|
||||||
mDeathRecipient = deathRecipient;
|
mDeathRecipient = deathRecipient;
|
||||||
|
|
||||||
if ((mAsyncChannel == null) == (mDeathRecipient == null)) {
|
if (mDeathRecipient == null) {
|
||||||
throw new AssertionError("Must pass exactly one of asyncChannel or deathRecipient");
|
throw new AssertionError("Must pass a deathRecipient");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isLegacyNetworkFactory() {
|
|
||||||
return mAsyncChannel != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void sendMessageToNetworkProvider(int what, int arg1, int arg2, Object obj) {
|
void sendMessageToNetworkProvider(int what, int arg1, int arg2, Object obj) {
|
||||||
try {
|
try {
|
||||||
messenger.send(Message.obtain(null /* handler */, what, arg1, arg2, obj));
|
messenger.send(Message.obtain(null /* handler */, what, arg1, arg2, obj));
|
||||||
@@ -5474,38 +5467,19 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
void requestNetwork(NetworkRequest request, int score, int servingProviderId) {
|
void requestNetwork(NetworkRequest request, int score, int servingProviderId) {
|
||||||
if (isLegacyNetworkFactory()) {
|
sendMessageToNetworkProvider(NetworkProvider.CMD_REQUEST_NETWORK, score,
|
||||||
mAsyncChannel.sendMessage(android.net.NetworkFactory.CMD_REQUEST_NETWORK, score,
|
|
||||||
servingProviderId, request);
|
|
||||||
} else {
|
|
||||||
sendMessageToNetworkProvider(NetworkProvider.CMD_REQUEST_NETWORK, score,
|
|
||||||
servingProviderId, request);
|
servingProviderId, request);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancelRequest(NetworkRequest request) {
|
void cancelRequest(NetworkRequest request) {
|
||||||
if (isLegacyNetworkFactory()) {
|
sendMessageToNetworkProvider(NetworkProvider.CMD_CANCEL_REQUEST, 0, 0, request);
|
||||||
mAsyncChannel.sendMessage(android.net.NetworkFactory.CMD_CANCEL_REQUEST, request);
|
|
||||||
} else {
|
|
||||||
sendMessageToNetworkProvider(NetworkProvider.CMD_CANCEL_REQUEST, 0, 0, request);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect(Context context, Handler handler) {
|
void connect(Context context, Handler handler) {
|
||||||
if (isLegacyNetworkFactory()) {
|
try {
|
||||||
mAsyncChannel.connect(context, handler, messenger);
|
messenger.getBinder().linkToDeath(mDeathRecipient, 0);
|
||||||
} else {
|
} catch (RemoteException e) {
|
||||||
try {
|
mDeathRecipient.binderDied();
|
||||||
messenger.getBinder().linkToDeath(mDeathRecipient, 0);
|
|
||||||
} catch (RemoteException e) {
|
|
||||||
mDeathRecipient.binderDied();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void completeConnection() {
|
|
||||||
if (isLegacyNetworkFactory()) {
|
|
||||||
mAsyncChannel.sendMessage(AsyncChannel.CMD_CHANNEL_FULL_CONNECTION);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6000,15 +5974,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
EVENT_RELEASE_NETWORK_REQUEST, getCallingUid(), 0, networkRequest));
|
EVENT_RELEASE_NETWORK_REQUEST, getCallingUid(), 0, networkRequest));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int registerNetworkFactory(Messenger messenger, String name) {
|
|
||||||
enforceNetworkFactoryPermission();
|
|
||||||
NetworkProviderInfo npi = new NetworkProviderInfo(name, messenger, new AsyncChannel(),
|
|
||||||
nextNetworkProviderId(), null /* deathRecipient */);
|
|
||||||
mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_PROVIDER, npi));
|
|
||||||
return npi.providerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleRegisterNetworkProvider(NetworkProviderInfo npi) {
|
private void handleRegisterNetworkProvider(NetworkProviderInfo npi) {
|
||||||
if (mNetworkProviderInfos.containsKey(npi.messenger)) {
|
if (mNetworkProviderInfos.containsKey(npi.messenger)) {
|
||||||
// Avoid creating duplicates. even if an app makes a direct AIDL call.
|
// Avoid creating duplicates. even if an app makes a direct AIDL call.
|
||||||
@@ -6022,10 +5987,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
if (DBG) log("Got NetworkProvider Messenger for " + npi.name);
|
if (DBG) log("Got NetworkProvider Messenger for " + npi.name);
|
||||||
mNetworkProviderInfos.put(npi.messenger, npi);
|
mNetworkProviderInfos.put(npi.messenger, npi);
|
||||||
npi.connect(mContext, mTrackerHandler);
|
npi.connect(mContext, mTrackerHandler);
|
||||||
if (!npi.isLegacyNetworkFactory()) {
|
sendAllRequestsToProvider(npi);
|
||||||
// Legacy NetworkFactories get their requests when their AsyncChannel connects.
|
|
||||||
sendAllRequestsToProvider(npi);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -6044,11 +6006,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
mHandler.sendMessage(mHandler.obtainMessage(EVENT_UNREGISTER_NETWORK_PROVIDER, messenger));
|
mHandler.sendMessage(mHandler.obtainMessage(EVENT_UNREGISTER_NETWORK_PROVIDER, messenger));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void unregisterNetworkFactory(Messenger messenger) {
|
|
||||||
unregisterNetworkProvider(messenger);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void handleUnregisterNetworkProvider(Messenger messenger) {
|
private void handleUnregisterNetworkProvider(Messenger messenger) {
|
||||||
NetworkProviderInfo npi = mNetworkProviderInfos.remove(messenger);
|
NetworkProviderInfo npi = mNetworkProviderInfos.remove(messenger);
|
||||||
if (npi == null) {
|
if (npi == null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user