From 38b01ce5a13883651c498c6be8af406da936445e Mon Sep 17 00:00:00 2001 From: Sooraj Sasindran Date: Tue, 23 May 2023 13:38:10 -0700 Subject: [PATCH] store preferential configs if no error from CS store preferential configs in deivice policy only if no error from connectivity service Bug: 283999128 Test: Added new test to CTS and ran PreferentialNetworkServiceTest Change-Id: I8421e4d21b8719426cfb998d96742e065641efcd --- .../DevicePolicyManagerService.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index a31216b6bc2eb..c4a945ce9eaf3 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -12166,17 +12166,23 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { "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( - caller.getUserId()); - if (!requiredAdmin.mPreferentialNetworkServiceConfigs.equals( - preferentialNetworkServiceConfigs)) { - requiredAdmin.mPreferentialNetworkServiceConfigs = - new ArrayList<>(preferentialNetworkServiceConfigs); - saveSettingsLocked(caller.getUserId()); + + try { + updateNetworkPreferenceForUser(caller.getUserId(), preferentialNetworkServiceConfigs); + synchronized (getLockObject()) { + final ActiveAdmin requiredAdmin = getDeviceOrProfileOwnerAdminLocked( + caller.getUserId()); + if (!requiredAdmin.mPreferentialNetworkServiceConfigs.equals( + preferentialNetworkServiceConfigs)) { + requiredAdmin.mPreferentialNetworkServiceConfigs = + new ArrayList<>(preferentialNetworkServiceConfigs); + saveSettingsLocked(caller.getUserId()); + } } + } catch (Exception e) { + Slogf.e(LOG_TAG, "Failed to set preferential network service configs"); + throw e; } - updateNetworkPreferenceForUser(caller.getUserId(), preferentialNetworkServiceConfigs); DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_PREFERENTIAL_NETWORK_SERVICE_ENABLED) .setBoolean(preferentialNetworkServiceConfigs