diff options
16 files changed, 56 insertions, 173 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java index 9fb36b36ff29..d20ad5d1b908 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java @@ -33,14 +33,12 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.content.Context; -import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Color; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Binder; -import android.os.Trace; import android.view.IWindow; import android.view.LayoutInflater; import android.view.SurfaceControl; @@ -52,12 +50,10 @@ import android.widget.FrameLayout; import android.widget.ImageView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import com.android.launcher3.icons.IconProvider; import com.android.wm.shell.R; import com.android.wm.shell.common.ScreenshotUtils; -import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SurfaceUtils; import java.util.function.Consumer; @@ -83,19 +79,9 @@ public class SplitDecorManager extends WindowlessWindowManager { private static final String RESIZING_BACKGROUND_SURFACE_NAME = "ResizingBackground"; private static final String GAP_BACKGROUND_SURFACE_NAME = "GapBackground"; - // Indicates the loading state of mIcon - enum IconLoadState { - NOT_LOADED, - LOADING, - LOADED - } - private final IconProvider mIconProvider; - private final ShellExecutor mMainExecutor; - private final ShellExecutor mBgExecutor; private Drawable mIcon; - private IconLoadState mIconLoadState = IconLoadState.NOT_LOADED; private ImageView mVeilIconView; private SurfaceControlViewHost mViewHost; /** The parent surface that this is attached to. Should be the stage root. */ @@ -123,14 +109,9 @@ public class SplitDecorManager extends WindowlessWindowManager { private int mOffsetY; private int mRunningAnimationCount = 0; - public SplitDecorManager(Configuration configuration, - IconProvider iconProvider, - ShellExecutor mainExecutor, - ShellExecutor bgExecutor) { + public SplitDecorManager(Configuration configuration, IconProvider iconProvider) { super(configuration, null /* rootSurface */, null /* hostInputToken */); mIconProvider = iconProvider; - mMainExecutor = mainExecutor; - mBgExecutor = bgExecutor; } @Override @@ -218,7 +199,6 @@ public class SplitDecorManager extends WindowlessWindowManager { } mHostLeash = null; mIcon = null; - mIconLoadState = IconLoadState.NOT_LOADED; mVeilIconView = null; mIsCurrentlyChanging = false; mShown = false; @@ -280,11 +260,10 @@ public class SplitDecorManager extends WindowlessWindowManager { .setWindowCrop(mGapBackgroundLeash, sideBounds.width(), sideBounds.height()); } - if (mIconLoadState == IconLoadState.NOT_LOADED && resizingTask.topActivityInfo != null) { - loadIconInBackground(resizingTask.topActivityInfo, () -> { - mVeilIconView.setImageDrawable(mIcon); - mVeilIconView.setVisibility(View.VISIBLE); - }); + if (mIcon == null && resizingTask.topActivityInfo != null) { + mIcon = mIconProvider.getIcon(resizingTask.topActivityInfo); + mVeilIconView.setImageDrawable(mIcon); + mVeilIconView.setVisibility(View.VISIBLE); WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mViewHost.getView().getLayoutParams(); @@ -438,10 +417,10 @@ public class SplitDecorManager extends WindowlessWindowManager { } if (mIcon == null && resizingTask.topActivityInfo != null) { - loadIconInBackground(resizingTask.topActivityInfo, () -> { - mVeilIconView.setImageDrawable(mIcon); - mVeilIconView.setVisibility(View.VISIBLE); - }); + // Initialize icon + mIcon = mIconProvider.getIcon(resizingTask.topActivityInfo); + mVeilIconView.setImageDrawable(mIcon); + mVeilIconView.setVisibility(View.VISIBLE); WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mViewHost.getView().getLayoutParams(); @@ -474,7 +453,7 @@ public class SplitDecorManager extends WindowlessWindowManager { return; } - // Re-center icon + // Recenter icon t.setPosition(mIconLeash, mInstantaneousBounds.width() / 2f - mIconSize / 2f, mInstantaneousBounds.height() / 2f - mIconSize / 2f); @@ -617,38 +596,9 @@ public class SplitDecorManager extends WindowlessWindowManager { mVeilIconView.setImageDrawable(null); t.hide(mIconLeash); mIcon = null; - mIconLoadState = IconLoadState.NOT_LOADED; } } - /** - * Loads the icon for the given {@param info}, calling {@param postLoadCb} on the main thread - * if provided. - */ - private void loadIconInBackground(@NonNull ActivityInfo info, @Nullable Runnable postLoadCb) { - mIconLoadState = IconLoadState.LOADING; - mBgExecutor.setBoost(); - mBgExecutor.execute(() -> { - Trace.beginSection("SplitDecorManager.loadIconInBackground(" - + info.applicationInfo.packageName + ")"); - final Drawable icon = mIconProvider.getIcon(info); - Trace.endSection(); - mMainExecutor.execute(() -> { - if (mIconLoadState != IconLoadState.LOADING) { - // The request was canceled while loading in the background, just drop the - // result - return; - } - mIcon = icon; - mIconLoadState = IconLoadState.LOADED; - if (postLoadCb != null) { - postLoadCb.run(); - } - }); - mBgExecutor.resetBoost(); - }); - } - private static float[] getResizingBackgroundColor(ActivityManager.RunningTaskInfo taskInfo) { final int taskBgColor = taskInfo.taskDescription.getBackgroundColor(); return Color.valueOf(taskBgColor == -1 ? Color.WHITE : taskBgColor).getComponents(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java index 4bcec702281d..bcc34b1d2085 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java @@ -794,10 +794,6 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange } void onStartDragging() { - // This triggers initialization of things like the resize veil in preparation for - // showing it when the user moves the divider past the slop - updateDividerBounds(getDividerPosition(), false /* shouldUseParallaxEffect */); - mInteractionJankMonitor.begin(getDividerLeash(), mContext, mHandler, CUJ_SPLIT_SCREEN_RESIZE); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java index 5b6b897e55d9..aebd94fc173a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java @@ -34,7 +34,6 @@ import com.android.wm.shell.common.split.SplitState; import com.android.wm.shell.dagger.pip.TvPipModule; import com.android.wm.shell.recents.RecentTasksController; import com.android.wm.shell.shared.TransactionPool; -import com.android.wm.shell.shared.annotations.ShellBackgroundThread; import com.android.wm.shell.shared.annotations.ShellMainThread; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.splitscreen.tv.TvSplitScreenController; @@ -94,12 +93,11 @@ public class TvWMShellModule { SplitState splitState, @ShellMainThread ShellExecutor mainExecutor, Handler mainHandler, - @ShellBackgroundThread ShellExecutor bgExecutor, SystemWindows systemWindows) { return new TvSplitScreenController(context, shellInit, shellCommandHandler, shellController, shellTaskOrganizer, syncQueue, rootTDAOrganizer, displayController, displayImeController, displayInsetsController, transitions, transactionPool, iconProvider, recentTasks, launchAdjacentController, multiInstanceHelper, - splitState, mainExecutor, mainHandler, bgExecutor, systemWindows); + splitState, mainExecutor, mainHandler, systemWindows); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index 48b0a6cb364b..1916215dea74 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -520,8 +520,7 @@ public abstract class WMShellModule { MultiInstanceHelper multiInstanceHelper, SplitState splitState, @ShellMainThread ShellExecutor mainExecutor, - @ShellMainThread Handler mainHandler, - @ShellBackgroundThread ShellExecutor bgExecutor) { + @ShellMainThread Handler mainHandler) { return new SplitScreenController( context, shellInit, @@ -545,8 +544,7 @@ public abstract class WMShellModule { multiInstanceHelper, splitState, mainExecutor, - mainHandler, - bgExecutor); + mainHandler); } // diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java index 39ed2061c675..c724135aeced 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java @@ -185,7 +185,6 @@ public class SplitScreenController implements SplitDragPolicy.Starter, private final LauncherApps mLauncherApps; private final RootTaskDisplayAreaOrganizer mRootTDAOrganizer; private final ShellExecutor mMainExecutor; - private final ShellExecutor mBgExecutor; private final Handler mMainHandler; private final SplitScreenImpl mImpl = new SplitScreenImpl(); private final DisplayController mDisplayController; @@ -232,8 +231,7 @@ public class SplitScreenController implements SplitDragPolicy.Starter, MultiInstanceHelper multiInstanceHelper, SplitState splitState, ShellExecutor mainExecutor, - Handler mainHandler, - ShellExecutor bgExecutor) { + Handler mainHandler) { mShellCommandHandler = shellCommandHandler; mShellController = shellController; mTaskOrganizer = shellTaskOrganizer; @@ -243,7 +241,6 @@ public class SplitScreenController implements SplitDragPolicy.Starter, mRootTDAOrganizer = rootTDAOrganizer; mMainExecutor = mainExecutor; mMainHandler = mainHandler; - mBgExecutor = bgExecutor; mDisplayController = displayController; mDisplayImeController = displayImeController; mDisplayInsetsController = displayInsetsController; @@ -301,9 +298,8 @@ public class SplitScreenController implements SplitDragPolicy.Starter, return new StageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue, mTaskOrganizer, mDisplayController, mDisplayImeController, mDisplayInsetsController, mTransitions, mTransactionPool, mIconProvider, - mMainExecutor, mMainHandler, mBgExecutor, mRecentTasksOptional, - mLaunchAdjacentController, mWindowDecorViewModel, mSplitState, - mDesktopTasksController); + mMainExecutor, mMainHandler, mRecentTasksOptional, mLaunchAdjacentController, + mWindowDecorViewModel, mSplitState, mDesktopTasksController); } @Override diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 535112f5124a..5696074043a2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -216,7 +216,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, private final SplitscreenEventLogger mLogger; private final ShellExecutor mMainExecutor; private final Handler mMainHandler; - private final ShellExecutor mBgExecutor; // Cache live tile tasks while entering recents, evict them from stages in finish transaction // if user is opening another task(s). private final ArrayList<Integer> mPausingTasks = new ArrayList<>(); @@ -345,20 +344,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } }; - protected StageCoordinator(Context context, - int displayId, - SyncTransactionQueue syncQueue, - ShellTaskOrganizer taskOrganizer, - DisplayController displayController, + protected StageCoordinator(Context context, int displayId, SyncTransactionQueue syncQueue, + ShellTaskOrganizer taskOrganizer, DisplayController displayController, DisplayImeController displayImeController, - DisplayInsetsController displayInsetsController, - Transitions transitions, - TransactionPool transactionPool, - IconProvider iconProvider, - ShellExecutor mainExecutor, - Handler mainHandler, - ShellExecutor bgExecutor, - Optional<RecentTasksController> recentTasks, + DisplayInsetsController displayInsetsController, Transitions transitions, + TransactionPool transactionPool, IconProvider iconProvider, ShellExecutor mainExecutor, + Handler mainHandler, Optional<RecentTasksController> recentTasks, LaunchAdjacentController launchAdjacentController, Optional<WindowDecorViewModel> windowDecorViewModel, SplitState splitState, Optional<DesktopTasksController> desktopTasksController) { @@ -369,7 +360,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mLogger = new SplitscreenEventLogger(); mMainExecutor = mainExecutor; mMainHandler = mainHandler; - mBgExecutor = bgExecutor; mRecentTasks = recentTasks; mLaunchAdjacentController = launchAdjacentController; mWindowDecorViewModel = windowDecorViewModel; @@ -386,8 +376,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, this /*stageListenerCallbacks*/, mSyncQueue, iconProvider, - mMainExecutor, - mBgExecutor, mWindowDecorViewModel); } else { mMainStage = new StageTaskListener( @@ -397,8 +385,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, this /*stageListenerCallbacks*/, mSyncQueue, iconProvider, - mMainExecutor, - mBgExecutor, mWindowDecorViewModel, STAGE_TYPE_MAIN); mSideStage = new StageTaskListener( mContext, @@ -407,8 +393,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, this /*stageListenerCallbacks*/, mSyncQueue, iconProvider, - mMainExecutor, - mBgExecutor, mWindowDecorViewModel, STAGE_TYPE_SIDE); } mDisplayController = displayController; @@ -430,22 +414,13 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } @VisibleForTesting - StageCoordinator(Context context, - int displayId, - SyncTransactionQueue syncQueue, - ShellTaskOrganizer taskOrganizer, - StageTaskListener mainStage, - StageTaskListener sideStage, - DisplayController displayController, + StageCoordinator(Context context, int displayId, SyncTransactionQueue syncQueue, + ShellTaskOrganizer taskOrganizer, StageTaskListener mainStage, + StageTaskListener sideStage, DisplayController displayController, DisplayImeController displayImeController, - DisplayInsetsController displayInsetsController, - SplitLayout splitLayout, - Transitions transitions, - TransactionPool transactionPool, - ShellExecutor mainExecutor, - Handler mainHandler, - ShellExecutor bgExecutor, - Optional<RecentTasksController> recentTasks, + DisplayInsetsController displayInsetsController, SplitLayout splitLayout, + Transitions transitions, TransactionPool transactionPool, ShellExecutor mainExecutor, + Handler mainHandler, Optional<RecentTasksController> recentTasks, LaunchAdjacentController launchAdjacentController, Optional<WindowDecorViewModel> windowDecorViewModel, SplitState splitState, Optional<DesktopTasksController> desktopTasksController) { @@ -465,7 +440,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mLogger = new SplitscreenEventLogger(); mMainExecutor = mainExecutor; mMainHandler = mainHandler; - mBgExecutor = bgExecutor; mRecentTasks = recentTasks; mLaunchAdjacentController = launchAdjacentController; mWindowDecorViewModel = windowDecorViewModel; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageOrderOperator.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageOrderOperator.kt index 5256e7867499..a92100410d3d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageOrderOperator.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageOrderOperator.kt @@ -20,7 +20,6 @@ import android.content.Context import com.android.internal.protolog.ProtoLog import com.android.launcher3.icons.IconProvider import com.android.wm.shell.ShellTaskOrganizer -import com.android.wm.shell.common.ShellExecutor import com.android.wm.shell.common.SyncTransactionQueue import com.android.wm.shell.protolog.ShellProtoLogGroup import com.android.wm.shell.shared.split.SplitScreenConstants @@ -53,8 +52,6 @@ class StageOrderOperator ( stageCallbacks: StageTaskListener.StageListenerCallbacks, syncQueue: SyncTransactionQueue, iconProvider: IconProvider, - mainExecutor: ShellExecutor, - bgExecutor: ShellExecutor, windowDecorViewModel: Optional<WindowDecorViewModel> ) { @@ -86,8 +83,6 @@ class StageOrderOperator ( stageCallbacks, syncQueue, iconProvider, - mainExecutor, - bgExecutor, windowDecorViewModel, stageIds[i]) ) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java index 816f51f997d5..f1245ba26cc2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java @@ -48,7 +48,6 @@ import com.android.internal.protolog.ProtoLog; import com.android.internal.util.ArrayUtils; import com.android.launcher3.icons.IconProvider; import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SurfaceUtils; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.split.SplitDecorManager; @@ -96,8 +95,6 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { private final StageListenerCallbacks mCallbacks; private final SyncTransactionQueue mSyncQueue; private final IconProvider mIconProvider; - private final ShellExecutor mMainExecutor; - private final ShellExecutor mBgExecutor; private final Optional<WindowDecorViewModel> mWindowDecorViewModel; /** Whether or not the root task has been created. */ @@ -114,21 +111,14 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { // TODO(b/204308910): Extracts SplitDecorManager related code to common package. private SplitDecorManager mSplitDecorManager; - StageTaskListener(Context context, - ShellTaskOrganizer taskOrganizer, - int displayId, - StageListenerCallbacks callbacks, - SyncTransactionQueue syncQueue, + StageTaskListener(Context context, ShellTaskOrganizer taskOrganizer, int displayId, + StageListenerCallbacks callbacks, SyncTransactionQueue syncQueue, IconProvider iconProvider, - ShellExecutor mainExecutor, - ShellExecutor bgExecutor, Optional<WindowDecorViewModel> windowDecorViewModel, int id) { mContext = context; mCallbacks = callbacks; mSyncQueue = syncQueue; mIconProvider = iconProvider; - mMainExecutor = mainExecutor; - mBgExecutor = bgExecutor; mWindowDecorViewModel = windowDecorViewModel; taskOrganizer.createRootTask(displayId, WINDOWING_MODE_MULTI_WINDOW, this); mId = id; @@ -224,8 +214,9 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { if (mRootTaskInfo == null) { mRootLeash = leash; mRootTaskInfo = taskInfo; - mSplitDecorManager = new SplitDecorManager(mRootTaskInfo.configuration, mIconProvider, - mMainExecutor, mBgExecutor); + mSplitDecorManager = new SplitDecorManager( + mRootTaskInfo.configuration, + mIconProvider); mHasRootTask = true; mCallbacks.onRootTaskAppeared(); if (mVisible != mRootTaskInfo.isVisible) { @@ -353,6 +344,12 @@ public class StageTaskListener implements ShellTaskOrganizer.TaskListener { } } + void screenshotIfNeeded(SurfaceControl.Transaction t) { + if (mSplitDecorManager != null) { + mSplitDecorManager.screenshotIfNeeded(t); + } + } + void fadeOutDecor(Runnable finishedCallback) { if (mSplitDecorManager != null) { mSplitDecorManager.fadeOutDecor(finishedCallback, false /* addDelay */); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java index ea7553061137..c5e158c6b452 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java @@ -53,7 +53,6 @@ public class TvSplitScreenController extends SplitScreenController { private final SyncTransactionQueue mSyncQueue; private final Context mContext; private final ShellExecutor mMainExecutor; - private final ShellExecutor mBgExecutor; private final DisplayController mDisplayController; private final DisplayImeController mDisplayImeController; private final DisplayInsetsController mDisplayInsetsController; @@ -86,20 +85,18 @@ public class TvSplitScreenController extends SplitScreenController { SplitState splitState, ShellExecutor mainExecutor, Handler mainHandler, - ShellExecutor bgExecutor, SystemWindows systemWindows) { super(context, shellInit, shellCommandHandler, shellController, shellTaskOrganizer, syncQueue, rootTDAOrganizer, displayController, displayImeController, displayInsetsController, null, transitions, transactionPool, iconProvider, recentTasks, launchAdjacentController, Optional.empty(), Optional.empty(), null /* stageCoordinator */, multiInstanceHelper, splitState, - mainExecutor, mainHandler, bgExecutor); + mainExecutor, mainHandler); + mTaskOrganizer = shellTaskOrganizer; mSyncQueue = syncQueue; mContext = context; mMainExecutor = mainExecutor; - mMainHandler = mainHandler; - mBgExecutor = bgExecutor; mDisplayController = displayController; mDisplayImeController = displayImeController; mDisplayInsetsController = displayInsetsController; @@ -109,6 +106,8 @@ public class TvSplitScreenController extends SplitScreenController { mRecentTasksOptional = recentTasks; mLaunchAdjacentController = launchAdjacentController; mSplitState = splitState; + + mMainHandler = mainHandler; mSystemWindows = systemWindows; } @@ -121,7 +120,7 @@ public class TvSplitScreenController extends SplitScreenController { return new TvStageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue, mTaskOrganizer, mDisplayController, mDisplayImeController, mDisplayInsetsController, mTransitions, mTransactionPool, - mIconProvider, mMainExecutor, mMainHandler, mBgExecutor, + mIconProvider, mMainExecutor, mMainHandler, mRecentTasksOptional, mLaunchAdjacentController, mSplitState, mSystemWindows); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvStageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvStageCoordinator.java index 9d85bea421ae..e1bf12fc6082 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvStageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvStageCoordinator.java @@ -51,14 +51,14 @@ public class TvStageCoordinator extends StageCoordinator DisplayInsetsController displayInsetsController, Transitions transitions, TransactionPool transactionPool, IconProvider iconProvider, ShellExecutor mainExecutor, - Handler mainHandler, ShellExecutor bgExecutor, + Handler mainHandler, Optional<RecentTasksController> recentTasks, LaunchAdjacentController launchAdjacentController, SplitState splitState, SystemWindows systemWindows) { super(context, displayId, syncQueue, taskOrganizer, displayController, displayImeController, displayInsetsController, transitions, transactionPool, iconProvider, - mainExecutor, mainHandler, bgExecutor, recentTasks, launchAdjacentController, + mainExecutor, mainHandler, recentTasks, launchAdjacentController, Optional.empty(), splitState, Optional.empty()); mTvSplitMenuController = new TvSplitMenuController(context, this, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java index bca9c3fdda39..bb9703fce2e3 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitScreenControllerTests.java @@ -106,7 +106,6 @@ public class SplitScreenControllerTests extends ShellTestCase { @Mock RootTaskDisplayAreaOrganizer mRootTDAOrganizer; @Mock ShellExecutor mMainExecutor; @Mock Handler mMainHandler; - @Mock ShellExecutor mBgExecutor; @Mock DisplayController mDisplayController; @Mock DisplayImeController mDisplayImeController; @Mock DisplayInsetsController mDisplayInsetsController; @@ -138,8 +137,7 @@ public class SplitScreenControllerTests extends ShellTestCase { mDisplayInsetsController, mDragAndDropController, mTransitions, mTransactionPool, mIconProvider, Optional.of(mRecentTasks), mLaunchAdjacentController, Optional.of(mWindowDecorViewModel), Optional.of(mDesktopTasksController), - mStageCoordinator, mMultiInstanceHelper, mSplitState, mMainExecutor, mMainHandler, - mBgExecutor)); + mStageCoordinator, mMultiInstanceHelper, mSplitState, mMainExecutor, mMainHandler)); } @Test diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java index ada7b4aff37d..ae0c9d6cbf7c 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTestUtils.java @@ -79,15 +79,15 @@ public class SplitTestUtils { StageTaskListener sideStage, DisplayController displayController, DisplayImeController imeController, DisplayInsetsController insetsController, SplitLayout splitLayout, Transitions transitions, TransactionPool transactionPool, - ShellExecutor mainExecutor, Handler mainHandler, ShellExecutor bgExecutor, + ShellExecutor mainExecutor, Handler mainHandler, Optional<RecentTasksController> recentTasks, LaunchAdjacentController launchAdjacentController, Optional<WindowDecorViewModel> windowDecorViewModel, SplitState splitState, Optional<DesktopTasksController> desktopTasksController) { super(context, displayId, syncQueue, taskOrganizer, mainStage, sideStage, displayController, imeController, insetsController, splitLayout, - transitions, transactionPool, mainExecutor, mainHandler, bgExecutor, - recentTasks, launchAdjacentController, windowDecorViewModel, splitState, + transitions, transactionPool, mainExecutor, mainHandler, recentTasks, + launchAdjacentController, windowDecorViewModel, splitState, desktopTasksController); // Prepare root task for testing. diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java index ffa8b6089660..b0fdfacd7d83 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/SplitTransitionTests.java @@ -111,7 +111,6 @@ public class SplitTransitionTests extends ShellTestCase { @Mock private WindowDecorViewModel mWindowDecorViewModel; @Mock private SplitState mSplitState; @Mock private ShellExecutor mMainExecutor; - @Mock private ShellExecutor mBgExecutor; @Mock private Handler mMainHandler; @Mock private LaunchAdjacentController mLaunchAdjacentController; @Mock private DefaultMixedHandler mMixedHandler; @@ -137,19 +136,18 @@ public class SplitTransitionTests extends ShellTestCase { mSplitLayout = SplitTestUtils.createMockSplitLayout(); mMainStage = spy(new StageTaskListener(mContext, mTaskOrganizer, DEFAULT_DISPLAY, mock( StageTaskListener.StageListenerCallbacks.class), mSyncQueue, - mIconProvider, mMainExecutor, mBgExecutor, Optional.of(mWindowDecorViewModel), - STAGE_TYPE_MAIN)); + mIconProvider, Optional.of(mWindowDecorViewModel), STAGE_TYPE_MAIN)); mMainStage.onTaskAppeared(new TestRunningTaskInfoBuilder().build(), createMockSurface()); mSideStage = spy(new StageTaskListener(mContext, mTaskOrganizer, DEFAULT_DISPLAY, mock( StageTaskListener.StageListenerCallbacks.class), mSyncQueue, - mIconProvider, mMainExecutor, mBgExecutor, Optional.of(mWindowDecorViewModel), - STAGE_TYPE_SIDE)); + mIconProvider, Optional.of(mWindowDecorViewModel), STAGE_TYPE_SIDE)); mSideStage.onTaskAppeared(new TestRunningTaskInfoBuilder().build(), createMockSurface()); mStageCoordinator = new SplitTestUtils.TestStageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue, mTaskOrganizer, mMainStage, mSideStage, mDisplayController, mDisplayImeController, mDisplayInsetsController, mSplitLayout, mTransitions, - mTransactionPool, mMainExecutor, mMainHandler, mBgExecutor, Optional.empty(), + mTransactionPool, mMainExecutor, mMainHandler, Optional.empty(), mLaunchAdjacentController, Optional.empty(), mSplitState, Optional.empty()); + mStageCoordinator.setMixedHandler(mMixedHandler); mSplitScreenTransitions = mStageCoordinator.getSplitTransitions(); doAnswer((Answer<IBinder>) invocation -> mock(IBinder.class)) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java index 9d1df864764f..2d0ea5fdc884 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageCoordinatorTests.java @@ -119,8 +119,6 @@ public class StageCoordinatorTests extends ShellTestCase { private DefaultMixedHandler mDefaultMixedHandler; @Mock private SplitState mSplitState; - @Mock - private ShellExecutor mBgExecutor; private final Rect mBounds1 = new Rect(10, 20, 30, 40); private final Rect mBounds2 = new Rect(5, 10, 15, 20); @@ -143,9 +141,9 @@ public class StageCoordinatorTests extends ShellTestCase { mStageCoordinator = spy(new StageCoordinator(mContext, DEFAULT_DISPLAY, mSyncQueue, mTaskOrganizer, mMainStage, mSideStage, mDisplayController, mDisplayImeController, mDisplayInsetsController, mSplitLayout, mTransitions, mTransactionPool, - mMainExecutor, mMainHandler, mBgExecutor, Optional.empty(), - mLaunchAdjacentController, Optional.empty(), mSplitState, - Optional.empty())); + mMainExecutor, mMainHandler, Optional.empty(), mLaunchAdjacentController, + Optional.empty(), mSplitState, Optional.empty())); + mDividerLeash = new SurfaceControl.Builder().setName("fakeDivider").build(); when(mSplitLayout.getTopLeftBounds()).thenReturn(mBounds1); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageOrderOperatorTests.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageOrderOperatorTests.kt index 62b830dfd691..3b4a86a71d90 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageOrderOperatorTests.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageOrderOperatorTests.kt @@ -23,7 +23,6 @@ import com.android.launcher3.icons.IconProvider import com.android.wm.shell.Flags.enableFlexibleSplit import com.android.wm.shell.ShellTaskOrganizer import com.android.wm.shell.ShellTestCase -import com.android.wm.shell.common.ShellExecutor import com.android.wm.shell.common.SyncTransactionQueue import com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_33_66 import com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_50_50 @@ -42,10 +41,6 @@ import java.util.Optional class StageOrderOperatorTests : ShellTestCase() { @Mock - lateinit var mMainExecutor: ShellExecutor - @Mock - lateinit var mBgExecutor: ShellExecutor - @Mock lateinit var mTaskOrganizer: ShellTaskOrganizer @Mock lateinit var mSyncQueue: SyncTransactionQueue @@ -67,8 +62,6 @@ class StageOrderOperatorTests : ShellTestCase() { stageListenerCallbacks, mSyncQueue, iconProvider, - mMainExecutor, - mBgExecutor, windowDecorViewModel, ) assert(stageOrderOperator.activeStages.size == 0) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageTaskListenerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageTaskListenerTests.java index effc6a7daf62..fe91440b106f 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageTaskListenerTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/splitscreen/StageTaskListenerTests.java @@ -43,7 +43,6 @@ import com.android.launcher3.icons.IconProvider; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.ShellTestCase; import com.android.wm.shell.TestRunningTaskInfoBuilder; -import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.windowdecor.WindowDecorViewModel; @@ -74,10 +73,6 @@ public final class StageTaskListenerTests extends ShellTestCase { @Mock private SyncTransactionQueue mSyncQueue; @Mock - private ShellExecutor mMainExecutor; - @Mock - private ShellExecutor mBgExecutor; - @Mock private IconProvider mIconProvider; @Mock private WindowDecorViewModel mWindowDecorViewModel; @@ -100,8 +95,6 @@ public final class StageTaskListenerTests extends ShellTestCase { mCallbacks, mSyncQueue, mIconProvider, - mMainExecutor, - mBgExecutor, Optional.of(mWindowDecorViewModel), STAGE_TYPE_UNDEFINED); mRootTask = new TestRunningTaskInfoBuilder().build(); |