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

Commit feba2cde authored by Vinit Nayak's avatar Vinit Nayak Committed by Android (Google) Code Review
Browse files

Merge "Remove onStageHasChildrenChanged() from StageCoordinator" into main

parents 7bb836bd 7e1354f3
Loading
Loading
Loading
Loading
+0 −54
Original line number Original line Diff line number Diff line
@@ -1908,60 +1908,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        }
        }
    }
    }


    /** Callback when split roots have child or haven't under it.
     * NOTICE: This only be called on legacy transition. */
    @Override
    public void onStageHasChildrenChanged(StageTaskListener stageListener) {
        ProtoLog.d(WM_SHELL_SPLIT_SCREEN, "onStageHasChildrenChanged: isMainStage=%b",
                stageListener == mMainStage);
        final boolean hasChildren = stageListener.mHasChildren;
        final boolean isSideStage = stageListener == mSideStage;
        if (!hasChildren && !mIsExiting && isSplitActive()) {
            if (isSideStage && mMainStage.mVisible) {
                // Exit to main stage if side stage no longer has children.
                mSplitLayout.flingDividerToDismiss(
                        mSideStagePosition == SPLIT_POSITION_BOTTOM_OR_RIGHT,
                        EXIT_REASON_APP_FINISHED);
            } else if (!isSideStage && mSideStage.mVisible) {
                // Exit to side stage if main stage no longer has children.
                mSplitLayout.flingDividerToDismiss(
                        mSideStagePosition != SPLIT_POSITION_BOTTOM_OR_RIGHT,
                        EXIT_REASON_APP_FINISHED);
            } else if (!isSplitScreenVisible() && mSplitRequest == null) {
                // Dismiss split screen in the background once any sides of the split become empty.
                exitSplitScreen(null /* childrenToTop */, EXIT_REASON_APP_FINISHED);
            }
        } else if (isSideStage && hasChildren && !isSplitActive()) {
            final WindowContainerTransaction wct = new WindowContainerTransaction();
            prepareEnterSplitScreen(wct);

            mSyncQueue.queue(wct);
            mSyncQueue.runInSync(t -> {
                if (mIsDropEntering) {
                    updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */);
                    mIsDropEntering = false;
                    mSkipEvictingMainStageChildren = false;
                } else {
                    mShowDecorImmediately = true;
                    mSplitLayout.flingDividerToCenter(/*finishCallback*/ null);
                }
            });
        }
        if (mMainStage.mHasChildren && mSideStage.mHasChildren) {
            mShouldUpdateRecents = true;
            clearRequestIfPresented();
            updateRecentTasksSplitPair();

            if (!mLogger.hasStartedSession() && !mLogger.hasValidEnterSessionId()) {
                mLogger.enterRequested(null /*enterSessionId*/, ENTER_REASON_MULTI_INSTANCE);
            }
            mLogger.logEnter(mSplitLayout.getDividerPositionAsFraction(),
                    getMainStagePosition(), mMainStage.getTopChildTaskUid(),
                    getSideStagePosition(), mSideStage.getTopChildTaskUid(),
                    mSplitLayout.isLeftRightSplit());
        }
    }

    @Override
    @Override
    public void onNoLongerSupportMultiWindow(StageTaskListener stageTaskListener,
    public void onNoLongerSupportMultiWindow(StageTaskListener stageTaskListener,
            ActivityManager.RunningTaskInfo taskInfo) {
            ActivityManager.RunningTaskInfo taskInfo) {
+4 −19
Original line number Original line Diff line number Diff line
@@ -75,8 +75,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener {
    public interface StageListenerCallbacks {
    public interface StageListenerCallbacks {
        void onRootTaskAppeared();
        void onRootTaskAppeared();


        void onStageHasChildrenChanged(StageTaskListener stageTaskListener);

        void onStageVisibilityChanged(StageTaskListener stageTaskListener);
        void onStageVisibilityChanged(StageTaskListener stageTaskListener);


        void onChildTaskStatusChanged(StageTaskListener stage, int taskId, boolean present,
        void onChildTaskStatusChanged(StageTaskListener stage, int taskId, boolean present,
@@ -207,7 +205,10 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener {
                    mIconProvider);
                    mIconProvider);
            mHasRootTask = true;
            mHasRootTask = true;
            mCallbacks.onRootTaskAppeared();
            mCallbacks.onRootTaskAppeared();
            sendStatusChanged();
            if (mVisible != mRootTaskInfo.isVisible) {
                mVisible = mRootTaskInfo.isVisible;
                mCallbacks.onStageVisibilityChanged(this);
            }
            mSyncQueue.runInSync(t -> mDimLayer =
            mSyncQueue.runInSync(t -> mDimLayer =
                    SurfaceUtils.makeDimLayer(t, mRootLeash, "Dim layer"));
                    SurfaceUtils.makeDimLayer(t, mRootLeash, "Dim layer"));
        } else if (taskInfo.parentTaskId == mRootTaskInfo.taskId) {
        } else if (taskInfo.parentTaskId == mRootTaskInfo.taskId) {
@@ -498,22 +499,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener {
        return true;
        return true;
    }
    }


    private void sendStatusChanged() {
        boolean hasChildren = mChildrenTaskInfo.size() > 0;
        boolean visible = mRootTaskInfo.isVisible;
        if (!mHasRootTask) return;

        if (mHasChildren != hasChildren) {
            mHasChildren = hasChildren;
            mCallbacks.onStageHasChildrenChanged(this);
        }

        if (mVisible != visible) {
            mVisible = visible;
            mCallbacks.onStageVisibilityChanged(this);
        }
    }

    @Override
    @Override
    @CallSuper
    @CallSuper
    public void dump(@NonNull PrintWriter pw, String prefix) {
    public void dump(@NonNull PrintWriter pw, String prefix) {
+0 −1
Original line number Original line Diff line number Diff line
@@ -114,7 +114,6 @@ public final class StageTaskListenerTests extends ShellTestCase {
    public void testRootTaskAppeared() {
    public void testRootTaskAppeared() {
        assertThat(mStageTaskListener.mRootTaskInfo.taskId).isEqualTo(mRootTask.taskId);
        assertThat(mStageTaskListener.mRootTaskInfo.taskId).isEqualTo(mRootTask.taskId);
        verify(mCallbacks).onRootTaskAppeared();
        verify(mCallbacks).onRootTaskAppeared();
        verify(mCallbacks, never()).onStageHasChildrenChanged(mStageTaskListener);
        verify(mCallbacks, never()).onStageVisibilityChanged(mStageTaskListener);
        verify(mCallbacks, never()).onStageVisibilityChanged(mStageTaskListener);
    }
    }