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

Commit 53e91c63 authored by Hani Kazmi's avatar Hani Kazmi Committed by Android (Google) Code Review
Browse files

Merge "Update ASM logging for U release" into udc-qpr-dev

parents 5f4429ae c02dbc74
Loading
Loading
Loading
Loading
+22 −11
Original line number Diff line number Diff line
@@ -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());
@@ -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,
@@ -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
@@ -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) {
@@ -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] ";
@@ -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();
    }

    /**
@@ -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);
        }
    }
+3 −1
Original line number Diff line number Diff line
@@ -1752,7 +1752,9 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
                /* multi_window */
                false,
                /* bal_code */
                -1
                -1,
                /* task_stack */
                null
        );

        boolean restrictActivitySwitch = ActivitySecurityModelFeatureFlags