Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/MainStage.java +1 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */); Loading @@ -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, Loading @@ -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); } } libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SideStage.java +2 −8 Original line number Diff line number Diff line Loading @@ -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) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +9 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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) { Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SideStageTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -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)); } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java +1 −4 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/MainStage.java +1 −13 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */); Loading @@ -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, Loading @@ -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); } }
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SideStage.java +2 −8 Original line number Diff line number Diff line Loading @@ -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) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +9 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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) { Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SideStageTests.java +1 −1 Original line number Diff line number Diff line Loading @@ -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)); } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java +1 −4 Original line number Diff line number Diff line Loading @@ -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 Loading