Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f31d2ca1 authored by Felipe Leme's avatar Felipe Leme
Browse files

2 minor DevicePolicyManagerService improvements.

- Ignore pre-created users.
- Dump package-related overlays.

Test: adb shell dumpsys device_policy
Bug: 181238156

Change-Id: I60284f1f1eaa8e759901435a1bfca6853f330dad
parent 05944984
Loading
Loading
Loading
Loading
+32 −1
Original line number Diff line number Diff line
@@ -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) {
+37 −0
Original line number Diff line number Diff line
@@ -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();
    }
}