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

Commit be8ad352 authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge changes from topic "shell_command_handler" into tm-qpr-dev

* changes:
  5/ Fix inverted dependency for ShellCommandHandler
  4/ Separate construction and initializing in a few more controllers
parents a2c8daf7 38caa7a7
Loading
Loading
Loading
Loading
+12 −4
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.compatui.CompatUIController;
import com.android.wm.shell.compatui.CompatUIController;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.startingsurface.StartingWindowController;
import com.android.wm.shell.startingsurface.StartingWindowController;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.unfold.UnfoldAnimationController;
import com.android.wm.shell.unfold.UnfoldAnimationController;


@@ -72,6 +73,7 @@ import java.util.function.Consumer;
 */
 */
public class ShellTaskOrganizer extends TaskOrganizer implements
public class ShellTaskOrganizer extends TaskOrganizer implements
        CompatUIController.CompatUICallback {
        CompatUIController.CompatUICallback {
    private static final String TAG = "ShellTaskOrganizer";


    // Intentionally using negative numbers here so the positive numbers can be used
    // Intentionally using negative numbers here so the positive numbers can be used
    // for task id specific listeners that will be added later.
    // for task id specific listeners that will be added later.
@@ -90,8 +92,6 @@ public class ShellTaskOrganizer extends TaskOrganizer implements
    })
    })
    public @interface TaskListenerType {}
    public @interface TaskListenerType {}


    private static final String TAG = "ShellTaskOrganizer";

    /**
    /**
     * Callbacks for when the tasks change in the system.
     * Callbacks for when the tasks change in the system.
     */
     */
@@ -177,6 +177,9 @@ public class ShellTaskOrganizer extends TaskOrganizer implements
    @Nullable
    @Nullable
    private final CompatUIController mCompatUI;
    private final CompatUIController mCompatUI;


    @NonNull
    private final ShellCommandHandler mShellCommandHandler;

    @Nullable
    @Nullable
    private final Optional<RecentTasksController> mRecentTasks;
    private final Optional<RecentTasksController> mRecentTasks;


@@ -187,29 +190,33 @@ public class ShellTaskOrganizer extends TaskOrganizer implements
    private RunningTaskInfo mLastFocusedTaskInfo;
    private RunningTaskInfo mLastFocusedTaskInfo;


    public ShellTaskOrganizer(ShellExecutor mainExecutor) {
    public ShellTaskOrganizer(ShellExecutor mainExecutor) {
        this(null /* shellInit */, null /* taskOrganizerController */, null /* compatUI */,
        this(null /* shellInit */, null /* shellCommandHandler */,
                null /* taskOrganizerController */, null /* compatUI */,
                Optional.empty() /* unfoldAnimationController */,
                Optional.empty() /* unfoldAnimationController */,
                Optional.empty() /* recentTasksController */,
                Optional.empty() /* recentTasksController */,
                mainExecutor);
                mainExecutor);
    }
    }


    public ShellTaskOrganizer(ShellInit shellInit,
    public ShellTaskOrganizer(ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            @Nullable CompatUIController compatUI,
            @Nullable CompatUIController compatUI,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<RecentTasksController> recentTasks,
            Optional<RecentTasksController> recentTasks,
            ShellExecutor mainExecutor) {
            ShellExecutor mainExecutor) {
        this(shellInit, null /* taskOrganizerController */, compatUI,
        this(shellInit, shellCommandHandler, null /* taskOrganizerController */, compatUI,
                unfoldAnimationController, recentTasks, mainExecutor);
                unfoldAnimationController, recentTasks, mainExecutor);
    }
    }


    @VisibleForTesting
    @VisibleForTesting
    protected ShellTaskOrganizer(ShellInit shellInit,
    protected ShellTaskOrganizer(ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            ITaskOrganizerController taskOrganizerController,
            ITaskOrganizerController taskOrganizerController,
            @Nullable CompatUIController compatUI,
            @Nullable CompatUIController compatUI,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<RecentTasksController> recentTasks,
            Optional<RecentTasksController> recentTasks,
            ShellExecutor mainExecutor) {
            ShellExecutor mainExecutor) {
        super(taskOrganizerController, mainExecutor);
        super(taskOrganizerController, mainExecutor);
        mShellCommandHandler = shellCommandHandler;
        mCompatUI = compatUI;
        mCompatUI = compatUI;
        mRecentTasks = recentTasks;
        mRecentTasks = recentTasks;
        mUnfoldAnimationController = unfoldAnimationController.orElse(null);
        mUnfoldAnimationController = unfoldAnimationController.orElse(null);
@@ -219,6 +226,7 @@ public class ShellTaskOrganizer extends TaskOrganizer implements
    }
    }


    private void onInit() {
    private void onInit() {
        mShellCommandHandler.addDumpCallback(this::dump, this);
        if (mCompatUI != null) {
        if (mCompatUI != null) {
            mCompatUI.setCompatUICallback(this);
            mCompatUI.setCompatUICallback(this);
        }
        }
+17 −5
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@ import com.android.wm.shell.common.RemoteCallable;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.annotations.ShellBackgroundThread;
import com.android.wm.shell.common.annotations.ShellBackgroundThread;
import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.sysui.ShellInit;


import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicBoolean;


@@ -90,7 +91,6 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
     * Raw delta between {@link #mInitTouchLocation} and the last touch location.
     * Raw delta between {@link #mInitTouchLocation} and the last touch location.
     */
     */
    private final Point mTouchEventDelta = new Point();
    private final Point mTouchEventDelta = new Point();
    private final ShellExecutor mShellExecutor;


    /** True when a back gesture is ongoing */
    /** True when a back gesture is ongoing */
    private boolean mBackGestureStarted = false;
    private boolean mBackGestureStarted = false;
@@ -105,6 +105,9 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
    private final SurfaceControl.Transaction mTransaction;
    private final SurfaceControl.Transaction mTransaction;
    private final IActivityTaskManager mActivityTaskManager;
    private final IActivityTaskManager mActivityTaskManager;
    private final Context mContext;
    private final Context mContext;
    private final ContentResolver mContentResolver;
    private final ShellExecutor mShellExecutor;
    private final Handler mBgHandler;
    @Nullable
    @Nullable
    private IOnBackInvokedCallback mBackToLauncherCallback;
    private IOnBackInvokedCallback mBackToLauncherCallback;
    private float mTriggerThreshold;
    private float mTriggerThreshold;
@@ -133,16 +136,19 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
    };
    };


    public BackAnimationController(
    public BackAnimationController(
            @NonNull ShellInit shellInit,
            @NonNull @ShellMainThread ShellExecutor shellExecutor,
            @NonNull @ShellMainThread ShellExecutor shellExecutor,
            @NonNull @ShellBackgroundThread Handler backgroundHandler,
            @NonNull @ShellBackgroundThread Handler backgroundHandler,
            Context context) {
            Context context) {
        this(shellExecutor, backgroundHandler, new SurfaceControl.Transaction(),
        this(shellInit, shellExecutor, backgroundHandler, new SurfaceControl.Transaction(),
                ActivityTaskManager.getService(), context, context.getContentResolver());
                ActivityTaskManager.getService(), context, context.getContentResolver());
    }
    }


    @VisibleForTesting
    @VisibleForTesting
    BackAnimationController(@NonNull @ShellMainThread ShellExecutor shellExecutor,
    BackAnimationController(
            @NonNull @ShellBackgroundThread Handler handler,
            @NonNull ShellInit shellInit,
            @NonNull @ShellMainThread ShellExecutor shellExecutor,
            @NonNull @ShellBackgroundThread Handler bgHandler,
            @NonNull SurfaceControl.Transaction transaction,
            @NonNull SurfaceControl.Transaction transaction,
            @NonNull IActivityTaskManager activityTaskManager,
            @NonNull IActivityTaskManager activityTaskManager,
            Context context, ContentResolver contentResolver) {
            Context context, ContentResolver contentResolver) {
@@ -150,7 +156,13 @@ public class BackAnimationController implements RemoteCallable<BackAnimationCont
        mTransaction = transaction;
        mTransaction = transaction;
        mActivityTaskManager = activityTaskManager;
        mActivityTaskManager = activityTaskManager;
        mContext = context;
        mContext = context;
        setupAnimationDeveloperSettingsObserver(contentResolver, handler);
        mContentResolver = contentResolver;
        mBgHandler = bgHandler;
        shellInit.addInitCallback(this::onInit, this);
    }

    private void onInit() {
        setupAnimationDeveloperSettingsObserver(mContentResolver, mBgHandler);
    }
    }


    private void setupAnimationDeveloperSettingsObserver(
    private void setupAnimationDeveloperSettingsObserver(
+8 −2
Original line number Original line Diff line number Diff line
@@ -43,6 +43,7 @@ import com.android.wm.shell.compatui.CompatUIWindowManager.CompatUIHintsState;
import com.android.wm.shell.compatui.letterboxedu.LetterboxEduWindowManager;
import com.android.wm.shell.compatui.letterboxedu.LetterboxEduWindowManager;
import com.android.wm.shell.sysui.KeyguardChangeListener;
import com.android.wm.shell.sysui.KeyguardChangeListener;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;
import com.android.wm.shell.transition.Transitions;


import java.lang.ref.WeakReference;
import java.lang.ref.WeakReference;
@@ -119,6 +120,7 @@ public class CompatUIController implements OnDisplaysChangedListener,
    private boolean mKeyguardShowing;
    private boolean mKeyguardShowing;


    public CompatUIController(Context context,
    public CompatUIController(Context context,
            ShellInit shellInit,
            ShellController shellController,
            ShellController shellController,
            DisplayController displayController,
            DisplayController displayController,
            DisplayInsetsController displayInsetsController,
            DisplayInsetsController displayInsetsController,
@@ -134,10 +136,14 @@ public class CompatUIController implements OnDisplaysChangedListener,
        mSyncQueue = syncQueue;
        mSyncQueue = syncQueue;
        mMainExecutor = mainExecutor;
        mMainExecutor = mainExecutor;
        mTransitionsLazy = transitionsLazy;
        mTransitionsLazy = transitionsLazy;
        mCompatUIHintsState = new CompatUIHintsState();
        shellInit.addInitCallback(this::onInit, this);
    }

    private void onInit() {
        mShellController.addKeyguardChangeListener(this);
        mDisplayController.addDisplayWindowListener(this);
        mDisplayController.addDisplayWindowListener(this);
        mImeController.addPositionProcessor(this);
        mImeController.addPositionProcessor(this);
        mCompatUIHintsState = new CompatUIHintsState();
        shellController.addKeyguardChangeListener(this);
    }
    }


    /** Sets the callback for UI interactions. */
    /** Sets the callback for UI interactions. */
+28 −26
Original line number Original line Diff line number Diff line
@@ -174,13 +174,14 @@ public abstract class WMShellBaseModule {
    @Provides
    @Provides
    static ShellTaskOrganizer provideShellTaskOrganizer(
    static ShellTaskOrganizer provideShellTaskOrganizer(
            ShellInit shellInit,
            ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            CompatUIController compatUI,
            CompatUIController compatUI,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<RecentTasksController> recentTasksOptional,
            Optional<RecentTasksController> recentTasksOptional,
            @ShellMainThread ShellExecutor mainExecutor
            @ShellMainThread ShellExecutor mainExecutor
    ) {
    ) {
        return new ShellTaskOrganizer(shellInit, compatUI, unfoldAnimationController,
        return new ShellTaskOrganizer(shellInit, shellCommandHandler, compatUI,
                recentTasksOptional, mainExecutor);
                unfoldAnimationController, recentTasksOptional, mainExecutor);
    }
    }


    @WMSingleton
    @WMSingleton
@@ -188,6 +189,7 @@ public abstract class WMShellBaseModule {
    static KidsModeTaskOrganizer provideKidsModeTaskOrganizer(
    static KidsModeTaskOrganizer provideKidsModeTaskOrganizer(
            Context context,
            Context context,
            ShellInit shellInit,
            ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            SyncTransactionQueue syncTransactionQueue,
            SyncTransactionQueue syncTransactionQueue,
            DisplayController displayController,
            DisplayController displayController,
            DisplayInsetsController displayInsetsController,
            DisplayInsetsController displayInsetsController,
@@ -196,19 +198,20 @@ public abstract class WMShellBaseModule {
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler
            @ShellMainThread Handler mainHandler
    ) {
    ) {
        return new KidsModeTaskOrganizer(context, shellInit, syncTransactionQueue,
        return new KidsModeTaskOrganizer(context, shellInit, shellCommandHandler,
                displayController, displayInsetsController, unfoldAnimationController,
                syncTransactionQueue, displayController, displayInsetsController,
                recentTasksOptional, mainExecutor, mainHandler);
                unfoldAnimationController, recentTasksOptional, mainExecutor, mainHandler);
    }
    }


    @WMSingleton
    @WMSingleton
    @Provides
    @Provides
    static CompatUIController provideCompatUIController(Context context,
    static CompatUIController provideCompatUIController(Context context,
            ShellInit shellInit,
            ShellController shellController,
            ShellController shellController,
            DisplayController displayController, DisplayInsetsController displayInsetsController,
            DisplayController displayController, DisplayInsetsController displayInsetsController,
            DisplayImeController imeController, SyncTransactionQueue syncQueue,
            DisplayImeController imeController, SyncTransactionQueue syncQueue,
            @ShellMainThread ShellExecutor mainExecutor, Lazy<Transitions> transitionsLazy) {
            @ShellMainThread ShellExecutor mainExecutor, Lazy<Transitions> transitionsLazy) {
        return new CompatUIController(context, shellController, displayController,
        return new CompatUIController(context, shellInit, shellController, displayController,
                displayInsetsController, imeController, syncQueue, mainExecutor, transitionsLazy);
                displayInsetsController, imeController, syncQueue, mainExecutor, transitionsLazy);
    }
    }


@@ -268,12 +271,14 @@ public abstract class WMShellBaseModule {
    @Provides
    @Provides
    static Optional<BackAnimationController> provideBackAnimationController(
    static Optional<BackAnimationController> provideBackAnimationController(
            Context context,
            Context context,
            ShellInit shellInit,
            @ShellMainThread ShellExecutor shellExecutor,
            @ShellMainThread ShellExecutor shellExecutor,
            @ShellBackgroundThread Handler backgroundHandler
            @ShellBackgroundThread Handler backgroundHandler
    ) {
    ) {
        if (BackAnimationController.IS_ENABLED) {
        if (BackAnimationController.IS_ENABLED) {
            return Optional.of(
            return Optional.of(
                    new BackAnimationController(shellExecutor, backgroundHandler, context));
                    new BackAnimationController(shellInit, shellExecutor, backgroundHandler,
                            context));
        }
        }
        return Optional.empty();
        return Optional.empty();
    }
    }
@@ -384,11 +389,14 @@ public abstract class WMShellBaseModule {
    @WMSingleton
    @WMSingleton
    @Provides
    @Provides
    static Optional<HideDisplayCutoutController> provideHideDisplayCutoutController(Context context,
    static Optional<HideDisplayCutoutController> provideHideDisplayCutoutController(Context context,
            ShellController shellController, DisplayController displayController,
            ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            ShellController shellController,
            DisplayController displayController,
            @ShellMainThread ShellExecutor mainExecutor) {
            @ShellMainThread ShellExecutor mainExecutor) {
        return Optional.ofNullable(
        return Optional.ofNullable(
                HideDisplayCutoutController.create(context, shellController, displayController,
                HideDisplayCutoutController.create(context, shellInit, shellCommandHandler,
                        mainExecutor));
                        shellController, displayController, mainExecutor));
    }
    }


    //
    //
@@ -466,12 +474,13 @@ public abstract class WMShellBaseModule {
    static Optional<RecentTasksController> provideRecentTasksController(
    static Optional<RecentTasksController> provideRecentTasksController(
            Context context,
            Context context,
            ShellInit shellInit,
            ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            TaskStackListenerImpl taskStackListener,
            TaskStackListenerImpl taskStackListener,
            @ShellMainThread ShellExecutor mainExecutor
            @ShellMainThread ShellExecutor mainExecutor
    ) {
    ) {
        return Optional.ofNullable(
        return Optional.ofNullable(
                RecentTasksController.create(context, shellInit, taskStackListener,
                RecentTasksController.create(context, shellInit, shellCommandHandler,
                        mainExecutor));
                        taskStackListener, mainExecutor));
    }
    }


    //
    //
@@ -649,8 +658,9 @@ public abstract class WMShellBaseModule {
    @WMSingleton
    @WMSingleton
    @Provides
    @Provides
    static ShellController provideShellController(ShellInit shellInit,
    static ShellController provideShellController(ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            @ShellMainThread ShellExecutor mainExecutor) {
            @ShellMainThread ShellExecutor mainExecutor) {
        return new ShellController(shellInit, mainExecutor);
        return new ShellController(shellInit, shellCommandHandler, mainExecutor);
    }
    }


    //
    //
@@ -676,12 +686,15 @@ public abstract class WMShellBaseModule {
            KidsModeTaskOrganizer kidsModeTaskOrganizer,
            KidsModeTaskOrganizer kidsModeTaskOrganizer,
            Optional<BubbleController> bubblesOptional,
            Optional<BubbleController> bubblesOptional,
            Optional<SplitScreenController> splitScreenOptional,
            Optional<SplitScreenController> splitScreenOptional,
            Optional<Pip> pipOptional,
            Optional<PipTouchHandler> pipTouchHandlerOptional,
            Optional<PipTouchHandler> pipTouchHandlerOptional,
            FullscreenTaskListener fullscreenTaskListener,
            FullscreenTaskListener fullscreenTaskListener,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<UnfoldAnimationController> unfoldAnimationController,
            Optional<UnfoldTransitionHandler> unfoldTransitionHandler,
            Optional<UnfoldTransitionHandler> unfoldTransitionHandler,
            Optional<FreeformComponents> freeformComponents,
            Optional<FreeformComponents> freeformComponents,
            Optional<RecentTasksController> recentTasksOptional,
            Optional<RecentTasksController> recentTasksOptional,
            Optional<OneHandedController> oneHandedControllerOptional,
            Optional<HideDisplayCutoutController> hideDisplayCutoutControllerOptional,
            ActivityEmbeddingController activityEmbeddingOptional,
            ActivityEmbeddingController activityEmbeddingOptional,
            Transitions transitions,
            Transitions transitions,
            StartingWindowController startingWindow,
            StartingWindowController startingWindow,
@@ -697,18 +710,7 @@ public abstract class WMShellBaseModule {


    @WMSingleton
    @WMSingleton
    @Provides
    @Provides
    static ShellCommandHandler provideShellCommandHandlerImpl(
    static ShellCommandHandler provideShellCommandHandler() {
            ShellController shellController,
        return new ShellCommandHandler();
            ShellTaskOrganizer shellTaskOrganizer,
            KidsModeTaskOrganizer kidsModeTaskOrganizer,
            Optional<SplitScreenController> splitScreenOptional,
            Optional<Pip> pipOptional,
            Optional<OneHandedController> oneHandedOptional,
            Optional<HideDisplayCutoutController> hideDisplayCutout,
            Optional<RecentTasksController> recentTasksOptional,
            @ShellMainThread ShellExecutor mainExecutor) {
        return new ShellCommandHandler(shellController, shellTaskOrganizer,
                kidsModeTaskOrganizer, splitScreenOptional, pipOptional, oneHandedOptional,
                hideDisplayCutout, recentTasksOptional, mainExecutor);
    }
    }
}
}
+40 −23
Original line number Original line Diff line number Diff line
@@ -74,6 +74,7 @@ import com.android.wm.shell.pip.phone.PipMotionHelper;
import com.android.wm.shell.pip.phone.PipTouchHandler;
import com.android.wm.shell.pip.phone.PipTouchHandler;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.recents.RecentTasksController;
import com.android.wm.shell.splitscreen.SplitScreenController;
import com.android.wm.shell.splitscreen.SplitScreenController;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.SplitscreenPipMixedHandler;
import com.android.wm.shell.transition.SplitscreenPipMixedHandler;
@@ -248,14 +249,20 @@ public abstract class WMShellModule {
    @Provides
    @Provides
    @DynamicOverride
    @DynamicOverride
    static OneHandedController provideOneHandedController(Context context,
    static OneHandedController provideOneHandedController(Context context,
            ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            ShellController shellController,
            ShellController shellController,
            WindowManager windowManager, DisplayController displayController,
            WindowManager windowManager,
            DisplayLayout displayLayout, TaskStackListenerImpl taskStackListener,
            DisplayController displayController,
            UiEventLogger uiEventLogger, InteractionJankMonitor jankMonitor,
            DisplayLayout displayLayout,
            @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) {
            TaskStackListenerImpl taskStackListener,
        return OneHandedController.create(context, shellController, windowManager,
            UiEventLogger uiEventLogger,
                displayController, displayLayout, taskStackListener, jankMonitor, uiEventLogger,
            InteractionJankMonitor jankMonitor,
                mainExecutor, mainHandler);
            @ShellMainThread ShellExecutor mainExecutor,
            @ShellMainThread Handler mainHandler) {
        return OneHandedController.create(context, shellInit, shellCommandHandler, shellController,
                windowManager, displayController, displayLayout, taskStackListener, jankMonitor,
                uiEventLogger, mainExecutor, mainHandler);
    }
    }


    //
    //
@@ -268,6 +275,7 @@ public abstract class WMShellModule {
    static SplitScreenController provideSplitScreenController(
    static SplitScreenController provideSplitScreenController(
            Context context,
            Context context,
            ShellInit shellInit,
            ShellInit shellInit,
            ShellCommandHandler shellCommandHandler,
            ShellController shellController,
            ShellController shellController,
            ShellTaskOrganizer shellTaskOrganizer,
            ShellTaskOrganizer shellTaskOrganizer,
            SyncTransactionQueue syncQueue,
            SyncTransactionQueue syncQueue,
@@ -281,10 +289,10 @@ public abstract class WMShellModule {
            IconProvider iconProvider,
            IconProvider iconProvider,
            Optional<RecentTasksController> recentTasks,
            Optional<RecentTasksController> recentTasks,
            @ShellMainThread ShellExecutor mainExecutor) {
            @ShellMainThread ShellExecutor mainExecutor) {
        return new SplitScreenController(context, shellInit, shellController, shellTaskOrganizer,
        return new SplitScreenController(context, shellInit, shellCommandHandler, shellController,
                syncQueue, rootTaskDisplayAreaOrganizer, displayController, displayImeController,
                shellTaskOrganizer, syncQueue, rootTaskDisplayAreaOrganizer, displayController,
                displayInsetsController, dragAndDropController, transitions, transactionPool,
                displayImeController, displayInsetsController, dragAndDropController, transitions,
                iconProvider, recentTasks, mainExecutor);
                transactionPool, iconProvider, recentTasks, mainExecutor);
    }
    }


    //
    //
@@ -294,24 +302,33 @@ public abstract class WMShellModule {
    @WMSingleton
    @WMSingleton
    @Provides
    @Provides
    static Optional<Pip> providePip(Context context,
    static Optional<Pip> providePip(Context context,
            ShellController shellController, DisplayController displayController,
            ShellInit shellInit,
            PipAppOpsListener pipAppOpsListener, PipBoundsAlgorithm pipBoundsAlgorithm,
            ShellCommandHandler shellCommandHandler,
            PipKeepClearAlgorithm pipKeepClearAlgorithm, PipBoundsState pipBoundsState,
            ShellController shellController,
            PipMotionHelper pipMotionHelper, PipMediaController pipMediaController,
            DisplayController displayController,
            PhonePipMenuController phonePipMenuController, PipTaskOrganizer pipTaskOrganizer,
            PipAppOpsListener pipAppOpsListener,
            PipBoundsAlgorithm pipBoundsAlgorithm,
            PipKeepClearAlgorithm pipKeepClearAlgorithm,
            PipBoundsState pipBoundsState,
            PipMotionHelper pipMotionHelper,
            PipMediaController pipMediaController,
            PhonePipMenuController phonePipMenuController,
            PipTaskOrganizer pipTaskOrganizer,
            PipTransitionState pipTransitionState,
            PipTransitionState pipTransitionState,
            PipTouchHandler pipTouchHandler, PipTransitionController pipTransitionController,
            PipTouchHandler pipTouchHandler,
            PipTransitionController pipTransitionController,
            WindowManagerShellWrapper windowManagerShellWrapper,
            WindowManagerShellWrapper windowManagerShellWrapper,
            TaskStackListenerImpl taskStackListener,
            TaskStackListenerImpl taskStackListener,
            PipParamsChangedForwarder pipParamsChangedForwarder,
            PipParamsChangedForwarder pipParamsChangedForwarder,
            Optional<OneHandedController> oneHandedController,
            Optional<OneHandedController> oneHandedController,
            @ShellMainThread ShellExecutor mainExecutor) {
            @ShellMainThread ShellExecutor mainExecutor) {
        return Optional.ofNullable(PipController.create(context, shellController, displayController,
        return Optional.ofNullable(PipController.create(
                pipAppOpsListener, pipBoundsAlgorithm, pipKeepClearAlgorithm, pipBoundsState,
                context, shellInit, shellCommandHandler, shellController,
                pipMotionHelper,
                displayController, pipAppOpsListener, pipBoundsAlgorithm, pipKeepClearAlgorithm,
                pipMediaController, phonePipMenuController, pipTaskOrganizer, pipTransitionState,
                pipBoundsState, pipMotionHelper, pipMediaController, phonePipMenuController,
                pipTouchHandler, pipTransitionController, windowManagerShellWrapper,
                pipTaskOrganizer, pipTransitionState, pipTouchHandler, pipTransitionController,
                taskStackListener, pipParamsChangedForwarder, oneHandedController, mainExecutor));
                windowManagerShellWrapper, taskStackListener, pipParamsChangedForwarder,
                oneHandedController, mainExecutor));
    }
    }


    @WMSingleton
    @WMSingleton
Loading