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

Commit dd54fbf9 authored by Louis Chang's avatar Louis Chang Committed by Android (Google) Code Review
Browse files

Merge "Update visibility when visible activity crashed" into main

parents f4032b0f a5fce63f
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -7175,7 +7175,23 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        @Override
        public void onHandleAppCrash(@NonNull WindowProcessController wpc) {
            synchronized (mGlobalLock) {
                wpc.handleAppCrash();
                final boolean hasVisibleActivity;
                mTaskSupervisor.beginDeferResume();
                try {
                    hasVisibleActivity = wpc.handleAppCrash();
                } finally {
                    mTaskSupervisor.endDeferResume();
                }

                if (hasVisibleActivity) {
                    deferWindowLayout();
                    try {
                        mRootWindowContainer.ensureVisibilityOnVisibleActivityDiedOrCrashed(
                                "onHandleAppCrash");
                    } finally {
                        continueWindowLayout();
                    }
                }
            }
        }

+8 −3
Original line number Diff line number Diff line
@@ -465,17 +465,22 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio
        mCrashing = crashing;
    }

    void handleAppCrash() {
    boolean handleAppCrash() {
        boolean hasVisibleActivity = false;
        ArrayList<ActivityRecord> activities = new ArrayList<>(mActivities);
        for (int i = activities.size() - 1; i >= 0; --i) {
            final ActivityRecord r = activities.get(i);
            Slog.w(TAG, "  Force finishing activity "
                    + r.mActivityComponent.flattenToShortString());
            r.detachFromProcess();
            if (r.isVisibleRequested()) {
                hasVisibleActivity = true;
                r.mDisplayContent.requestTransitionAndLegacyPrepare(TRANSIT_CLOSE,
                        TRANSIT_FLAG_APP_CRASHED);
            }
            r.destroyIfPossible("handleAppCrashed");
        }
        return hasVisibleActivity;
    }

    boolean isCrashing() {