Merge "Fix parsing equivalence for new permission and flag"
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user