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
This commit is contained in:
@@ -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() {}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user