diff options
-rw-r--r-- | services/core/java/com/android/server/audio/HardeningEnforcer.java | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/audio/HardeningEnforcer.java b/services/core/java/com/android/server/audio/HardeningEnforcer.java index 9bb5160f108a..46693614e137 100644 --- a/services/core/java/com/android/server/audio/HardeningEnforcer.java +++ b/services/core/java/com/android/server/audio/HardeningEnforcer.java @@ -199,7 +199,9 @@ public class HardeningEnforcer { if (packageName.isEmpty()) { packageName = getPackNameForUid(callingUid); } - + // indicates would be blocked if audio capabilities were required + boolean blockedIfFull = !noteOp(AppOpsManager.OP_CONTROL_AUDIO, + callingUid, packageName, attributionTag); boolean blocked = true; // indicates the focus request was not blocked because of the SDK version boolean unblockedBySdk = false; @@ -213,22 +215,35 @@ public class HardeningEnforcer { Slog.i(TAG, "blockFocusMethod pack:" + packageName + " NOT blocking due to sdk=" + targetSdk); } - blocked = false; unblockedBySdk = true; } - metricsLogFocusReq(blocked, focusReqType, callingUid, unblockedBySdk); + boolean enforced = mShouldEnableAllHardening.get() || !unblockedBySdk; + boolean enforcedFull = mShouldEnableAllHardening.get(); - if (!blocked) { - return false; - } + metricsLogFocusReq(blocked && enforced, focusReqType, callingUid, unblockedBySdk); - String errorMssg = "Focus request DENIED for uid:" + callingUid - + " clientId:" + clientId + " req:" + focusReqType - + " procState:" + mActivityManager.getUidProcessState(callingUid); - mEventLogger.enqueueAndSlog(errorMssg, EventLogger.Event.ALOGI, TAG); + if (blocked) { + String msg = "AudioHardening focus request for req " + + focusReqType + + (!enforced ? " would be " : " ") + + "ignored for " + + packageName + " (" + callingUid + "), " + + clientId + + ", level: partial"; + mEventLogger.enqueueAndSlog(msg, EventLogger.Event.ALOGW, TAG); + } else if (blockedIfFull) { + String msg = "AudioHardening focus request for req " + + focusReqType + + (!enforcedFull ? " would be " : " ") + + "ignored for " + + packageName + " (" + callingUid + "), " + + clientId + + ", level: full"; + mEventLogger.enqueueAndSlog(msg, EventLogger.Event.ALOGW, TAG); + } - return true; + return blocked && enforced || (blockedIfFull && enforcedFull); } /** |