Enable the tests in DPM for testing ConnectivityManager API in 5G Slicing

Test: atest DevicePolicyManagerTest
Bug: 178655595

Change-Id: Ib58f27b661436c9c59f8681fb2e69a930b8444a8
This commit is contained in:
Shuo Qian
2021-03-17 19:54:14 -07:00
committed by Amit Mahajan
parent 720ebdc401
commit cd008dffd6
2 changed files with 52 additions and 45 deletions

View File

@@ -102,8 +102,8 @@ import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES;
// TODO (b/178655595) import static android.net.ConnectivityManager.USER_PREFERENCE_ENTERPRISE;
// TODO (b/178655595) import static android.net.ConnectivityManager.USER_PREFERENCE_SYSTEM_DEFAULT;
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_DEFAULT;
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE;
import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
@@ -3089,13 +3089,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
updatePermissionPolicyCache(userId);
updateAdminCanGrantSensorsPermissionCache(userId);
boolean enableEnterpriseNetworkSlice = true;
boolean enableEnterpriseNetworkPreferenceEnabled = true;
synchronized (getLockObject()) {
ActiveAdmin owner = getDeviceOrProfileOwnerAdminLocked(userId);
enableEnterpriseNetworkSlice = owner != null
enableEnterpriseNetworkPreferenceEnabled = owner != null
? owner.mEnterpriseNetworkPreferenceEnabled : true;
}
updateNetworkPreferenceForUser(userId, enableEnterpriseNetworkSlice);
updateNetworkPreferenceForUser(userId, enableEnterpriseNetworkPreferenceEnabled);
startOwnerService(userId, "start-user");
}
@@ -17009,18 +17009,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
}
private void updateNetworkPreferenceForUser(int userId, boolean enableEnterprise) {
private void updateNetworkPreferenceForUser(int userId,
boolean enableEnterpriseNetworkPreferenceEnabled) {
if (!isManagedProfile(userId)) {
return;
}
// TODO(b/178655595)
// int networkPreference = enable ? ConnectivityManager.USER_PREFERENCE_ENTERPRISE :
// ConnectivityManager.USER_PREFERENCE_SYSTEM_DEFAULT;
// mInjector.binderWithCleanCallingIdentity(() ->
// mInjector.getConnectivityManager().setNetworkPreferenceForUser(
// UserHandle.of(userId),
// networkPreference,
// null /* executor */, null /* listener */));
int networkPreference = enableEnterpriseNetworkPreferenceEnabled
? PROFILE_NETWORK_PREFERENCE_ENTERPRISE : PROFILE_NETWORK_PREFERENCE_DEFAULT;
mInjector.binderWithCleanCallingIdentity(() ->
mInjector.getConnectivityManager().setProfileNetworkPreference(
UserHandle.of(userId),
networkPreference,
null /* executor */, null /* listener */));
}
@Override

View File

@@ -92,6 +92,7 @@ import android.content.pm.StringParceledListSlice;
import android.content.pm.UserInfo;
import android.graphics.Color;
import android.hardware.usb.UsbManager;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
@@ -4017,23 +4018,27 @@ public class DevicePolicyManagerTest extends DpmTestBase {
@Test
public void testUpdateNetworkPreferenceOnStartOnStopUser() throws Exception {
dpms.handleStartUser(CALLER_USER_HANDLE);
// TODO(b/178655595)
// verify(getServices().connectivityManager, times(1)).setNetworkPreferenceForUser(
// any(UserHandle.class),
// anyInt(),
// any(Executor.class),
// any(Runnable.class)
//);
final int managedProfileUserId = 15;
final int managedProfileAdminUid = UserHandle.getUid(managedProfileUserId, 19436);
addManagedProfile(admin1, managedProfileAdminUid, admin1);
mContext.binder.callingUid = managedProfileAdminUid;
mServiceContext.permissions.add(permission.INTERACT_ACROSS_USERS_FULL);
dpms.handleStopUser(CALLER_USER_HANDLE);
// TODO(b/178655595)
// verify(getServices().connectivityManager, times(1)).setNetworkPreferenceForUser(
// any(UserHandle.class),
// eq(ConnectivityManager.USER_PREFERENCE_SYSTEM_DEFAULT),
// any(Executor.class),
// any(Runnable.class)
//);
dpms.handleStartUser(managedProfileUserId);
verify(getServices().connectivityManager, times(1)).setProfileNetworkPreference(
eq(UserHandle.of(managedProfileUserId)),
anyInt(),
any(),
any()
);
dpms.handleStopUser(managedProfileUserId);
verify(getServices().connectivityManager, times(1)).setProfileNetworkPreference(
eq(UserHandle.of(managedProfileUserId)),
eq(ConnectivityManager.PROFILE_NETWORK_PREFERENCE_DEFAULT),
any(),
any()
);
}
@Test
@@ -4044,26 +4049,28 @@ public class DevicePolicyManagerTest extends DpmTestBase {
assertExpectException(SecurityException.class, null,
() -> dpm.isEnterpriseNetworkPreferenceEnabled());
setupProfileOwner();
final int managedProfileUserId = 15;
final int managedProfileAdminUid = UserHandle.getUid(managedProfileUserId, 19436);
addManagedProfile(admin1, managedProfileAdminUid, admin1);
mContext.binder.callingUid = managedProfileAdminUid;
dpm.setEnterpriseNetworkPreferenceEnabled(false);
assertThat(dpm.isEnterpriseNetworkPreferenceEnabled()).isFalse();
// TODO(b/178655595)
// verify(getServices().connectivityManager, times(1)).setNetworkPreferenceForUser(
// any(UserHandle.class),
// eq(ConnectivityManager.USER_PREFERENCE_SYSTEM_DEFAULT),
// any(Executor.class),
// any(Runnable.class)
//);
verify(getServices().connectivityManager, times(1)).setProfileNetworkPreference(
eq(UserHandle.of(managedProfileUserId)),
eq(ConnectivityManager.PROFILE_NETWORK_PREFERENCE_DEFAULT),
any(),
any()
);
dpm.setEnterpriseNetworkPreferenceEnabled(true);
assertThat(dpm.isEnterpriseNetworkPreferenceEnabled()).isTrue();
// TODO(b/178655595)
// verify(getServices().connectivityManager, times(1)).setNetworkPreferenceForUser(
// any(UserHandle.class),
// eq(ConnectivityManager.USER_PREFERENCE_ENTERPRISE),
// any(Executor.class),
// any(Runnable.class)
//);
verify(getServices().connectivityManager, times(1)).setProfileNetworkPreference(
eq(UserHandle.of(managedProfileUserId)),
eq(ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE),
any(),
any()
);
}
@Test