From f27fc6ca1a6350a988a767cbc4262fb5c5bdd7f2 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 Merged-In: I8421e4d21b8719426cfb998d96742e065641efcd 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 edb8e0c5aa646..3725bf4785341 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -14836,17 +14836,23 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { "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