From 148dcce559737eab50d7a08b84b81d6a42690702 Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Mon, 22 Mar 2021 22:44:02 +0900 Subject: [PATCH] [NS04.5] Have NetworkOffer embark a provider ID ...instead of a Messenger. This will be useful later to compare whether a given offer is offered by the same provider satisfying a request. Bug: 167544279 Test: ConnectivityServiceTest Change-Id: I975a9439021c7fa511c50ac982819b6dd146291e --- framework/src/android/net/ConnectivityManager.java | 4 ++-- framework/src/android/net/IConnectivityManager.aidl | 2 +- framework/src/android/net/NetworkProvider.java | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/framework/src/android/net/ConnectivityManager.java b/framework/src/android/net/ConnectivityManager.java index 691a5ef7db..d9df05c65c 100644 --- a/framework/src/android/net/ConnectivityManager.java +++ b/framework/src/android/net/ConnectivityManager.java @@ -3261,11 +3261,11 @@ public class ConnectivityManager { @RequiresPermission(anyOf = { NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_FACTORY}) - public void offerNetwork(@NonNull final NetworkProvider provider, + public void offerNetwork(@NonNull final int providerId, @NonNull final NetworkScore score, @NonNull final NetworkCapabilities caps, @NonNull final INetworkOfferCallback callback) { try { - mService.offerNetwork(Objects.requireNonNull(provider.getMessenger(), "null messenger"), + mService.offerNetwork(providerId, Objects.requireNonNull(score, "null score"), Objects.requireNonNull(caps, "null caps"), Objects.requireNonNull(callback, "null callback")); diff --git a/framework/src/android/net/IConnectivityManager.aidl b/framework/src/android/net/IConnectivityManager.aidl index b5e483a392..0db155827b 100644 --- a/framework/src/android/net/IConnectivityManager.aidl +++ b/framework/src/android/net/IConnectivityManager.aidl @@ -223,7 +223,7 @@ interface IConnectivityManager int getRestrictBackgroundStatusByCaller(); - void offerNetwork(in Messenger messenger, in NetworkScore score, + void offerNetwork(int providerId, in NetworkScore score, in NetworkCapabilities caps, in INetworkOfferCallback callback); void unofferNetwork(in INetworkOfferCallback callback); } diff --git a/framework/src/android/net/NetworkProvider.java b/framework/src/android/net/NetworkProvider.java index 8f93047cf8..d5b5c9b603 100644 --- a/framework/src/android/net/NetworkProvider.java +++ b/framework/src/android/net/NetworkProvider.java @@ -272,6 +272,9 @@ public class NetworkProvider { public void offerNetwork(@NonNull final NetworkScore score, @NonNull final NetworkCapabilities caps, @NonNull final Executor executor, @NonNull final NetworkOfferCallback callback) { + // Can't offer a network with a provider that is not yet registered or already unregistered. + final int providerId = mProviderId; + if (providerId == ID_NONE) return; NetworkOfferCallbackProxy proxy = null; synchronized (mProxies) { for (final NetworkOfferCallbackProxy existingProxy : mProxies) { @@ -285,7 +288,8 @@ public class NetworkProvider { mProxies.add(proxy); } } - mContext.getSystemService(ConnectivityManager.class).offerNetwork(this, score, caps, proxy); + mContext.getSystemService(ConnectivityManager.class) + .offerNetwork(providerId, score, caps, proxy); } /**