From f31d2ca1b531126ddbcf4a36ac6ea2cfe6afa8d4 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Fri, 26 Feb 2021 09:44:09 -0800 Subject: [PATCH] 2 minor DevicePolicyManagerService improvements. - Ignore pre-created users. - Dump package-related overlays. Test: adb shell dumpsys device_policy Bug: 181238156 Change-Id: I60284f1f1eaa8e759901435a1bfca6853f330dad --- .../DevicePolicyManagerService.java | 33 ++++++++++++++++- .../devicepolicy/OverlayPackagesProvider.java | 37 +++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 524892b2ec4bc..bf20e16b3ad07 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -753,21 +753,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void onUserStarting(@NonNull TargetUser user) { + if (user.isPreCreated()) return; mService.handleStartUser(user.getUserIdentifier()); } @Override public void onUserUnlocking(@NonNull TargetUser user) { + if (user.isPreCreated()) return; mService.handleUnlockUser(user.getUserIdentifier()); } @Override public void onUserStopping(@NonNull TargetUser user) { + if (user.isPreCreated()) return; mService.handleStopUser(user.getUserIdentifier()); } @Override public void onUserUnlocked(@NonNull TargetUser user) { + if (user.isPreCreated()) return; mService.handleOnUserUnlocked(user.getUserIdentifier()); } } @@ -9187,13 +9191,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { pw.println(); mStatLogger.dump(pw); pw.println(); - pw.println("Encryption Status: " + getEncryptionStatusName(getEncryptionStatus())); pw.println(); mPolicyCache.dump(pw); pw.println(); mStateCache.dump(pw); + pw.println(); } + dumpResources(pw); } } @@ -9208,6 +9213,32 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { pw.decreaseIndent(); } + private void dumpResources(IndentingPrintWriter pw) { + mOverlayPackagesProvider.dump(pw); + pw.println(); + + pw.println("Other overlayable app resources"); + pw.increaseIndent(); + dumpResources(pw, mContext, "cross_profile_apps", R.array.cross_profile_apps); + dumpResources(pw, mContext, "vendor_cross_profile_apps", R.array.vendor_cross_profile_apps); + pw.decreaseIndent(); + pw.println(); + } + + static void dumpResources(IndentingPrintWriter pw, Context context, String resName, int resId) { + String[] apps = context.getResources().getStringArray(resId); + if (apps == null || apps.length == 0) { + pw.printf("%s: empty\n", resName); + return; + } + pw.printf("%s: %d app%s\n", resName, apps.length, apps.length == 1 ? "" : "s"); + pw.increaseIndent(); + for (int i = 0; i < apps.length; i++) { + pw.printf("%d: %s\n", i, apps[i]); + } + pw.decreaseIndent(); + } + @Override public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, String[] args, ShellCallback callback, ResultReceiver resultReceiver) { diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/OverlayPackagesProvider.java b/services/devicepolicy/java/com/android/server/devicepolicy/OverlayPackagesProvider.java index 261a83c4f67a4..280f12f6a60ec 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/OverlayPackagesProvider.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/OverlayPackagesProvider.java @@ -21,6 +21,7 @@ import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_PRO import static android.app.admin.DevicePolicyManager.ACTION_PROVISION_MANAGED_USER; import static com.android.internal.util.Preconditions.checkNotNull; +import static com.android.server.devicepolicy.DevicePolicyManagerService.dumpResources; import android.annotation.NonNull; import android.annotation.UserIdInt; @@ -32,6 +33,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.view.inputmethod.InputMethodInfo; import com.android.internal.R; @@ -224,4 +226,39 @@ public class OverlayPackagesProvider { } return new ArraySet<>(Arrays.asList(mContext.getResources().getStringArray(resId))); } + + void dump(IndentingPrintWriter pw) { + pw.println("OverlayPackagesProvider"); + pw.increaseIndent(); + + dumpResources(pw, mContext, "required_apps_managed_device", + R.array.required_apps_managed_device); + dumpResources(pw, mContext, "required_apps_managed_user", + R.array.required_apps_managed_user); + dumpResources(pw, mContext, "required_apps_managed_profile", + R.array.required_apps_managed_profile); + + dumpResources(pw, mContext, "disallowed_apps_managed_device", + R.array.disallowed_apps_managed_device); + dumpResources(pw, mContext, "disallowed_apps_managed_user", + R.array.disallowed_apps_managed_user); + dumpResources(pw, mContext, "disallowed_apps_managed_device", + R.array.disallowed_apps_managed_device); + + dumpResources(pw, mContext, "vendor_required_apps_managed_device", + R.array.vendor_required_apps_managed_device); + dumpResources(pw, mContext, "vendor_required_apps_managed_user", + R.array.vendor_required_apps_managed_user); + dumpResources(pw, mContext, "vendor_required_apps_managed_profile", + R.array.vendor_required_apps_managed_profile); + + dumpResources(pw, mContext, "vendor_disallowed_apps_managed_user", + R.array.vendor_disallowed_apps_managed_user); + dumpResources(pw, mContext, "vendor_disallowed_apps_managed_device", + R.array.vendor_disallowed_apps_managed_device); + dumpResources(pw, mContext, "vendor_disallowed_apps_managed_profile", + R.array.vendor_disallowed_apps_managed_profile); + + pw.decreaseIndent(); + } }