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

Commit 33c3fc34 authored by Jerry Chang's avatar Jerry Chang Committed by Android (Google) Code Review
Browse files

Merge "Remove redundant operations of split screen" into sc-v2-dev

parents 1aef5f62 7b04c3ba
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package com.android.wm.shell.splitscreen;

import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;

import android.annotation.Nullable;
import android.content.Context;
import android.graphics.Rect;
@@ -56,7 +54,6 @@ class MainStage extends StageTaskListener {

        final WindowContainerToken rootToken = mRootTaskInfo.token;
        wct.setBounds(rootToken, rootBounds)
                .setWindowingMode(rootToken, WINDOWING_MODE_MULTI_WINDOW)
                // Moving the root task to top after the child tasks were re-parented , or the root
                // task cannot be visible and focused.
                .reorder(rootToken, true /* onTop */);
@@ -83,11 +80,7 @@ class MainStage extends StageTaskListener {

        if (mRootTaskInfo == null) return;
        final WindowContainerToken rootToken = mRootTaskInfo.token;
        wct.setLaunchRoot(
                        rootToken,
                        null,
                        null)
                .reparentTasks(
        wct.reparentTasks(
                        rootToken,
                        null /* newParent */,
                        CONTROLLED_WINDOWING_MODES_WHEN_ACTIVE,
@@ -97,9 +90,4 @@ class MainStage extends StageTaskListener {
                // all its tasks.
                .reorder(rootToken, false /* onTop */);
    }

    void updateConfiguration(int windowingMode, Rect bounds, WindowContainerTransaction wct) {
        wct.setBounds(mRootTaskInfo.token, bounds)
                .setWindowingMode(mRootTaskInfo.token, windowingMode);
    }
}
+2 −8
Original line number Diff line number Diff line
@@ -50,14 +50,8 @@ class SideStage extends StageTaskListener {
        wct.setBounds(rootToken, rootBounds).reorder(rootToken, true /* onTop */);
    }

    void addTask(ActivityManager.RunningTaskInfo task, Rect rootBounds,
            WindowContainerTransaction wct) {
        final WindowContainerToken rootToken = mRootTaskInfo.token;
        wct.setBounds(rootToken, rootBounds)
                .reparent(task.token, rootToken, true /* onTop*/)
                // Moving the root task to top after the child tasks were reparented , or the root
                // task cannot be visible and focused.
                .reorder(rootToken, true /* onTop */);
    void addTask(ActivityManager.RunningTaskInfo task, WindowContainerTransaction wct) {
        wct.reparent(task.token, mRootTaskInfo.token, true /* onTop*/);
    }

    boolean removeAllTasks(WindowContainerTransaction wct, boolean toTop) {
+9 −5
Original line number Diff line number Diff line
@@ -268,11 +268,14 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
    boolean moveToSideStage(ActivityManager.RunningTaskInfo task,
            @SplitPosition int sideStagePosition) {
        final WindowContainerTransaction wct = new WindowContainerTransaction();
        final WindowContainerTransaction evictWct = new WindowContainerTransaction();
        setSideStagePosition(sideStagePosition, wct);
        mMainStage.activate(getMainStageBounds(), wct, true /* reparent */);
        mSideStage.addTask(task, getSideStageBounds(), wct);
        mSyncQueue.queue(wct);
        mSyncQueue.runInSync(t -> updateSurfaceBounds(null /* layout */, t));
        mSideStage.evictAllChildren(evictWct);
        mSideStage.addTask(task, wct);
        if (!evictWct.isEmpty()) {
            wct.merge(evictWct, true /* transfer */);
        }
        mTaskOrganizer.applyTransaction(wct);
        return true;
    }

@@ -759,7 +762,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            // Make sure the main stage is active.
            mMainStage.activate(getMainStageBounds(), wct, true /* reparent */);
            mSideStage.moveToTop(getSideStageBounds(), wct);
            mTaskOrganizer.applyTransaction(wct);
            mSyncQueue.queue(wct);
            mSyncQueue.runInSync(t -> updateSurfaceBounds(mSplitLayout, t));
        }
        if (!mLogger.hasStartedSession() && mMainStageListener.mHasChildren
                && mSideStageListener.mHasChildren) {
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ public class SideStageTests extends ShellTestCase {
    public void testAddTask() {
        final ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder().build();

        mSideStage.addTask(task, mRootTask.configuration.windowConfiguration.getBounds(), mWct);
        mSideStage.addTask(task, mWct);

        verify(mWct).reparent(eq(task.token), eq(mRootTask.token), eq(true));
    }
+1 −4
Original line number Diff line number Diff line
@@ -113,10 +113,7 @@ public class StageCoordinatorTests extends ShellTestCase {

        mStageCoordinator.moveToSideStage(task, SPLIT_POSITION_BOTTOM_OR_RIGHT);

        verify(mMainStage).activate(any(Rect.class), any(WindowContainerTransaction.class),
                eq(true /* includingTopTask */));
        verify(mSideStage).addTask(eq(task), any(Rect.class),
                any(WindowContainerTransaction.class));
        verify(mSideStage).addTask(eq(task), any(WindowContainerTransaction.class));
    }

    @Test