Implement Policy Listener add/remove in VcnService.
This CL updates VcnManagementService to implement VcnUnderlyingNetworkPolicyListener add and remove operations. It also adds functionality to remove any listeners if the registering app dies without unregistering. Bug: 175739863 Test: atest FrameworksVcnTests Change-Id: I9db2729d404f232b84577d2d90909b9152d53b5a
This commit is contained in:
@@ -23,10 +23,15 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.argThat;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.doThrow;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
@@ -35,8 +40,10 @@ import static org.mockito.Mockito.verify;
|
||||
import android.app.AppOpsManager;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.vcn.IVcnUnderlyingNetworkPolicyListener;
|
||||
import android.net.vcn.VcnConfig;
|
||||
import android.net.vcn.VcnConfigTest;
|
||||
import android.os.IBinder;
|
||||
import android.os.ParcelUuid;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.Process;
|
||||
@@ -126,6 +133,10 @@ public class VcnManagementServiceTest {
|
||||
|
||||
private final VcnManagementService mVcnMgmtSvc;
|
||||
|
||||
private final IVcnUnderlyingNetworkPolicyListener mMockPolicyListener =
|
||||
mock(IVcnUnderlyingNetworkPolicyListener.class);
|
||||
private final IBinder mMockIBinder = mock(IBinder.class);
|
||||
|
||||
public VcnManagementServiceTest() throws Exception {
|
||||
setupSystemService(mConnMgr, Context.CONNECTIVITY_SERVICE, ConnectivityManager.class);
|
||||
setupSystemService(mTelMgr, Context.TELEPHONY_SERVICE, TelephonyManager.class);
|
||||
@@ -169,6 +180,8 @@ public class VcnManagementServiceTest {
|
||||
setupMockedCarrierPrivilege(true);
|
||||
mVcnMgmtSvc = new VcnManagementService(mMockContext, mMockDeps);
|
||||
|
||||
doReturn(mMockIBinder).when(mMockPolicyListener).asBinder();
|
||||
|
||||
// Make sure the profiles are loaded.
|
||||
mTestLooper.dispatchAll();
|
||||
}
|
||||
@@ -438,4 +451,40 @@ public class VcnManagementServiceTest {
|
||||
mVcnMgmtSvc.clearVcnConfig(TEST_UUID_2);
|
||||
verify(vcnInstance).teardownAsynchronously();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddVcnUnderlyingNetworkPolicyListener() throws Exception {
|
||||
doNothing()
|
||||
.when(mMockContext)
|
||||
.enforceCallingPermission(eq(android.Manifest.permission.NETWORK_FACTORY), any());
|
||||
|
||||
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
|
||||
|
||||
verify(mMockIBinder).linkToDeath(any(), anyInt());
|
||||
}
|
||||
|
||||
@Test(expected = SecurityException.class)
|
||||
public void testAddVcnUnderlyingNetworkPolicyListenerInvalidPermission() {
|
||||
doThrow(new SecurityException())
|
||||
.when(mMockContext)
|
||||
.enforceCallingPermission(eq(android.Manifest.permission.NETWORK_FACTORY), any());
|
||||
|
||||
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveVcnUnderlyingNetworkPolicyListener() {
|
||||
// verify listener added
|
||||
doNothing()
|
||||
.when(mMockContext)
|
||||
.enforceCallingPermission(eq(android.Manifest.permission.NETWORK_FACTORY), any());
|
||||
mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
|
||||
|
||||
mVcnMgmtSvc.removeVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveVcnUnderlyingNetworkPolicyListenerNeverRegistered() {
|
||||
mVcnMgmtSvc.removeVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user