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

Commit 038be352 authored by Jackal Guo's avatar Jackal Guo Committed by Android (Google) Code Review
Browse files

Merge "Fix parsing equivalence for new permission and flag"

parents 5ed96afb f268946f
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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)
+18 −4
Original line number Diff line number Diff line
@@ -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}