From d44ddbdfad6082984dd266ebb16465bf60fad2e4 Mon Sep 17 00:00:00 2001 From: lifr Date: Mon, 28 Jun 2021 14:52:33 +0800 Subject: [PATCH] Cleanup the public API getActiveNetworkForUid on AOSP Use reflection method to replace the use of public api getActiveNetworkForUid. Android 12 version, the public API getActiveNetworkForUid and all (outside the module) callers of the API have been removed and replaced. Unfortunately, the related delete/replace code cannot be synced to AOSP ,so in order to keep the public api consistent in Android 12 & AOSP, The commit uses reflection method to replace the caller of this public api, Then we can delete this public API in another commit in AOSP. Bug: 183465229 Test: atest ConnectivityControllerTest atest CtsJobSchedulerTestCases:ConnectivityConstraintTest Merged-In: Ie93cd22b11cc28135a385c0cf6ad6b577b61d1b7 Change-Id: Ia636480b12a9b4a9e2c5dd2ec9259af3167df909 --- .../controllers/ConnectivityController.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java index 5487e8788b9a7..85528e912aa52 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java @@ -54,6 +54,7 @@ import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.StateControllerProto; import com.android.server.net.NetworkPolicyManagerInternal; +import java.lang.reflect.InvocationTargetException; import java.util.Objects; import java.util.function.Predicate; @@ -460,8 +461,19 @@ public final class ConnectivityController extends RestrictingController implemen } } - private boolean updateConstraintsSatisfied(JobStatus jobStatus) { - final Network network = mConnManager.getActiveNetworkForUid(jobStatus.getSourceUid()); + private Network getActiveNetworkForUid(int uid) { + try { + return (Network) mConnManager.getClass() + .getMethod("getActiveNetworkForUid", int.class) + .invoke(mConnManager, uid); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException( + "Unable to call getActiveNetworkForUid: ", e); + } + } + + private boolean updateConstraintsSatisfied(JobStatus jobStatus) { + final Network network = getActiveNetworkForUid(jobStatus.getSourceUid()); final NetworkCapabilities capabilities = getNetworkCapabilities(network); return updateConstraintsSatisfied(jobStatus, network, capabilities); } @@ -522,7 +534,7 @@ public final class ConnectivityController extends RestrictingController implemen return false; } - final Network network = mConnManager.getActiveNetworkForUid(jobs.valueAt(0).getSourceUid()); + final Network network = getActiveNetworkForUid(jobs.valueAt(0).getSourceUid()); final NetworkCapabilities capabilities = getNetworkCapabilities(network); final boolean networkMatch = (filterNetwork == null || Objects.equals(filterNetwork, network));