Loading services/core/java/com/android/server/wm/ActivityStarter.java +22 −11 Original line number Diff line number Diff line Loading @@ -2031,6 +2031,13 @@ class ActivityStarter { } } // ASM rules have failed. Log why return logAsmFailureAndCheckFeatureEnabled(r, newTask, targetTask, shouldBlockActivityStart, taskToFront); } private boolean logAsmFailureAndCheckFeatureEnabled(ActivityRecord r, boolean newTask, Task targetTask, boolean shouldBlockActivityStart, boolean taskToFront) { // ASM rules have failed. Log why ActivityRecord targetTopActivity = targetTask == null ? null : targetTask.getActivity(ar -> !ar.finishing && !ar.isAlwaysOnTop()); Loading @@ -2041,6 +2048,13 @@ class ActivityStarter { ? FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_SAME_TASK : FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_DIFFERENT_TASK); boolean blockActivityStartAndFeatureEnabled = ActivitySecurityModelFeatureFlags .shouldRestrictActivitySwitch(mCallingUid) && shouldBlockActivityStart; String asmDebugInfo = getDebugInfoForActivitySecurity("Launch", r, targetTask, targetTopActivity, blockActivityStartAndFeatureEnabled, /*taskToFront*/taskToFront); FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED, /* caller_uid */ mSourceRecord != null ? mSourceRecord.getUid() : mCallingUid, Loading Loading @@ -2069,13 +2083,11 @@ class ActivityStarter { targetTask != null && mSourceRecord != null && !targetTask.equals(mSourceRecord.getTask()) && targetTask.isVisible(), /* bal_code */ mBalCode mBalCode, /* task_stack */ asmDebugInfo ); boolean blockActivityStartAndFeatureEnabled = ActivitySecurityModelFeatureFlags .shouldRestrictActivitySwitch(mCallingUid) && shouldBlockActivityStart; String launchedFromPackageName = r.launchedFromPackage; if (ActivitySecurityModelFeatureFlags.shouldShowToast(mCallingUid)) { String toastText = ActivitySecurityModelFeatureFlags.DOC_LINK Loading @@ -2085,8 +2097,7 @@ class ActivityStarter { UiThread.getHandler().post(() -> Toast.makeText(mService.mContext, toastText, Toast.LENGTH_LONG).show()); logDebugInfoForActivitySecurity("Launch", r, targetTask, targetTopActivity, blockActivityStartAndFeatureEnabled, /* taskToFront */ taskToFront); Slog.i(TAG, asmDebugInfo); } if (blockActivityStartAndFeatureEnabled) { Loading @@ -2104,7 +2115,7 @@ class ActivityStarter { } /** Only called when an activity launch may be blocked, which should happen very rarely */ private void logDebugInfoForActivitySecurity(String action, ActivityRecord r, Task targetTask, private String getDebugInfoForActivitySecurity(String action, ActivityRecord r, Task targetTask, ActivityRecord targetTopActivity, boolean blockActivityStartAndFeatureEnabled, boolean taskToFront) { final String prefix = "[ASM] "; Loading Loading @@ -2165,7 +2176,7 @@ class ActivityStarter { joiner.add(prefix + "BalCode: " + balCodeToString(mBalCode)); joiner.add(prefix + "------ Activity Security " + action + " Debug Logging End ------"); Slog.i(TAG, joiner.toString()); return joiner.toString(); } /** Loading Loading @@ -2339,7 +2350,7 @@ class ActivityStarter { + ActivitySecurityModelFeatureFlags.DOC_LINK, Toast.LENGTH_LONG).show()); logDebugInfoForActivitySecurity("Clear Top", mStartActivity, targetTask, targetTaskTop, getDebugInfoForActivitySecurity("Clear Top", mStartActivity, targetTask, targetTaskTop, shouldBlockActivityStart, /* taskToFront */ true); } } Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +3 −1 Original line number Diff line number Diff line Loading @@ -1752,7 +1752,9 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { /* multi_window */ false, /* bal_code */ -1 -1, /* task_stack */ null ); boolean restrictActivitySwitch = ActivitySecurityModelFeatureFlags Loading Loading
services/core/java/com/android/server/wm/ActivityStarter.java +22 −11 Original line number Diff line number Diff line Loading @@ -2031,6 +2031,13 @@ class ActivityStarter { } } // ASM rules have failed. Log why return logAsmFailureAndCheckFeatureEnabled(r, newTask, targetTask, shouldBlockActivityStart, taskToFront); } private boolean logAsmFailureAndCheckFeatureEnabled(ActivityRecord r, boolean newTask, Task targetTask, boolean shouldBlockActivityStart, boolean taskToFront) { // ASM rules have failed. Log why ActivityRecord targetTopActivity = targetTask == null ? null : targetTask.getActivity(ar -> !ar.finishing && !ar.isAlwaysOnTop()); Loading @@ -2041,6 +2048,13 @@ class ActivityStarter { ? FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_SAME_TASK : FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED__ACTION__ACTIVITY_START_DIFFERENT_TASK); boolean blockActivityStartAndFeatureEnabled = ActivitySecurityModelFeatureFlags .shouldRestrictActivitySwitch(mCallingUid) && shouldBlockActivityStart; String asmDebugInfo = getDebugInfoForActivitySecurity("Launch", r, targetTask, targetTopActivity, blockActivityStartAndFeatureEnabled, /*taskToFront*/taskToFront); FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_ACTION_BLOCKED, /* caller_uid */ mSourceRecord != null ? mSourceRecord.getUid() : mCallingUid, Loading Loading @@ -2069,13 +2083,11 @@ class ActivityStarter { targetTask != null && mSourceRecord != null && !targetTask.equals(mSourceRecord.getTask()) && targetTask.isVisible(), /* bal_code */ mBalCode mBalCode, /* task_stack */ asmDebugInfo ); boolean blockActivityStartAndFeatureEnabled = ActivitySecurityModelFeatureFlags .shouldRestrictActivitySwitch(mCallingUid) && shouldBlockActivityStart; String launchedFromPackageName = r.launchedFromPackage; if (ActivitySecurityModelFeatureFlags.shouldShowToast(mCallingUid)) { String toastText = ActivitySecurityModelFeatureFlags.DOC_LINK Loading @@ -2085,8 +2097,7 @@ class ActivityStarter { UiThread.getHandler().post(() -> Toast.makeText(mService.mContext, toastText, Toast.LENGTH_LONG).show()); logDebugInfoForActivitySecurity("Launch", r, targetTask, targetTopActivity, blockActivityStartAndFeatureEnabled, /* taskToFront */ taskToFront); Slog.i(TAG, asmDebugInfo); } if (blockActivityStartAndFeatureEnabled) { Loading @@ -2104,7 +2115,7 @@ class ActivityStarter { } /** Only called when an activity launch may be blocked, which should happen very rarely */ private void logDebugInfoForActivitySecurity(String action, ActivityRecord r, Task targetTask, private String getDebugInfoForActivitySecurity(String action, ActivityRecord r, Task targetTask, ActivityRecord targetTopActivity, boolean blockActivityStartAndFeatureEnabled, boolean taskToFront) { final String prefix = "[ASM] "; Loading Loading @@ -2165,7 +2176,7 @@ class ActivityStarter { joiner.add(prefix + "BalCode: " + balCodeToString(mBalCode)); joiner.add(prefix + "------ Activity Security " + action + " Debug Logging End ------"); Slog.i(TAG, joiner.toString()); return joiner.toString(); } /** Loading Loading @@ -2339,7 +2350,7 @@ class ActivityStarter { + ActivitySecurityModelFeatureFlags.DOC_LINK, Toast.LENGTH_LONG).show()); logDebugInfoForActivitySecurity("Clear Top", mStartActivity, targetTask, targetTaskTop, getDebugInfoForActivitySecurity("Clear Top", mStartActivity, targetTask, targetTaskTop, shouldBlockActivityStart, /* taskToFront */ true); } } Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +3 −1 Original line number Diff line number Diff line Loading @@ -1752,7 +1752,9 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { /* multi_window */ false, /* bal_code */ -1 -1, /* task_stack */ null ); boolean restrictActivitySwitch = ActivitySecurityModelFeatureFlags Loading