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

Commit 1162a22f authored by Joao Victor Mendes Freire's avatar Joao Victor Mendes Freire
Browse files

Clear identity for SupervisionManager check.

Previously the isSupervisionEnabled call was being called with app
identity. This resulted in broken tests. This commit fixes by clearing
the identity before using the manager.

Flag: android.content.pm.protect_supervision_packages
Bug: 408407211
Test: atest FrameworksMockingServicesTests:com.android.server.pm.ProtectedPackagesMockedTest
Change-Id: I50c5ac7e7bf33e5ca7e3467297f1a3287192c917
parent b60c4cf8
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -192,8 +192,8 @@ public class ProtectedPackages {
    /** Query the packages with supervision related roles. */
    private boolean isSupervisionPackage(@UserIdInt int userId, String packageName) {
        SupervisionManager supervisionManager = mContext.getSystemService(SupervisionManager.class);
        if (supervisionManager == null || !supervisionManager.isSupervisionEnabled()) {
            Slog.w(TAG, "Supervision is not enabled.");
        if (supervisionManager == null) {
            Slog.w(TAG, "Failed to get SupervisionManager.");
            return false;
        }
        final RoleManager roleManager = mContext.getSystemService(RoleManager.class);
@@ -203,6 +203,10 @@ public class ProtectedPackages {
        }
        return Binder.withCleanCallingIdentity(
                () -> {
                    if (!supervisionManager.isSupervisionEnabledForUser(userId)) {
                        Slog.w(TAG, "Supervision is not enabled.");
                        return false;
                    }
                    List<String> systemSupervisionHolders =
                            roleManager.getRoleHoldersAsUser(
                                    RoleManager.ROLE_SYSTEM_SUPERVISION, UserHandle.of(userId));
+2 −2
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ open class ProtectedPackagesMockedTest {
            .thenReturn(listOf(SUPERVISION_PKG))
        whenever(rule.mocks().context.getSystemService(RoleManager::class.java))
            .thenReturn(roleManager)
        whenever(supervisionManager.isSupervisionEnabled()).thenReturn(true)
        whenever(supervisionManager.isSupervisionEnabledForUser(any())).thenReturn(true)
        whenever(rule.mocks().context.getSystemService(SupervisionManager::class.java))
            .thenReturn(supervisionManager)
        protectedPackages = ProtectedPackages(rule.mocks().context)
@@ -110,7 +110,7 @@ open class ProtectedPackagesMockedTest {
    @Throws(Exception::class)
    @EnableFlags(Flags.FLAG_PROTECT_SUPERVISION_PACKAGES)
    fun testIsPackageProtected_supervisionDisabled_flagEnabled_returnsFalse() {
        whenever(supervisionManager.isSupervisionEnabled()).thenReturn(false)
        whenever(supervisionManager.isSupervisionEnabledForUser(any())).thenReturn(false)

        val stateProtected =
            protectedPackages.isPackageStateProtected(TEST_USER_ID, SUPERVISION_PKG)