Remove legacy network factories

Nothing on the system is using registerNetworkFactory,
unregisterNetworkFactory at the moment.

registerNetworkFactory, unregisterNetworkFactory are protected by
signature permissions, so could not be used by anything outside of the
system.

Remove the two methods and the underlying support for this legacy,
deprecated mechanism.

Bug: 179229316
Test: atest FrameworksNetTests
Change-Id: I7cdc9eed67f846c8774474af038133040aeccab3
This commit is contained in:
Remi NGUYEN VAN
2021-02-04 18:04:43 +09:00
parent ab4b0cdccc
commit 2f7ba519fd
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

@@ -3334,7 +3334,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");
@@ -5414,27 +5413,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));
@@ -5445,38 +5438,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);
} }
} }
} }
@@ -5951,15 +5925,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.
@@ -5973,10 +5938,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
@@ -5995,11 +5957,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) {