Merge "Remove legacy network factories"

This commit is contained in:
Remi NGUYEN VAN
2021-02-05 08:23:19 +00:00
committed by Gerrit Code Review
3 changed files with 10 additions and 82 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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) {