summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlifr <lifr@google.com>2021-06-28 14:52:33 +0800
committerlifr <lifr@google.com>2021-07-14 10:40:29 +0800
commitd44ddbdfad6082984dd266ebb16465bf60fad2e4 (patch)
tree5f3a9d2a6ffd6ceffa014addc8982e5fef62d07a
parent8df5d94b9830bca54edb3582330260e336bff9fc (diff)
downloadbase-d44ddbdfad6082984dd266ebb16465bf60fad2e4.tar.gz
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
-rw-r--r--apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java18
1 files 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 5487e8788b9a..85528e912aa5 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));