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

Commit ae47bb72 authored by Pavel Grafov's avatar Pavel Grafov Committed by Automerger Merge Worker
Browse files

Merge "Exempt mgmt role holder from quiet mode suspension" into udc-dev am: bbede1d8

parents b09bf1dd bbede1d8
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -3409,7 +3409,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    }
    }


    @Nullable
    @Nullable
    private String getDevicePolicyManagementRoleHolderPackageName(int userId) {
    public String getDevicePolicyManagementRoleHolderPackageName(int userId) {
        return Binder.withCleanCallingIdentity(() -> {
        return Binder.withCleanCallingIdentity(() -> {
            RoleManager roleManager = mContext.getSystemService(RoleManager.class);
            RoleManager roleManager = mContext.getSystemService(RoleManager.class);
            List<String> roleHolders =
            List<String> roleHolders =
+4 −0
Original line number Original line Diff line number Diff line
@@ -724,6 +724,10 @@ public final class SuspendPackageHelper {
        for (PackageInfo info : pkgInfos) {
        for (PackageInfo info : pkgInfos) {
            result.add(info.packageName);
            result.add(info.packageName);
        }
        }

        // Role holder may be null, but ArraySet handles it correctly.
        result.remove(mPm.getDevicePolicyManagementRoleHolderPackageName(userId));

        return result;
        return result;
    }
    }


+16 −2
Original line number Original line Diff line number Diff line
@@ -280,6 +280,10 @@ class ActivityStartInterceptor {
            return false;
            return false;
        }
        }


        if (isKeepProfilesRunningEnabled() && !isPackageSuspended()) {
            return false;
        }

        IntentSender target = createIntentSenderForOriginalIntent(mCallingUid,
        IntentSender target = createIntentSenderForOriginalIntent(mCallingUid,
                FLAG_CANCEL_CURRENT | FLAG_ONE_SHOT);
                FLAG_CANCEL_CURRENT | FLAG_ONE_SHOT);


@@ -322,8 +326,7 @@ class ActivityStartInterceptor {


    private boolean interceptSuspendedPackageIfNeeded() {
    private boolean interceptSuspendedPackageIfNeeded() {
        // Do not intercept if the package is not suspended
        // Do not intercept if the package is not suspended
        if (mAInfo == null || mAInfo.applicationInfo == null ||
        if (!isPackageSuspended()) {
                (mAInfo.applicationInfo.flags & FLAG_SUSPENDED) == 0) {
            return false;
            return false;
        }
        }
        final PackageManagerInternal pmi = mService.getPackageManagerInternalLocked();
        final PackageManagerInternal pmi = mService.getPackageManagerInternalLocked();
@@ -467,6 +470,17 @@ class ActivityStartInterceptor {
        return true;
        return true;
    }
    }


    private boolean isPackageSuspended() {
        return mAInfo != null && mAInfo.applicationInfo != null
                && (mAInfo.applicationInfo.flags & FLAG_SUSPENDED) != 0;
    }

    private static boolean isKeepProfilesRunningEnabled() {
        DevicePolicyManagerInternal dpmi =
                LocalServices.getService(DevicePolicyManagerInternal.class);
        return dpmi == null || dpmi.isKeepProfilesRunningEnabled();
    }

    /**
    /**
     * Called when an activity is successfully launched.
     * Called when an activity is successfully launched.
     */
     */
+3 −0
Original line number Original line Diff line number Diff line
@@ -48,6 +48,7 @@ open class PackageHelperTestBase {
        const val UNINSTALLER_PACKAGE = "com.android.test.known.uninstaller"
        const val UNINSTALLER_PACKAGE = "com.android.test.known.uninstaller"
        const val VERIFIER_PACKAGE = "com.android.test.known.verifier"
        const val VERIFIER_PACKAGE = "com.android.test.known.verifier"
        const val PERMISSION_CONTROLLER_PACKAGE = "com.android.test.known.permission"
        const val PERMISSION_CONTROLLER_PACKAGE = "com.android.test.known.permission"
        const val MGMT_ROLE_HOLDER_PACKAGE = "com.android.test.know.device_management"
        const val TEST_USER_ID = 0
        const val TEST_USER_ID = 0
    }
    }


@@ -119,6 +120,8 @@ open class PackageHelperTestBase {
        Mockito.doReturn(arrayOf(PERMISSION_CONTROLLER_PACKAGE)).`when`(pms)
        Mockito.doReturn(arrayOf(PERMISSION_CONTROLLER_PACKAGE)).`when`(pms)
                .getKnownPackageNamesInternal(any(),
                .getKnownPackageNamesInternal(any(),
                        eq(KnownPackages.PACKAGE_PERMISSION_CONTROLLER), eq(TEST_USER_ID))
                        eq(KnownPackages.PACKAGE_PERMISSION_CONTROLLER), eq(TEST_USER_ID))
        Mockito.doReturn(MGMT_ROLE_HOLDER_PACKAGE).`when`(pms)
                .getDevicePolicyManagementRoleHolderPackageName(eq(TEST_USER_ID))
    }
    }


    private fun createPackageManagerService(vararg stageExistingPackages: String):
    private fun createPackageManagerService(vararg stageExistingPackages: String):
+3 −2
Original line number Original line Diff line number Diff line
@@ -128,13 +128,14 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
    fun setPackagesSuspended_forQuietMode() {
    fun setPackagesSuspended_forQuietMode() {
        val knownPackages = arrayOf(DEVICE_ADMIN_PACKAGE, DEFAULT_HOME_PACKAGE, DIALER_PACKAGE,
        val knownPackages = arrayOf(DEVICE_ADMIN_PACKAGE, DEFAULT_HOME_PACKAGE, DIALER_PACKAGE,
                INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, VERIFIER_PACKAGE,
                INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, VERIFIER_PACKAGE,
                PERMISSION_CONTROLLER_PACKAGE)
                PERMISSION_CONTROLLER_PACKAGE, MGMT_ROLE_HOLDER_PACKAGE)
        val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
        val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
                knownPackages, true /* suspended */, null /* appExtras */,
                knownPackages, true /* suspended */, null /* appExtras */,
                null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
                null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
                TEST_USER_ID, deviceOwnerUid, true /* forQuietMode */)!!
                TEST_USER_ID, deviceOwnerUid, true /* forQuietMode */)!!


        assertThat(failedNames.size).isEqualTo(0)
        assertThat(failedNames.size).isEqualTo(1)
        assertThat(failedNames[0]).isEqualTo(MGMT_ROLE_HOLDER_PACKAGE)
    }
    }


    @Test
    @Test
Loading