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

Commit fc0d2acd authored by Hongwei Wang's avatar Hongwei Wang
Browse files

Initialize PipTaskOrganizer in ShellInit

Follows the same initialize process in other classes. This makes sure
the DisableFlag annotation in pip1 unit tests work properly, since we
can forcefully call the onInit function, regardless the flag value.

Further, change the pattern in pip1 unit tests to not rely on the
ShellInit, instead, calling the onInit directly to bypass the flag check

Flag: EXEMPT testfix
Bug: 409622499
Test: atest WMShellUnitTests
Change-Id: If5ff059235b4af744dd71d21b7e8f775ce0828a0
parent e8638894
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -159,6 +159,7 @@ public abstract class Pip1Module {
    @WMSingleton
    @Provides
    static PipTaskOrganizer providePipTaskOrganizer(Context context,
            ShellInit shellInit,
            SyncTransactionQueue syncTransactionQueue,
            PipTransitionState pipTransitionState,
            PipBoundsState pipBoundsState,
@@ -176,7 +177,7 @@ public abstract class Pip1Module {
            DisplayController displayController,
            PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer,
            @ShellMainThread ShellExecutor mainExecutor) {
        return new PipTaskOrganizer(context,
        return new PipTaskOrganizer(context, shellInit,
                syncTransactionQueue, pipTransitionState, pipBoundsState, pipDisplayLayoutState,
                pipBoundsAlgorithm, menuPhoneController, pipAnimationController,
                pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder,
+2 −1
Original line number Diff line number Diff line
@@ -203,6 +203,7 @@ public abstract class TvPipModule {
    @WMSingleton
    @Provides
    static PipTaskOrganizer providePipTaskOrganizer(Context context,
            ShellInit shellInit,
            TvPipMenuController tvPipMenuController,
            SyncTransactionQueue syncTransactionQueue,
            TvPipBoundsState tvPipBoundsState,
@@ -219,7 +220,7 @@ public abstract class TvPipModule {
            DisplayController displayController,
            PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer,
            @ShellMainThread ShellExecutor mainExecutor) {
        return new TvPipTaskOrganizer(context,
        return new TvPipTaskOrganizer(context, shellInit,
                syncTransactionQueue, pipTransitionState, tvPipBoundsState, pipDisplayLayoutState,
                tvPipBoundsAlgorithm, tvPipMenuController, pipAnimationController,
                pipSurfaceTransactionHelper, tvPipTransition, pipParamsChangedForwarder,
+14 −8
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ import com.android.wm.shell.shared.animation.Interpolators;
import com.android.wm.shell.shared.annotations.ShellMainThread;
import com.android.wm.shell.shared.pip.PipContentOverlay;
import com.android.wm.shell.splitscreen.SplitScreenController;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;

import java.io.PrintWriter;
@@ -369,6 +370,7 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
    private Rect mSwipeSourceRectHint;

    public PipTaskOrganizer(Context context,
            @NonNull ShellInit shellInit,
            @NonNull SyncTransactionQueue syncTransactionQueue,
            @NonNull PipTransitionState pipTransitionState,
            @NonNull PipBoundsState pipBoundsState,
@@ -415,17 +417,21 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
        mTaskOrganizer = shellTaskOrganizer;
        mMainExecutor = mainExecutor;

        // TODO: Can be removed once wm components are created on the shell-main thread
        if (!PipUtils.isPip2ExperimentEnabled()) {
            mMainExecutor.execute(() -> {
                mTaskOrganizer.addListenerForType(this, TASK_LISTENER_TYPE_PIP);
            });
            shellInit.addInitCallback(this::onInit, this);
        }
    }

    @VisibleForTesting
    void onInit() {
        // TODO: Can be removed once wm components are created on the shell-main thread
        mMainExecutor.execute(() -> mTaskOrganizer.addListenerForType(
                this, TASK_LISTENER_TYPE_PIP));
        mPipTransitionController.setPipOrganizer(this);
            displayController.addDisplayWindowListener(this);
            pipTransitionController.registerPipTransitionCallback(
        mDisplayController.addDisplayWindowListener(this);
        mPipTransitionController.registerPipTransitionCallback(
                mPipTransitionCallback, mMainExecutor);
    }
    }

    public PipTransitionController getTransitionController() {
        return mPipTransitionController;
+2 −1
Original line number Diff line number Diff line
@@ -490,7 +490,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
        }
    }

    private void onInit() {
    @VisibleForTesting
    void onInit() {
        mShellCommandHandler.addDumpCallback(this::dump, this);
        mPipInputConsumer = new PipInputConsumer(WindowManagerGlobal.getWindowManagerService(),
                INPUT_CONSUMER_PIP, mMainExecutor);
+3 −1
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.wm.shell.pip.PipSurfaceTransactionHelper;
import com.android.wm.shell.pip.PipTaskOrganizer;
import com.android.wm.shell.pip.PipTransitionState;
import com.android.wm.shell.splitscreen.SplitScreenController;
import com.android.wm.shell.sysui.ShellInit;

import java.util.Objects;
import java.util.Optional;
@@ -50,6 +51,7 @@ public class TvPipTaskOrganizer extends PipTaskOrganizer {
    private final TvPipTransition mTvPipTransition;

    public TvPipTaskOrganizer(Context context,
            @NonNull ShellInit shellInit,
            @NonNull SyncTransactionQueue syncTransactionQueue,
            @NonNull PipTransitionState pipTransitionState,
            @NonNull PipBoundsState pipBoundsState,
@@ -67,7 +69,7 @@ public class TvPipTaskOrganizer extends PipTaskOrganizer {
            @NonNull PipUiEventLogger pipUiEventLogger,
            @NonNull ShellTaskOrganizer shellTaskOrganizer,
            ShellExecutor mainExecutor) {
        super(context, syncTransactionQueue, pipTransitionState, pipBoundsState,
        super(context, shellInit, syncTransactionQueue, pipTransitionState, pipBoundsState,
                pipDisplayLayoutState, boundsHandler, pipMenuController, pipAnimationController,
                surfaceTransactionHelper, tvPipTransition, pipParamsChangedForwarder,
                splitScreenOptional, pipPerfHintControllerOptional, Optional.empty(),
Loading