From 2695df2069b62909d42490550d42aa811cbd9f5a Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 3 Sep 2020 16:50:23 -0700 Subject: [PATCH] Logs a warning on some setters called when the device doesn't support the feature. Test: adb shell dpm set-device-owner --user 0 com.afwsamples.testdpc/.DeviceAdminReceiver Bug: 151119006 Change-Id: I2de3fab4257df9e40668f2b7008c3de69653b93c --- .../DevicePolicyManagerService.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 80455833a3eb1..b6f0f9ffe0010 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -7132,9 +7132,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return (deviceOwner != null) ? deviceOwner.keepUninstalledPackages : null; } + /** + * Logs a warning when the device doesn't have {@code PackageManager.FEATURE_DEVICE_ADMIN}. + * + * @param message action that was not executed; should not end with a period because the missing + * feature will be appended to it. + */ + private void logMissingFeatureAction(String message) { + Slog.w(LOG_TAG, message + " because device does not have the " + + PackageManager.FEATURE_DEVICE_ADMIN + " feature."); + } + @Override public boolean setDeviceOwner(ComponentName admin, String ownerName, int userId) { if (!mHasFeature) { + logMissingFeatureAction("Cannot set " + ComponentName.flattenToShortString(admin) + + " as device owner for user " + userId); return false; } if (admin == null @@ -7456,6 +7469,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean setProfileOwner(ComponentName who, String ownerName, int userHandle) { if (!mHasFeature) { + logMissingFeatureAction("Cannot set " + ComponentName.flattenToShortString(who) + + " as profile owner for user " + userHandle); return false; } if (who == null @@ -7676,6 +7691,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void setUserProvisioningState(int newState, int userHandle) { if (!mHasFeature) { + logMissingFeatureAction("Cannot set provisioning state " + newState + " for user " + + userHandle); return; } @@ -7753,6 +7770,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void setProfileEnabled(ComponentName who) { if (!mHasFeature) { + logMissingFeatureAction("Cannot enable profile for " + + ComponentName.flattenToShortString(who)); return; } Objects.requireNonNull(who, "ComponentName is null");