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

Commit 2138c6bd authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Stop using DesktopModeStatus in recent" into main

parents 1ec56c5e 91f8e0ad
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -739,12 +739,14 @@ public abstract class WMShellBaseModule {
            ActivityTaskManager activityTaskManager,
            Optional<DesktopUserRepositories> desktopUserRepositories,
            TaskStackTransitionObserver taskStackTransitionObserver,
            @ShellMainThread ShellExecutor mainExecutor
            @ShellMainThread ShellExecutor mainExecutor,
            DesktopState desktopState
    ) {
        return Optional.ofNullable(
                RecentTasksController.create(context, shellInit, shellController,
                        shellCommandHandler, taskStackListener, activityTaskManager,
                        desktopUserRepositories, taskStackTransitionObserver, mainExecutor));
                        desktopUserRepositories, taskStackTransitionObserver, mainExecutor,
                        desktopState));
    }

    @BindsOptionalOf
+12 −8
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ import com.android.wm.shell.protolog.ShellProtoLogGroup;
import com.android.wm.shell.shared.GroupedTaskInfo;
import com.android.wm.shell.shared.annotations.ExternalThread;
import com.android.wm.shell.shared.annotations.ShellMainThread;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.shared.desktopmode.DesktopState;
import com.android.wm.shell.shared.split.SplitBounds;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
@@ -109,6 +109,7 @@ public class RecentTasksController implements TaskStackListenerCallback,
    private final ActivityTaskManager mActivityTaskManager;
    private final TaskStackTransitionObserver mTaskStackTransitionObserver;
    private final RecentsShellCommandHandler mRecentsShellCommandHandler;
    private final DesktopState mDesktopState;
    private RecentsTransitionHandler mTransitionHandler = null;
    private IRecentTasksListener mListener;
    private final boolean mPcFeatureEnabled;
@@ -150,14 +151,15 @@ public class RecentTasksController implements TaskStackListenerCallback,
            ActivityTaskManager activityTaskManager,
            Optional<DesktopUserRepositories> desktopUserRepositories,
            TaskStackTransitionObserver taskStackTransitionObserver,
            @ShellMainThread ShellExecutor mainExecutor
            @ShellMainThread ShellExecutor mainExecutor,
            DesktopState desktopState
    ) {
        if (!context.getResources().getBoolean(com.android.internal.R.bool.config_hasRecents)) {
            return null;
        }
        return new RecentTasksController(context, shellInit, shellController, shellCommandHandler,
                taskStackListener, activityTaskManager, desktopUserRepositories,
                taskStackTransitionObserver, mainExecutor);
                taskStackTransitionObserver, mainExecutor, desktopState);
    }

    RecentTasksController(Context context,
@@ -168,7 +170,8 @@ public class RecentTasksController implements TaskStackListenerCallback,
            ActivityTaskManager activityTaskManager,
            Optional<DesktopUserRepositories> desktopUserRepositories,
            TaskStackTransitionObserver taskStackTransitionObserver,
            ShellExecutor mainExecutor) {
            ShellExecutor mainExecutor,
            DesktopState desktopState) {
        mContext = context;
        mShellController = shellController;
        mShellCommandHandler = shellCommandHandler;
@@ -179,6 +182,7 @@ public class RecentTasksController implements TaskStackListenerCallback,
        mTaskStackTransitionObserver = taskStackTransitionObserver;
        mMainExecutor = mainExecutor;
        mRecentsShellCommandHandler = new RecentsShellCommandHandler(this);
        mDesktopState = desktopState;
        shellInit.addInitCallback(this::onInit, this);
    }

@@ -489,7 +493,7 @@ public class RecentTasksController implements TaskStackListenerCallback,

    private boolean shouldEnableRunningTasksForDesktopMode() {
        return mPcFeatureEnabled
                || (DesktopModeStatus.canEnterDesktopMode(mContext)
                || (mDesktopState.canEnterDesktopMode()
                && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS.isTrue());
    }

@@ -583,7 +587,7 @@ public class RecentTasksController implements TaskStackListenerCallback,
    private void initializeDesksMap(boolean multipleDesktopsEnabled) {
        mTmpDesks.clear();

        if (DesktopModeStatus.canEnterDesktopMode(mContext)
        if (mDesktopState.canEnterDesktopMode()
                && mDesktopUserRepositories.isPresent()) {
            if (multipleDesktopsEnabled) {
                for (var deskId : mDesktopUserRepositories.get().getCurrent().getAllDeskIds()) {
@@ -675,8 +679,8 @@ public class RecentTasksController implements TaskStackListenerCallback,
            }

            // Desktop tasks
            if (DesktopModeStatus.canEnterDesktopMode(mContext) &&
                    mDesktopUserRepositories.isPresent()
            if (mDesktopState.canEnterDesktopMode()
                    && mDesktopUserRepositories.isPresent()
                    && mDesktopUserRepositories.get().getCurrent().isActiveTask(taskId)) {
                // If task has their app bounds set to null which happens after reboot, set the
                // app bounds to persisted lastFullscreenBounds. Also set the position in parent
+15 −15
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_PERSISTENCE;
import static com.android.wm.shell.shared.GroupedTaskInfo.TYPE_DESK;
import static com.android.wm.shell.shared.GroupedTaskInfo.TYPE_FULLSCREEN;
@@ -69,8 +68,6 @@ import android.view.SurfaceControl;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.dx.mockito.inline.extended.StaticMockitoSession;
import com.android.window.flags.Flags;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
@@ -81,7 +78,7 @@ import com.android.wm.shell.desktopmode.DesktopRepository;
import com.android.wm.shell.desktopmode.DesktopUserRepositories;
import com.android.wm.shell.desktopmode.DesktopWallpaperActivity;
import com.android.wm.shell.shared.GroupedTaskInfo;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.shared.desktopmode.FakeDesktopState;
import com.android.wm.shell.shared.split.SplitBounds;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
@@ -92,7 +89,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.quality.Strictness;
import org.mockito.MockitoAnnotations;

import java.util.ArrayList;
import java.util.Arrays;
@@ -130,6 +127,7 @@ public class RecentTasksControllerTest extends ShellTestCase {
    private DesktopRepository mDesktopRepository;
    @Mock
    private UserManager mUserManager;
    private FakeDesktopState mDesktopState;

    private ShellTaskOrganizer mShellTaskOrganizer;
    private RecentTasksController mRecentTasksController;
@@ -137,14 +135,14 @@ public class RecentTasksControllerTest extends ShellTestCase {
    private ShellInit mShellInit;
    private ShellController mShellController;
    private TestShellExecutor mMainExecutor;
    private static StaticMockitoSession sMockitoSession;
    private AutoCloseable mMocksInit = null;

    @Before
    public void setUp() {
        sMockitoSession = mockitoSession().initMocks(this).strictness(Strictness.LENIENT)
                .mockStatic(DesktopModeStatus.class).startMocking();
        ExtendedMockito.doReturn(true)
                .when(() -> DesktopModeStatus.canEnterDesktopMode(any()));
        mDesktopState = new FakeDesktopState();
        mDesktopState.setCanEnterDesktopMode(true);

        mMocksInit = MockitoAnnotations.openMocks(this);

        mMainExecutor = new TestShellExecutor();
        when(mDesktopUserRepositories.getCurrent()).thenReturn(mDesktopRepository);
@@ -158,7 +156,7 @@ public class RecentTasksControllerTest extends ShellTestCase {
        mRecentTasksControllerReal = new RecentTasksController(mContext, mShellInit,
                mShellController, mShellCommandHandler, mTaskStackListener, mActivityTaskManager,
                Optional.of(mDesktopUserRepositories), mTaskStackTransitionObserver,
                mMainExecutor);
                mMainExecutor, mDesktopState);
        mRecentTasksController = spy(mRecentTasksControllerReal);
        mShellTaskOrganizer = new ShellTaskOrganizer(mShellInit, mShellCommandHandler,
                null /* sizeCompatUI */, Optional.empty(), Optional.of(mRecentTasksController),
@@ -167,8 +165,11 @@ public class RecentTasksControllerTest extends ShellTestCase {
    }

    @After
    public void tearDown() {
        sMockitoSession.finishMocking();
    public void tearDown() throws Exception {
        if (mMocksInit != null) {
            mMocksInit.close();
            mMocksInit = null;
        }
    }

    @Test
@@ -409,8 +410,7 @@ public class RecentTasksControllerTest extends ShellTestCase {

    @Test
    public void testGetRecentTasks_hasActiveDesktopTasks_proto2Disabled_doNotGroupFreeformTasks() {
        ExtendedMockito.doReturn(false)
                .when(() -> DesktopModeStatus.canEnterDesktopMode(any()));
        mDesktopState.setCanEnterDesktopMode(false);

        RecentTaskInfo t1 = makeTaskInfo(1);
        RecentTaskInfo t2 = makeTaskInfo(2);
+13 −13
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_TO_FRONT;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_RECENTS_TRANSITIONS_CORNERS_BUGFIX;
import static com.android.wm.shell.Flags.FLAG_ENABLE_RECENTS_BOOKEND_TRANSITION;
import static com.android.wm.shell.recents.RecentsTransitionStateListener.TRANSITION_STATE_ANIMATING;
@@ -65,8 +64,6 @@ import androidx.annotation.NonNull;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.dx.mockito.inline.extended.ExtendedMockito;
import com.android.dx.mockito.inline.extended.StaticMockitoSession;
import com.android.internal.os.IResultReceiver;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
@@ -77,7 +74,7 @@ import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.desktopmode.DesktopRepository;
import com.android.wm.shell.desktopmode.DesktopUserRepositories;
import com.android.wm.shell.shared.R;
import com.android.wm.shell.shared.desktopmode.DesktopModeStatus;
import com.android.wm.shell.shared.desktopmode.FakeDesktopState;
import com.android.wm.shell.sysui.ShellCommandHandler;
import com.android.wm.shell.sysui.ShellController;
import com.android.wm.shell.sysui.ShellInit;
@@ -91,7 +88,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.quality.Strictness;
import org.mockito.MockitoAnnotations;

import java.util.Optional;

@@ -136,14 +133,14 @@ public class RecentsTransitionHandlerTest extends ShellTestCase {
    private ShellInit mShellInit;
    private ShellController mShellController;
    private TestShellExecutor mMainExecutor;
    private static StaticMockitoSession sMockitoSession;
    private AutoCloseable mMocksInit = null;

    @Before
    public void setUp() {
        sMockitoSession = mockitoSession().initMocks(this).strictness(Strictness.LENIENT)
                .mockStatic(DesktopModeStatus.class).startMocking();
        ExtendedMockito.doReturn(true)
                .when(() -> DesktopModeStatus.canEnterDesktopMode(any()));
        var desktopState = new FakeDesktopState();
        desktopState.setCanEnterDesktopMode(true);

        mMocksInit = MockitoAnnotations.openMocks(this);

        when(mDesktopUserRepositories.getCurrent()).thenReturn(mDesktopRepository);
        mMainExecutor = new TestShellExecutor();
@@ -160,7 +157,7 @@ public class RecentsTransitionHandlerTest extends ShellTestCase {
        mRecentTasksControllerReal = new RecentTasksController(mContext, mShellInit,
                mShellController, mShellCommandHandler, mTaskStackListener, mActivityTaskManager,
                Optional.of(mDesktopUserRepositories), mTaskStackTransitionObserver,
                mMainExecutor);
                mMainExecutor, desktopState);
        mRecentTasksController = spy(mRecentTasksControllerReal);
        mShellTaskOrganizer = new ShellTaskOrganizer(mShellInit, mShellCommandHandler,
                null /* sizeCompatUI */, Optional.empty(), Optional.of(mRecentTasksController),
@@ -178,8 +175,11 @@ public class RecentsTransitionHandlerTest extends ShellTestCase {
    }

    @After
    public void tearDown() {
        sMockitoSession.finishMocking();
    public void tearDown() throws Exception {
        if (mMocksInit != null) {
            mMocksInit.close();
            mMocksInit = null;
        }
    }

    @Test