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

Commit f974d342 authored by Jeongsik Mun's avatar Jeongsik Mun
Browse files

Add a suspension check to SuspendedAppActivity

ACTION_PACKAGES_SUSPENSION_CHANGED can be delivered without suspension
changes, which ends up finishing SuspendedAppActivity and CTS fails.

This CL adds a check to make sure suspended state changed before
finishing it.

Bug: 245426112
Test: cts-tradefed run cts -m CtsDevicePolicyManagerTestCases -t
      com.android.cts.devicepolicy.MixedManagedProfileOwnerTest#testSuspendPackageWithPackageManager
Change-Id: I74116b1c8508239b4026883916a89bfdac902bae
parent dff1d0ff
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -80,7 +80,8 @@ public class SuspendedAppActivity extends AlertActivity
                // Suspension conditions were modified, dismiss any related visible dialogs.
                final String[] modified = intent.getStringArrayExtra(
                        Intent.EXTRA_CHANGED_PACKAGE_LIST);
                if (ArrayUtils.contains(modified, mSuspendedPackage)) {
                if (ArrayUtils.contains(modified, mSuspendedPackage)
                        && !isPackageSuspended(mSuspendedPackage)) {
                    if (!isFinishing()) {
                        Slog.w(TAG, "Package " + mSuspendedPackage + " has modified"
                                + " suspension conditions while dialog was visible. Finishing.");
@@ -92,6 +93,15 @@ public class SuspendedAppActivity extends AlertActivity
        }
    };

    private boolean isPackageSuspended(String packageName) {
        try {
            return mPm.isPackageSuspended(packageName);
        } catch (PackageManager.NameNotFoundException ne) {
            Slog.e(TAG, "Package " + packageName + " not found", ne);
        }
        return false;
    }

    private CharSequence getAppLabel(String packageName) {
        try {
            return mPm.getApplicationInfoAsUser(packageName, 0, mUserId).loadLabel(mPm);