diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt index 51c268e6e53e0..4059a496e8ea7 100644 --- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageInfoFlagBehaviorTest.kt @@ -16,17 +16,18 @@ package com.android.server.pm.parsing +import android.Manifest import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.pm.PackageParser import android.platform.test.annotations.Postsubmit +import com.android.internal.util.ArrayUtils import com.android.server.pm.parsing.AndroidPackageInfoFlagBehaviorTest.Companion.Param.Companion.appInfo import com.android.server.pm.parsing.AndroidPackageInfoFlagBehaviorTest.Companion.Param.Companion.pkgInfo import com.android.server.pm.parsing.pkg.AndroidPackage import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertWithMessage -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized @@ -91,9 +92,18 @@ class AndroidPackageInfoFlagBehaviorTest : AndroidPackageParsingTestBase() { listOf(it.configPreferences, it.reqFeatures, it.featureGroups) }, pkgInfo(PackageManager.GET_PERMISSIONS) { - listOf(it.permissions, it.requestedPermissions, it.requestedPermissionsFlags) + listOf( + it.permissions, + // Strip compatibility permission added in T + it.requestedPermissions?.filter { x -> + x != Manifest.permission.POST_NOTIFICATIONS + }?.ifEmpty { null }?.toTypedArray(), + // Strip the flag from compatibility permission added in T + it.requestedPermissionsFlags?.filterIndexed { index, _ -> + index != ArrayUtils.indexOf(it.requestedPermissions, + Manifest.permission.POST_NOTIFICATIONS) + }?.ifEmpty { null }?.toTypedArray()) }, - appInfo(PackageManager.GET_META_DATA) { listOf(it.metaData) }, appInfo(PackageManager.GET_SHARED_LIBRARY_FILES) { listOf(it.sharedLibraryFiles, it.sharedLibraryFiles) diff --git a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt index df8786f26c849..0ae5ecbd28c00 100644 --- a/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt +++ b/services/tests/servicestests/src/com/android/server/pm/parsing/AndroidPackageParsingTestBase.kt @@ -16,6 +16,7 @@ package com.android.server.pm.parsing +import android.Manifest import android.content.Context import android.content.pm.ActivityInfo import android.content.pm.ApplicationInfo @@ -34,6 +35,7 @@ import android.os.Environment import android.os.Process import android.util.SparseArray import androidx.test.platform.app.InstrumentationRegistry +import com.android.internal.util.ArrayUtils import com.android.server.pm.PackageManagerService import com.android.server.pm.parsing.pkg.AndroidPackage import com.android.server.pm.pkg.PackageStateInternal @@ -329,7 +331,10 @@ open class AndroidPackageParsingTestBase { .ignored("Update for fixing b/128526493 and the testing is no longer valid")} enabled=${this.enabled} exported=${this.exported} - flags=${Integer.toBinaryString(this.flags)} + flags=${Integer.toBinaryString( + // Strip flag added in T + this.flags and (ActivityInfo.FLAG_CAN_DISPLAY_ON_REMOTE_DEVICES.inv())) + } icon=${this.icon} labelRes=${this.labelRes} launchMode=${this.launchMode} @@ -501,13 +506,22 @@ open class AndroidPackageParsingTestBase { receivers=${this.receivers?.joinToString { it.dumpToString() } .ignored("Checked separately in test")} reqFeatures=${this.reqFeatures?.joinToString { it.dumpToString() }} - requestedPermissions=${this.requestedPermissions?.contentToString()} + requestedPermissions=${ + // Strip compatibility permission added in T + this.requestedPermissions?.filter { x -> + x != Manifest.permission.POST_NOTIFICATIONS + }?.ifEmpty { null }?.joinToString() + } requestedPermissionsFlags=${ - this.requestedPermissionsFlags?.map { + // Strip the flag from compatibility permission added in T + this.requestedPermissionsFlags?.filterIndexed { index, _ -> + index != ArrayUtils.indexOf(requestedPermissions, + Manifest.permission.POST_NOTIFICATIONS) + }?.map { // Newer flags are stripped it and (PackageInfo.REQUESTED_PERMISSION_REQUIRED or PackageInfo.REQUESTED_PERMISSION_GRANTED) - }?.joinToString() + }?.ifEmpty { null }?.joinToString() } requiredAccountType=${this.requiredAccountType} requiredForAllUsers=${this.requiredForAllUsers}