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

Commit 8a5ee58d authored by Pavel Grafov's avatar Pavel Grafov Committed by Android (Google) Code Review
Browse files

Merge "Make PM unit tests work with trunk stable flags" into main

parents 4066bfd8 5720f225
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.os.PersistableBundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.DeviceConfig;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.IntArray;
@@ -504,10 +503,6 @@ public final class SuspendPackageHelper {
            final String requiredPermissionControllerPackage =
                    getKnownPackageName(snapshot, KnownPackages.PACKAGE_PERMISSION_CONTROLLER,
                            userId);
            final AppOpsManager appOpsManager = mInjector.getSystemService(AppOpsManager.class);
            final boolean isSystemExemptFlagEnabled = DeviceConfig.getBoolean(
                    DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE,
                    SYSTEM_EXEMPT_FROM_SUSPENSION, /* defaultValue= */ true);
            for (int i = 0; i < packageNames.length; i++) {
                canSuspend[i] = false;
                final String packageName = packageNames[i];
@@ -581,9 +576,7 @@ public final class SuspendPackageHelper {
                                + pkg.getStaticSharedLibraryName());
                        continue;
                    }
                    if (isSystemExemptFlagEnabled && appOpsManager.checkOpNoThrow(
                            AppOpsManager.OP_SYSTEM_EXEMPT_FROM_SUSPENSION, uid, packageName)
                            == AppOpsManager.MODE_ALLOWED) {
                    if (exemptFromSuspensionByAppOp(uid, packageName)) {
                        Slog.w(TAG, "Cannot suspend package \"" + packageName
                                + "\": has OP_SYSTEM_EXEMPT_FROM_SUSPENSION set");
                        continue;
@@ -601,6 +594,13 @@ public final class SuspendPackageHelper {
        return canSuspend;
    }

    private boolean exemptFromSuspensionByAppOp(int uid, String packageName) {
        final AppOpsManager appOpsManager = mInjector.getSystemService(AppOpsManager.class);
        return appOpsManager.checkOpNoThrow(
                AppOpsManager.OP_SYSTEM_EXEMPT_FROM_SUSPENSION, uid, packageName)
                        == AppOpsManager.MODE_ALLOWED;
    }

    /**
     * Suspends packages on behalf of an admin.
     *
+6 −0
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package com.android.server.pm

import android.app.AppOpsManager
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Binder
import com.android.server.testutils.any
import com.android.server.testutils.eq
import com.android.server.testutils.nullable
import com.android.server.testutils.whenever
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
@@ -31,6 +33,7 @@ import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.never
import org.mockito.Mockito.verify


@RunWith(JUnit4::class)
class DistractingPackageHelperTest : PackageHelperTestBase() {

@@ -40,6 +43,9 @@ class DistractingPackageHelperTest : PackageHelperTestBase() {
        super.setup()
        distractingPackageHelper = DistractingPackageHelper(
                pms, broadcastHelper, suspendPackageHelper)
        whenever(rule.mocks().appOpsManager.checkOpNoThrow(
                eq(AppOpsManager.OP_SYSTEM_EXEMPT_FROM_SUSPENSION), any(), any()))
                .thenReturn(AppOpsManager.MODE_DEFAULT)
    }

    @Test
+4 −1
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
 */
package com.android.server.pm

import android.app.AppOpsManager
import android.app.PropertyInvalidatedCache
import android.content.Context
import android.content.Intent
@@ -151,7 +152,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) {
                .mockStatic(EventLog::class.java)
                .mockStatic(LocalServices::class.java)
                .mockStatic(LocalManagerRegistry::class.java)
                .mockStatic(DeviceConfig::class.java)
                .mockStatic(DeviceConfig::class.java, Mockito.CALLS_REAL_METHODS)
                .mockStatic(HexEncoding::class.java)
                .apply(withSession)
        session = apply.startMocking()
@@ -192,6 +193,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) {
        val userManagerService: UserManagerService = mock()
        val componentResolver: ComponentResolver = mock()
        val permissionManagerInternal: PermissionManagerServiceInternal = mock()
        val appOpsManager: AppOpsManager = mock()
        val incrementalManager: IncrementalManager = mock()
        val platformCompat: PlatformCompat = mock()
        val settings: Settings = mock()
@@ -304,6 +306,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) {
        whenever(mocks.injector.defaultAppProvider) { mocks.defaultAppProvider }
        whenever(mocks.injector.backgroundHandler) { mocks.backgroundHandler }
        whenever(mocks.injector.updateOwnershipHelper) { mocks.updateOwnershipHelper }
        whenever(mocks.injector.getSystemService(AppOpsManager::class.java)) { mocks.appOpsManager }
        wheneverStatic { SystemConfig.getInstance() }.thenReturn(mocks.systemConfig)
        whenever(mocks.systemConfig.availableFeatures).thenReturn(DEFAULT_AVAILABLE_FEATURES_MAP)
        whenever(mocks.systemConfig.sharedLibraries).thenReturn(DEFAULT_SHARED_LIBRARIES_LIST)
+8 −0
Original line number Diff line number Diff line
@@ -16,12 +16,14 @@

package com.android.server.pm

import android.app.AppOpsManager
import android.content.Intent
import android.content.pm.SuspendDialogInfo
import android.os.Binder
import android.os.PersistableBundle
import com.android.server.testutils.any
import com.android.server.testutils.eq
import com.android.server.testutils.whenever
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
@@ -32,6 +34,12 @@ import org.mockito.Mockito.verify

@RunWith(JUnit4::class)
class SuspendPackageHelperTest : PackageHelperTestBase() {
    override fun setup() {
        super.setup()
        whenever(rule.mocks().appOpsManager.checkOpNoThrow(
                eq(AppOpsManager.OP_SYSTEM_EXEMPT_FROM_SUSPENSION), any(), any()))
                .thenReturn(AppOpsManager.MODE_DEFAULT)
    }

    @Test
    fun setPackagesSuspended() {