Allow system components to request underlying network policies.
This CL updates VcnManager to allow system components with permission NETWORK_FACTORY to request the current VcnUnderlingNetworkPolicy for a specific Network's NetworkCapabilities and LinkProperties. Bug: 175900686 Test: atest FrameworksVcnTests Change-Id: I16416e619bdb03630582f5660260b0090730e9eb
This commit is contained in:
@@ -21,6 +21,8 @@ import static com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubsc
|
||||
import static com.android.server.vcn.VcnTestUtils.setupSystemService;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
@@ -41,9 +43,12 @@ import static org.mockito.Mockito.verify;
|
||||
import android.app.AppOpsManager;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.LinkProperties;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.vcn.IVcnUnderlyingNetworkPolicyListener;
|
||||
import android.net.vcn.VcnConfig;
|
||||
import android.net.vcn.VcnConfigTest;
|
||||
import android.net.vcn.VcnUnderlyingNetworkPolicy;
|
||||
import android.os.IBinder;
|
||||
import android.os.ParcelUuid;
|
||||
import android.os.PersistableBundle;
|
||||
@@ -63,6 +68,7 @@ import com.android.server.vcn.VcnContext;
|
||||
import com.android.server.vcn.VcnNetworkProvider;
|
||||
import com.android.server.vcn.util.PersistableBundleUtils;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
@@ -192,6 +198,14 @@ public class VcnManagementServiceTest {
|
||||
mTestLooper.dispatchAll();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
doNothing()
|
||||
.when(mMockContext)
|
||||
.enforceCallingOrSelfPermission(
|
||||
eq(android.Manifest.permission.NETWORK_FACTORY), any());
|
||||
}
|
||||
|
||||
private void setupMockedCarrierPrivilege(boolean isPrivileged) {
|
||||
doReturn(Collections.singletonList(TEST_SUBSCRIPTION_INFO))
|
||||
.when(mSubMgr)
|
||||
@@ -455,10 +469,6 @@ public class VcnManagementServiceTest {
|
||||
|
||||
@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());
|
||||
@@ -468,17 +478,14 @@ public class VcnManagementServiceTest {
|
||||
public void testAddVcnUnderlyingNetworkPolicyListenerInvalidPermission() {
|
||||
doThrow(new SecurityException())
|
||||
.when(mMockContext)
|
||||
.enforceCallingPermission(eq(android.Manifest.permission.NETWORK_FACTORY), any());
|
||||
.enforceCallingOrSelfPermission(
|
||||
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);
|
||||
@@ -488,4 +495,24 @@ public class VcnManagementServiceTest {
|
||||
public void testRemoveVcnUnderlyingNetworkPolicyListenerNeverRegistered() {
|
||||
mVcnMgmtSvc.removeVcnUnderlyingNetworkPolicyListener(mMockPolicyListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetUnderlyingNetworkPolicy() throws Exception {
|
||||
VcnUnderlyingNetworkPolicy policy =
|
||||
mVcnMgmtSvc.getUnderlyingNetworkPolicy(
|
||||
new NetworkCapabilities(), new LinkProperties());
|
||||
|
||||
assertFalse(policy.isTeardownRequested());
|
||||
assertNotNull(policy.getMergedNetworkCapabilities());
|
||||
}
|
||||
|
||||
@Test(expected = SecurityException.class)
|
||||
public void testGetUnderlyingNetworkPolicyInvalidPermission() {
|
||||
doThrow(new SecurityException())
|
||||
.when(mMockContext)
|
||||
.enforceCallingOrSelfPermission(
|
||||
eq(android.Manifest.permission.NETWORK_FACTORY), any());
|
||||
|
||||
mVcnMgmtSvc.getUnderlyingNetworkPolicy(new NetworkCapabilities(), new LinkProperties());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user