diff options
| author | 2024-12-19 23:58:42 +0000 | |
|---|---|---|
| committer | 2024-12-20 23:55:43 +0000 | |
| commit | 52d270debdc937d0c81f2fddbe142e6736d616e1 (patch) | |
| tree | f6f4b28c68bc34667d2ddeeff800693012486f9b | |
| parent | 82e4c14d475d4335f22c4b2faffeb7970548c254 (diff) | |
Log source of BAL verdict
Test: atest BackgroundActivityLaunchTest
Flag: EXEMPT logging only
Change-Id: Ie5aa224b18f7cb38ac6eacb111aebd545ff6503f
| -rw-r--r-- | services/core/java/com/android/server/wm/BackgroundActivityStartController.java | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java index 89d756ca5aaf..f9a06e2dd04b 100644 --- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java +++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java @@ -616,7 +616,6 @@ public class BackgroundActivityStartController { } static class BalVerdict { - static final BalVerdict BLOCK = new BalVerdict(BAL_BLOCK, false, "Blocked"); static final BalVerdict ALLOW_BY_DEFAULT = new BalVerdict(BAL_ALLOW_DEFAULT, false, "Default"); @@ -640,6 +639,9 @@ public class BackgroundActivityStartController { } public BalVerdict withProcessInfo(String msg, WindowProcessController process) { + if (this == BLOCK || this == ALLOW_BY_DEFAULT || this == ALLOW_PRIVILEGED) { + return this; + } mProcessInfo = msg + " (uid=" + process.mUid + ",pid=" + process.getPid() + ")"; return this; } @@ -653,6 +655,10 @@ public class BackgroundActivityStartController { } void setOnlyCreatorAllows(boolean onlyCreatorAllows) { + if (this == BLOCK) { + // do not modify BLOCK constant + return; + } mOnlyCreatorAllows = onlyCreatorAllows; } @@ -662,6 +668,10 @@ public class BackgroundActivityStartController { @VisibleForTesting BalVerdict setBasedOnRealCaller() { + if (this == BLOCK) { + // do not modify BLOCK constant + return this; + } mBasedOnRealCaller = true; return this; } @@ -669,22 +679,29 @@ public class BackgroundActivityStartController { public String toString() { StringBuilder builder = new StringBuilder(); builder.append(balCodeToString(mCode)); - if (DEBUG_ACTIVITY_STARTS) { - builder.append(" ("); - if (mBackground) { - builder.append("Background "); - } - builder.append("Activity start "); - if (mCode == BAL_BLOCK) { - builder.append("denied"); - } else { - builder.append("allowed: ").append(mMessage); + if (this != BLOCK) { + if (mOnlyCreatorAllows) { + builder.append(" [onlyCaller]"); + } else if (mBasedOnRealCaller) { + builder.append(" [realCaller]"); } - if (mProcessInfo != null) { - builder.append(" "); - builder.append(mProcessInfo); + if (DEBUG_ACTIVITY_STARTS) { + builder.append(" ("); + if (mBackground) { + builder.append("Background "); + } + builder.append("Activity start "); + if (mCode == BAL_BLOCK) { + builder.append("denied"); + } else { + builder.append("allowed: ").append(mMessage); + } + if (mProcessInfo != null) { + builder.append(" "); + builder.append(mProcessInfo); + } + builder.append(")"); } - builder.append(")"); } return builder.toString(); } @@ -785,9 +802,8 @@ public class BackgroundActivityStartController { .setBasedOnRealCaller(); state.setResultForRealCaller(resultForRealCaller); - if (state.isPendingIntent()) { - resultForCaller.setOnlyCreatorAllows( - resultForCaller.allows() && resultForRealCaller.blocks()); + if (state.isPendingIntent() && resultForCaller.allows() && resultForRealCaller.blocks()) { + resultForCaller.setOnlyCreatorAllows(true); } // Handle cases with explicit opt-in |