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

Commit c5794358 authored by Jay Sullivan's avatar Jay Sullivan Committed by Android (Google) Code Review
Browse files

Merge "Improve logging of ignored setUidMode" into main

parents 8e4d3fdc f6146093
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -246,24 +246,32 @@ class AppOpService(private val service: AccessCheckingService) : AppOpsCheckingS
        }

    override fun setUidMode(uid: Int, deviceId: String, code: Int, mode: Int): Boolean {
        val appId = UserHandle.getAppId(uid)
        val userId = UserHandle.getUserId(uid)
        val appOpName = AppOpsManager.opToPublicName(code)

        if (
            Flags.runtimePermissionAppopsMappingEnabled() && code in runtimeAppOpToPermissionNames
        ) {
            Slog.w(
                LOG_TAG,
                "Cannot set UID mode for runtime permission app op, " +
                    " callingUid = ${Binder.getCallingUid()}, " +
            val oldMode =
                service.getState { with(appIdPolicy) { getAppOpMode(appId, userId, appOpName) } }
            val wouldHaveChanged = oldMode != mode
            val logMessage =
                (if (wouldHaveChanged) "Blocked" else "Ignored") +
                    " setUidMode call for runtime permission app op:" +
                    " uid = $uid," +
                    " code = ${AppOpsManager.opToName(code)}," +
                    " mode = ${AppOpsManager.modeToName(mode)}",
                RuntimeException()
            )
                    " mode = ${AppOpsManager.modeToName(mode)}," +
                    " callingUid = ${Binder.getCallingUid()}," +
                    " oldMode = ${AppOpsManager.modeToName(oldMode)}"
            if (wouldHaveChanged) {
                Slog.e(LOG_TAG, logMessage, RuntimeException())
            } else {
                Slog.w(LOG_TAG, logMessage)
            }
            return false
        }

        val appId = UserHandle.getAppId(uid)
        val userId = UserHandle.getUserId(uid)
        val appOpName = AppOpsManager.opToPublicName(code)
        var wasChanged: Boolean
        service.mutateState {
            wasChanged = with(appIdPolicy) { setAppOpMode(appId, userId, appOpName, mode) }