diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/DistractingPackageHelperTest.kt b/services/tests/mockingservicestests/src/com/android/server/pm/DistractingPackageHelperTest.kt new file mode 100644 index 0000000000000..cf6c82f237304 --- /dev/null +++ b/services/tests/mockingservicestests/src/com/android/server/pm/DistractingPackageHelperTest.kt @@ -0,0 +1,195 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.pm + +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.google.common.truth.Truth.assertThat +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.mockito.ArgumentMatchers.anyInt +import org.mockito.Mockito.clearInvocations +import org.mockito.Mockito.never +import org.mockito.Mockito.verify + +@RunWith(JUnit4::class) +class DistractingPackageHelperTest : PackageHelperTestBase() { + + lateinit var distractingPackageHelper: DistractingPackageHelper + + override fun setup() { + super.setup() + distractingPackageHelper = DistractingPackageHelper( + pms, rule.mocks().injector, broadcastHelper, suspendPackageHelper) + } + + @Test + fun setDistractingPackageRestrictionsAsUser() { + val unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), packagesToChange, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + testHandler.flush() + + verify(pms).scheduleWritePackageRestrictions(eq(TEST_USER_ID)) + verify(broadcastHelper).sendPackageBroadcast(eq(Intent.ACTION_DISTRACTING_PACKAGES_CHANGED), + nullable(), bundleCaptor.capture(), anyInt(), nullable(), nullable(), any(), + nullable(), nullable(), nullable()) + + val modifiedPackages = bundleCaptor.value.getStringArray(Intent.EXTRA_CHANGED_PACKAGE_LIST) + val distractionFlags = bundleCaptor.value.getInt(Intent.EXTRA_DISTRACTION_RESTRICTIONS) + assertThat(modifiedPackages).asList().containsExactly(TEST_PACKAGE_1, TEST_PACKAGE_2) + assertThat(distractionFlags).isEqualTo(PackageManager.RESTRICTION_HIDE_NOTIFICATIONS) + assertThat(unactionedPackages).isEmpty() + } + + @Test + fun setDistractingPackageRestrictionsAsUser_setSameDistractionRestrictionTwice() { + distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), packagesToChange, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + testHandler.flush() + clearInvocations(pms) + clearInvocations(broadcastHelper) + + val unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), packagesToChange, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + testHandler.flush() + verify(pms, never()).scheduleWritePackageRestrictions(eq(TEST_USER_ID)) + verify(broadcastHelper, never()).sendPackageBroadcast( + eq(Intent.ACTION_DISTRACTING_PACKAGES_CHANGED), nullable(), bundleCaptor.capture(), + anyInt(), nullable(), nullable(), any(), nullable(), nullable(), nullable()) + assertThat(unactionedPackages).isEmpty() + } + + @Test + fun setDistractingPackageRestrictionsAsUser_emptyPackageName() { + var unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), null /* packageNames */, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + assertThat(unactionedPackages).isNull() + + unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), arrayOfNulls(0) /* packageNames */, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + assertThat(unactionedPackages).isEmpty() + } + + @Test + fun setDistractingPackageRestrictionsAsUser_callerIsNotAllowed() { + val unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), arrayOf(TEST_PACKAGE_1), + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, Binder.getCallingUid()) + + assertThat(unactionedPackages).asList().hasSize(1) + assertThat(unactionedPackages).asList().contains(TEST_PACKAGE_1) + } + + @Test + fun setDistractingPackageRestrictionsAsUser_setCallerItself() { + val unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), arrayOf(DEVICE_OWNER_PACKAGE), + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, Binder.getCallingUid()) + + assertThat(unactionedPackages).asList().hasSize(1) + assertThat(unactionedPackages).asList().contains(DEVICE_OWNER_PACKAGE) + } + + @Test + fun setDistractingPackageRestrictionsAsUser_nonexistentPackage() { + val unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), arrayOf(NONEXISTENT_PACKAGE), + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + + assertThat(unactionedPackages).asList().hasSize(1) + assertThat(unactionedPackages).asList().contains(NONEXISTENT_PACKAGE) + } + + @Test + fun setDistractingPackageRestrictionsAsUser_setKnownPackages() { + val knownPackages = arrayOf(DEVICE_ADMIN_PACKAGE, DEFAULT_HOME_PACKAGE, DIALER_PACKAGE, + INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, VERIFIER_PACKAGE, + PERMISSION_CONTROLLER_PACKAGE) + val unactionedPackages = distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), knownPackages, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + + assertThat(unactionedPackages.size).isEqualTo(knownPackages.size) + for (pkg in knownPackages) { + assertThat(unactionedPackages).asList().contains(pkg) + } + } + + @Test + fun removeDistractingPackageRestrictions() { + distractingPackageHelper.setDistractingPackageRestrictionsAsUser( + pms.snapshotComputer(), packagesToChange, + PackageManager.RESTRICTION_HIDE_NOTIFICATIONS, TEST_USER_ID, deviceOwnerUid) + testHandler.flush() + clearInvocations(pms) + clearInvocations(broadcastHelper) + + distractingPackageHelper.removeDistractingPackageRestrictions(pms.snapshotComputer(), + packagesToChange, TEST_USER_ID) + testHandler.flush() + + verify(pms).scheduleWritePackageRestrictions(eq(TEST_USER_ID)) + verify(broadcastHelper).sendPackageBroadcast(eq(Intent.ACTION_DISTRACTING_PACKAGES_CHANGED), + nullable(), bundleCaptor.capture(), anyInt(), nullable(), nullable(), any(), + nullable(), nullable(), nullable()) + val modifiedPackages = bundleCaptor.value.getStringArray(Intent.EXTRA_CHANGED_PACKAGE_LIST) + val distractionFlags = bundleCaptor.value.getInt(Intent.EXTRA_DISTRACTION_RESTRICTIONS) + assertThat(modifiedPackages).asList().containsExactly(TEST_PACKAGE_1, TEST_PACKAGE_2) + assertThat(distractionFlags).isEqualTo(PackageManager.RESTRICTION_NONE) + } + + @Test + fun removeDistractingPackageRestrictions_notDistractingPackage() { + distractingPackageHelper.removeDistractingPackageRestrictions(pms.snapshotComputer(), + arrayOf(TEST_PACKAGE_1), TEST_USER_ID) + testHandler.flush() + + verify(pms, never()).scheduleWritePackageRestrictions(eq(TEST_USER_ID)) + verify(broadcastHelper, never()).sendPackageBroadcast(eq( + Intent.ACTION_DISTRACTING_PACKAGES_CHANGED), nullable(), nullable(), anyInt(), + nullable(), nullable(), any(), nullable(), nullable(), nullable()) + } + + @Test + fun removeDistractingPackageRestrictions_emptyPackageName() { + distractingPackageHelper.removeDistractingPackageRestrictions(pms.snapshotComputer(), + null /* packagesToChange */, TEST_USER_ID) + testHandler.flush() + verify(pms, never()).scheduleWritePackageRestrictions(eq(TEST_USER_ID)) + verify(broadcastHelper, never()).sendPackageBroadcast(eq( + Intent.ACTION_DISTRACTING_PACKAGES_CHANGED), nullable(), nullable(), anyInt(), + nullable(), nullable(), any(), nullable(), nullable(), nullable()) + + distractingPackageHelper.removeDistractingPackageRestrictions(pms.snapshotComputer(), + arrayOfNulls(0), TEST_USER_ID) + testHandler.flush() + verify(pms, never()).scheduleWritePackageRestrictions(eq(TEST_USER_ID)) + verify(broadcastHelper, never()).sendPackageBroadcast(eq( + Intent.ACTION_DISTRACTING_PACKAGES_CHANGED), nullable(), nullable(), anyInt(), + nullable(), nullable(), any(), nullable(), nullable(), nullable()) + } +} \ No newline at end of file diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt b/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt new file mode 100644 index 0000000000000..bd012fc7837e3 --- /dev/null +++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageHelperTestBase.kt @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.pm + +import android.os.Build +import android.os.Bundle +import android.os.UserHandle +import android.os.UserManager +import com.android.server.pm.pkg.PackageStateInternal +import com.android.server.testutils.TestHandler +import com.android.server.testutils.any +import com.android.server.testutils.eq +import com.android.server.testutils.whenever +import org.junit.Before +import org.junit.Rule +import org.mockito.ArgumentCaptor +import org.mockito.Captor +import org.mockito.Mock +import org.mockito.Mockito +import org.mockito.Mockito.spy +import org.mockito.MockitoAnnotations + +open class PackageHelperTestBase { + + companion object { + const val TEST_PACKAGE_1 = "com.android.test.package1" + const val TEST_PACKAGE_2 = "com.android.test.package2" + const val DEVICE_OWNER_PACKAGE = "com.android.test.owner" + const val NONEXISTENT_PACKAGE = "com.android.test.nonexistent" + const val DEVICE_ADMIN_PACKAGE = "com.android.test.known.device.admin" + const val DEFAULT_HOME_PACKAGE = "com.android.test.known.home" + const val DIALER_PACKAGE = "com.android.test.known.dialer" + const val INSTALLER_PACKAGE = "com.android.test.known.installer" + const val UNINSTALLER_PACKAGE = "com.android.test.known.uninstaller" + const val VERIFIER_PACKAGE = "com.android.test.known.verifier" + const val PERMISSION_CONTROLLER_PACKAGE = "com.android.test.known.permission" + const val TEST_USER_ID = 0 + } + + lateinit var pms: PackageManagerService + lateinit var suspendPackageHelper: SuspendPackageHelper + lateinit var testHandler: TestHandler + lateinit var defaultAppProvider: DefaultAppProvider + lateinit var packageSetting1: PackageStateInternal + lateinit var packageSetting2: PackageStateInternal + lateinit var ownerSetting: PackageStateInternal + lateinit var packagesToChange: Array + lateinit var uidsToChange: IntArray + + @Mock + lateinit var broadcastHelper: BroadcastHelper + @Mock + lateinit var protectedPackages: ProtectedPackages + + @Captor + lateinit var bundleCaptor: ArgumentCaptor + + @Rule + @JvmField + val rule = MockSystemRule() + var deviceOwnerUid = 0 + + @Before + @Throws(Exception::class) + open fun setup() { + MockitoAnnotations.initMocks(this) + rule.system().stageNominalSystemState() + pms = spy(createPackageManagerService( + TEST_PACKAGE_1, TEST_PACKAGE_2, DEVICE_OWNER_PACKAGE, DEVICE_ADMIN_PACKAGE, + DEFAULT_HOME_PACKAGE, DIALER_PACKAGE, INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, + VERIFIER_PACKAGE, PERMISSION_CONTROLLER_PACKAGE)) + suspendPackageHelper = SuspendPackageHelper( + pms, rule.mocks().injector, broadcastHelper, protectedPackages) + defaultAppProvider = rule.mocks().defaultAppProvider + testHandler = rule.mocks().handler + packageSetting1 = pms.snapshotComputer().getPackageStateInternal(TEST_PACKAGE_1)!! + packageSetting2 = pms.snapshotComputer().getPackageStateInternal(TEST_PACKAGE_2)!! + ownerSetting = pms.snapshotComputer().getPackageStateInternal(DEVICE_OWNER_PACKAGE)!! + deviceOwnerUid = UserHandle.getUid(TEST_USER_ID, ownerSetting.appId) + packagesToChange = arrayOf(TEST_PACKAGE_1, TEST_PACKAGE_2) + uidsToChange = intArrayOf(packageSetting1.appId, packageSetting2.appId) + + whenever(protectedPackages.getDeviceOwnerOrProfileOwnerPackage(eq(TEST_USER_ID))) + .thenReturn(DEVICE_OWNER_PACKAGE) + whenever(rule.mocks().userManagerService.hasUserRestriction( + eq(UserManager.DISALLOW_APPS_CONTROL), eq(TEST_USER_ID))).thenReturn(true) + whenever(rule.mocks().userManagerService.hasUserRestriction( + eq(UserManager.DISALLOW_UNINSTALL_APPS), eq(TEST_USER_ID))).thenReturn(true) + mockKnownPackages(pms) + } + + private fun mockKnownPackages(pms: PackageManagerService) { + Mockito.doAnswer { it.arguments[0] == DEVICE_ADMIN_PACKAGE }.`when`(pms) + .isPackageDeviceAdmin(any(), any()) + Mockito.doReturn(DEFAULT_HOME_PACKAGE).`when`(defaultAppProvider) + .getDefaultHome(eq(TEST_USER_ID)) + Mockito.doReturn(DIALER_PACKAGE).`when`(defaultAppProvider) + .getDefaultDialer(eq(TEST_USER_ID)) + Mockito.doReturn(arrayOf(INSTALLER_PACKAGE)).`when`(pms).getKnownPackageNamesInternal( + any(), eq(KnownPackages.PACKAGE_INSTALLER), eq(TEST_USER_ID)) + Mockito.doReturn(arrayOf(UNINSTALLER_PACKAGE)).`when`(pms).getKnownPackageNamesInternal( + any(), eq(KnownPackages.PACKAGE_UNINSTALLER), eq(TEST_USER_ID)) + Mockito.doReturn(arrayOf(VERIFIER_PACKAGE)).`when`(pms).getKnownPackageNamesInternal( + any(), eq(KnownPackages.PACKAGE_VERIFIER), eq(TEST_USER_ID)) + Mockito.doReturn(arrayOf(PERMISSION_CONTROLLER_PACKAGE)).`when`(pms) + .getKnownPackageNamesInternal(any(), + eq(KnownPackages.PACKAGE_PERMISSION_CONTROLLER), eq(TEST_USER_ID)) + } + + private fun createPackageManagerService(vararg stageExistingPackages: String): + PackageManagerService { + stageExistingPackages.forEach { + rule.system().stageScanExistingPackage(it, 1L, + rule.system().dataAppDirectory) + } + var pms = PackageManagerService(rule.mocks().injector, + false /* coreOnly */, + false /* factoryTest */, + MockSystem.DEFAULT_VERSION_INFO.fingerprint, + false /* isEngBuild */, + false /* isUserDebugBuild */, + Build.VERSION_CODES.CUR_DEVELOPMENT, + Build.VERSION.INCREMENTAL) + rule.system().validateFinalState() + return pms + } +} \ No newline at end of file diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt b/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt index 9774af31950a2..3ba9ca591fb34 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt +++ b/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt @@ -19,106 +19,25 @@ package com.android.server.pm import android.content.Intent import android.content.pm.SuspendDialogInfo import android.os.Binder -import android.os.Build -import android.os.Bundle import android.os.PersistableBundle -import android.os.UserHandle -import android.os.UserManager import android.util.ArrayMap import android.util.SparseArray -import com.android.server.pm.KnownPackages import com.android.server.pm.pkg.PackageStateInternal -import com.android.server.testutils.TestHandler 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.Before -import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 -import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.anyInt -import org.mockito.Captor -import org.mockito.Mock -import org.mockito.Mockito import org.mockito.Mockito.argThat -import org.mockito.Mockito.spy import org.mockito.Mockito.times import org.mockito.Mockito.verify -import org.mockito.MockitoAnnotations @RunWith(JUnit4::class) -class SuspendPackageHelperTest { - - companion object { - const val TEST_PACKAGE_1 = "com.android.test.package1" - const val TEST_PACKAGE_2 = "com.android.test.package2" - const val DEVICE_OWNER_PACKAGE = "com.android.test.owner" - const val NONEXISTENT_PACKAGE = "com.android.test.nonexistent" - const val DEVICE_ADMIN_PACKAGE = "com.android.test.known.device.admin" - const val DEFAULT_HOME_PACKAGE = "com.android.test.known.home" - const val DIALER_PACKAGE = "com.android.test.known.dialer" - const val INSTALLER_PACKAGE = "com.android.test.known.installer" - const val UNINSTALLER_PACKAGE = "com.android.test.known.uninstaller" - const val VERIFIER_PACKAGE = "com.android.test.known.verifier" - const val PERMISSION_CONTROLLER_PACKAGE = "com.android.test.known.permission" - const val TEST_USER_ID = 0 - } - - lateinit var pms: PackageManagerService - lateinit var suspendPackageHelper: SuspendPackageHelper - lateinit var testHandler: TestHandler - lateinit var defaultAppProvider: DefaultAppProvider - lateinit var packageSetting1: PackageStateInternal - lateinit var packageSetting2: PackageStateInternal - lateinit var ownerSetting: PackageStateInternal - lateinit var packagesToSuspend: Array - lateinit var uidsToSuspend: IntArray - - @Mock - lateinit var broadcastHelper: BroadcastHelper - @Mock - lateinit var protectedPackages: ProtectedPackages - - @Captor - lateinit var bundleCaptor: ArgumentCaptor - - @Rule - @JvmField - val rule = MockSystemRule() - var deviceOwnerUid = 0 - - @Before - @Throws(Exception::class) - fun setup() { - MockitoAnnotations.initMocks(this) - rule.system().stageNominalSystemState() - pms = spy(createPackageManagerService( - TEST_PACKAGE_1, TEST_PACKAGE_2, DEVICE_OWNER_PACKAGE, DEVICE_ADMIN_PACKAGE, - DEFAULT_HOME_PACKAGE, DIALER_PACKAGE, INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, - VERIFIER_PACKAGE, PERMISSION_CONTROLLER_PACKAGE)) - suspendPackageHelper = SuspendPackageHelper( - pms, rule.mocks().injector, broadcastHelper, protectedPackages) - defaultAppProvider = rule.mocks().defaultAppProvider - testHandler = rule.mocks().handler - packageSetting1 = pms.snapshotComputer().getPackageStateInternal(TEST_PACKAGE_1)!! - packageSetting2 = pms.snapshotComputer().getPackageStateInternal(TEST_PACKAGE_2)!! - ownerSetting = pms.snapshotComputer().getPackageStateInternal(DEVICE_OWNER_PACKAGE)!! - deviceOwnerUid = UserHandle.getUid(TEST_USER_ID, ownerSetting.appId) - packagesToSuspend = arrayOf(TEST_PACKAGE_1, TEST_PACKAGE_2) - uidsToSuspend = intArrayOf(packageSetting1.appId, packageSetting2.appId) - - whenever(protectedPackages.getDeviceOwnerOrProfileOwnerPackage(eq(TEST_USER_ID))) - .thenReturn(DEVICE_OWNER_PACKAGE) - whenever(rule.mocks().userManagerService.hasUserRestriction( - eq(UserManager.DISALLOW_APPS_CONTROL), eq(TEST_USER_ID))).thenReturn(true) - whenever(rule.mocks().userManagerService.hasUserRestriction( - eq(UserManager.DISALLOW_UNINSTALL_APPS), eq(TEST_USER_ID))).thenReturn(true) - mockKnownPackages(pms) - } +class SuspendPackageHelperTest : PackageHelperTestBase() { @Test fun setPackagesSuspended() { @@ -388,7 +307,7 @@ class SuspendPackageHelperTest { mockAllowList(packageSetting2, allowList(10001, 10002, 10003)) suspendPackageHelper.sendPackagesSuspendedForUser(pms.snapshotComputer(), - Intent.ACTION_PACKAGES_SUSPENDED, packagesToSuspend, uidsToSuspend, TEST_USER_ID) + Intent.ACTION_PACKAGES_SUSPENDED, packagesToChange, uidsToChange, TEST_USER_ID) testHandler.flush() verify(broadcastHelper).sendPackageBroadcast(any(), nullable(), bundleCaptor.capture(), anyInt(), nullable(), nullable(), any(), nullable(), any(), nullable()) @@ -407,7 +326,7 @@ class SuspendPackageHelperTest { mockAllowList(packageSetting2, allowList(10001, 10002, 10007)) suspendPackageHelper.sendPackagesSuspendedForUser(pms.snapshotComputer(), - Intent.ACTION_PACKAGES_SUSPENDED, packagesToSuspend, uidsToSuspend, TEST_USER_ID) + Intent.ACTION_PACKAGES_SUSPENDED, packagesToChange, uidsToChange, TEST_USER_ID) testHandler.flush() verify(broadcastHelper, times(2)).sendPackageBroadcast( any(), nullable(), bundleCaptor.capture(), anyInt(), nullable(), nullable(), any(), @@ -430,7 +349,7 @@ class SuspendPackageHelperTest { mockAllowList(packageSetting2, null) suspendPackageHelper.sendPackagesSuspendedForUser(pms.snapshotComputer(), - Intent.ACTION_PACKAGES_SUSPENDED, packagesToSuspend, uidsToSuspend, TEST_USER_ID) + Intent.ACTION_PACKAGES_SUSPENDED, packagesToChange, uidsToChange, TEST_USER_ID) testHandler.flush() verify(broadcastHelper, times(2)).sendPackageBroadcast( any(), nullable(), bundleCaptor.capture(), anyInt(), nullable(), nullable(), any(), @@ -450,7 +369,7 @@ class SuspendPackageHelperTest { @Throws(Exception::class) fun sendPackagesSuspendModifiedForUser() { suspendPackageHelper.sendPackagesSuspendedForUser(pms.snapshotComputer(), - Intent.ACTION_PACKAGES_SUSPENSION_CHANGED, packagesToSuspend, uidsToSuspend, + Intent.ACTION_PACKAGES_SUSPENSION_CHANGED, packagesToChange, uidsToChange, TEST_USER_ID) testHandler.flush() verify(broadcastHelper).sendPackageBroadcast( @@ -475,40 +394,4 @@ class SuspendPackageHelperTest { )) .thenReturn(list) } - - private fun mockKnownPackages(pms: PackageManagerService) { - Mockito.doAnswer { it.arguments[0] == DEVICE_ADMIN_PACKAGE }.`when`(pms) - .isPackageDeviceAdmin(any(), any()) - Mockito.doReturn(DEFAULT_HOME_PACKAGE).`when`(defaultAppProvider) - .getDefaultHome(eq(TEST_USER_ID)) - Mockito.doReturn(DIALER_PACKAGE).`when`(defaultAppProvider) - .getDefaultDialer(eq(TEST_USER_ID)) - Mockito.doReturn(arrayOf(INSTALLER_PACKAGE)).`when`(pms).getKnownPackageNamesInternal( - any(), eq(KnownPackages.PACKAGE_INSTALLER), eq(TEST_USER_ID)) - Mockito.doReturn(arrayOf(UNINSTALLER_PACKAGE)).`when`(pms).getKnownPackageNamesInternal( - any(), eq(KnownPackages.PACKAGE_UNINSTALLER), eq(TEST_USER_ID)) - Mockito.doReturn(arrayOf(VERIFIER_PACKAGE)).`when`(pms).getKnownPackageNamesInternal( - any(), eq(KnownPackages.PACKAGE_VERIFIER), eq(TEST_USER_ID)) - Mockito.doReturn(arrayOf(PERMISSION_CONTROLLER_PACKAGE)).`when`(pms) - .getKnownPackageNamesInternal(any(), - eq(KnownPackages.PACKAGE_PERMISSION_CONTROLLER), eq(TEST_USER_ID)) - } - - private fun createPackageManagerService(vararg stageExistingPackages: String): - PackageManagerService { - stageExistingPackages.forEach { - rule.system().stageScanExistingPackage(it, 1L, - rule.system().dataAppDirectory) - } - var pms = PackageManagerService(rule.mocks().injector, - false /*coreOnly*/, - false /*factoryTest*/, - MockSystem.DEFAULT_VERSION_INFO.fingerprint, - false /*isEngBuild*/, - false /*isUserDebugBuild*/, - Build.VERSION_CODES.CUR_DEVELOPMENT, - Build.VERSION.INCREMENTAL) - rule.system().validateFinalState() - return pms - } }