Allow device owner to configure preferential network service

Bug: 226966328
Bug: 231071836
Test: device policy manager CTS and fully managed device boot up
Change-Id: I3847ee3be30397f97a18e64d97d85a1740a55064
This commit is contained in:
Sooraj Sasindran
2022-04-20 21:30:11 -07:00
parent e880b639cf
commit b804fc3b49

View File

@@ -8513,6 +8513,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
}
private boolean isDeviceOwnerUserId(int userId) {
synchronized (getLockObject()) {
return mOwners.getDeviceOwnerComponent() != null
&& mOwners.getDeviceOwnerUserId() == userId;
}
}
private boolean isDeviceOwnerPackage(String packageName, int userId) {
synchronized (getLockObject()) {
return mOwners.hasDeviceOwner()
@@ -12117,10 +12124,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
return;
}
final CallerIdentity caller = getCallerIdentity();
Preconditions.checkCallAuthorization(isProfileOwner(caller)
Preconditions.checkCallAuthorization((isProfileOwner(caller)
&& isManagedProfile(caller.getUserId()))
|| isDefaultDeviceOwner(caller),
"Caller is not profile owner or device owner;"
+ " only profile owner or device owner may control the preferential"
"Caller is not managed profile owner or device owner;"
+ " only managed profile owner or device owner may control the preferential"
+ " network service");
synchronized (getLockObject()) {
final ActiveAdmin requiredAdmin = getDeviceOrProfileOwnerAdminLocked(
@@ -12147,11 +12155,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
}
final CallerIdentity caller = getCallerIdentity();
Preconditions.checkCallAuthorization(isProfileOwner(caller)
Preconditions.checkCallAuthorization((isProfileOwner(caller)
&& isManagedProfile(caller.getUserId()))
|| isDefaultDeviceOwner(caller),
"Caller is not profile owner or device owner;"
+ " only profile owner or device owner may retrieve the preferential"
+ " network service configurations");
"Caller is not managed profile owner or device owner;"
+ " only managed profile owner or device owner may retrieve the "
+ "preferential network service configurations");
synchronized (getLockObject()) {
final ActiveAdmin requiredAdmin = getDeviceOrProfileOwnerAdminLocked(
caller.getUserId());
@@ -18266,7 +18275,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
private void updateNetworkPreferenceForUser(int userId,
List<PreferentialNetworkServiceConfig> preferentialNetworkServiceConfigs) {
if (!isManagedProfile(userId)) {
if (!isManagedProfile(userId) && !isDeviceOwnerUserId(userId)) {
return;
}
List<ProfileNetworkPreference> preferences = new ArrayList<>();