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

Commit af1c2fc0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix system crash when APK gets deleted."

parents 48c206a4 402a38ae
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -141,7 +141,11 @@ class AccessPolicy private constructor(
            setDisabledSystemPackageStates(disabledSystemPackageStates)
            packageStates.forEach { (packageName, packageState) ->
                if (packageState.volumeUuid == volumeUuid) {
                    check(packageNames.contains(packageName)) {
                    // The APK for a package on a mounted storage volume may still be unavailable
                    // due to APK being deleted, e.g. after an OTA.
                    check(
                        packageState.androidPackage == null || packageNames.contains(packageName)
                    ) {
                        "Package $packageName on storage volume $volumeUuid didn't receive" +
                            " onPackageAdded() before onStorageVolumeMounted()"
                    }
+4 −10
Original line number Diff line number Diff line
@@ -155,19 +155,13 @@ class AppIdPermissionPolicy : SchemePolicy() {
            evaluatePermissionStateForAllPackages(permissionName, null)
        }

        newState.externalState.packageStates.forEach { (_, packageState) ->
            val androidPackage = packageState.androidPackage
            if (androidPackage == null || androidPackage.volumeUuid != volumeUuid) {
                return@forEach
            }
        packageNames.forEachIndexed { _, packageName ->
            val packageState = newState.externalState.packageStates[packageName]!!
            val installedPackageState = if (isSystemUpdated) packageState else null
            evaluateAllPermissionStatesForPackage(packageState, installedPackageState)
        }
        newState.externalState.packageStates.forEach { (_, packageState) ->
            val androidPackage = packageState.androidPackage
            if (androidPackage == null || androidPackage.volumeUuid != volumeUuid) {
                return@forEach
            }
        packageNames.forEachIndexed { _, packageName ->
            val packageState = newState.externalState.packageStates[packageName]!!
            newState.externalState.userIds.forEachIndexed { _, userId ->
                inheritImplicitPermissionStates(packageState.appId, userId)
            }