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

Commit 51b96e61 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:...

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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23411860



Change-Id: I7da82234d5196f3fd7b96f040dcd9f53675d331a
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 44771a0e eb090205
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