summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorRemi NGUYEN VAN <reminv@google.com>2020-03-19 11:25:50 +0900
committerRemi NGUYEN VAN <reminv@google.com>2020-03-19 11:25:50 +0900
commitfc9119df29f67d70c887a67e08ea510d48b5a124 (patch)
tree2589b6216a40ce4d3ed2e8484b8203025d1912eb /core/java/android
parent438018d1c0a3039fada617c5f4d06ca783842088 (diff)
Add a test API for testing NetworkStack.getService
NetworkStack.getService was introduced to avoid relying on Context#getSystemService to obtain the NetworkStack binder token. To allow it to be mocked in tests, a method is introduced to allow tests to specify a mock NetworkStack token for their own process. Test: atest NetworkStackTests, using the change Bug: 151243982 Change-Id: I04058a007f2dfe1044cabeb3ac508404873665ad
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/net/NetworkStack.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/core/java/android/net/NetworkStack.java b/core/java/android/net/NetworkStack.java
index a6d52d133ce9..86f3dfd412f6 100644
--- a/core/java/android/net/NetworkStack.java
+++ b/core/java/android/net/NetworkStack.java
@@ -45,6 +45,9 @@ public class NetworkStack {
public static final String PERMISSION_MAINLINE_NETWORK_STACK =
"android.permission.MAINLINE_NETWORK_STACK";
+ @Nullable
+ private static volatile IBinder sMockService;
+
/**
* Get an {@link IBinder} representing the NetworkStack stable AIDL Interface, if registered.
* @hide
@@ -53,9 +56,23 @@ public class NetworkStack {
@SystemApi
@TestApi
public static IBinder getService() {
+ final IBinder mockService = sMockService;
+ if (mockService != null) return mockService;
return ServiceManager.getService(Context.NETWORK_STACK_SERVICE);
}
+ /**
+ * Set a mock service for testing, to be returned by future calls to {@link #getService()}.
+ *
+ * <p>Passing a {@code null} {@code mockService} resets {@link #getService()} to normal
+ * behavior.
+ * @hide
+ */
+ @TestApi
+ public static void setServiceForTest(@Nullable IBinder mockService) {
+ sMockService = mockService;
+ }
+
private NetworkStack() {}
/**