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

Commit ef854fbd authored by Evan Rosky's avatar Evan Rosky Committed by Automerger Merge Worker
Browse files

Merge "Use transition for desktop-mode switch when enabled" into tm-qpr-dev...

Merge "Use transition for desktop-mode switch when enabled" into tm-qpr-dev am: d6c6f586 am: ddf20795

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19973186



Change-Id: I2f3596acc2bcbd4cf94eb58750ddb5fe4cbb1d66
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 00db9419 ddf20795
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -599,12 +599,12 @@ public abstract class WMShellModule {
            Context context, ShellInit shellInit,
            Context context, ShellInit shellInit,
            ShellTaskOrganizer shellTaskOrganizer,
            ShellTaskOrganizer shellTaskOrganizer,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            @ShellMainThread Handler mainHandler
            @ShellMainThread Handler mainHandler,
            Transitions transitions
    ) {
    ) {
        if (DesktopMode.IS_SUPPORTED) {
        if (DesktopMode.IS_SUPPORTED) {
            return Optional.of(new DesktopModeController(context, shellInit, shellTaskOrganizer,
            return Optional.of(new DesktopModeController(context, shellInit, shellTaskOrganizer,
                    rootDisplayAreaOrganizer,
                    rootDisplayAreaOrganizer, mainHandler, transitions));
                    mainHandler));
        } else {
        } else {
            return Optional.empty();
            return Optional.empty();
        }
        }
+11 −2
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.wm.shell.desktopmode;


import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.view.WindowManager.TRANSIT_CHANGE;


import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE;
import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE;


@@ -37,6 +38,7 @@ import com.android.wm.shell.RootDisplayAreaOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;


/**
/**
 * Handles windowing changes when desktop mode system setting changes
 * Handles windowing changes when desktop mode system setting changes
@@ -47,15 +49,18 @@ public class DesktopModeController {
    private final ShellTaskOrganizer mShellTaskOrganizer;
    private final ShellTaskOrganizer mShellTaskOrganizer;
    private final RootDisplayAreaOrganizer mRootDisplayAreaOrganizer;
    private final RootDisplayAreaOrganizer mRootDisplayAreaOrganizer;
    private final SettingsObserver mSettingsObserver;
    private final SettingsObserver mSettingsObserver;
    private final Transitions mTransitions;


    public DesktopModeController(Context context, ShellInit shellInit,
    public DesktopModeController(Context context, ShellInit shellInit,
            ShellTaskOrganizer shellTaskOrganizer,
            ShellTaskOrganizer shellTaskOrganizer,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
            @ShellMainThread Handler mainHandler) {
            @ShellMainThread Handler mainHandler,
            Transitions transitions) {
        mContext = context;
        mContext = context;
        mShellTaskOrganizer = shellTaskOrganizer;
        mShellTaskOrganizer = shellTaskOrganizer;
        mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer;
        mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer;
        mSettingsObserver = new SettingsObserver(mContext, mainHandler);
        mSettingsObserver = new SettingsObserver(mContext, mainHandler);
        mTransitions = transitions;
        shellInit.addInitCallback(this::onInit, this);
        shellInit.addInitCallback(this::onInit, this);
    }
    }


@@ -89,8 +94,12 @@ public class DesktopModeController {
        }
        }
        wct.merge(mRootDisplayAreaOrganizer.prepareWindowingModeChange(displayId,
        wct.merge(mRootDisplayAreaOrganizer.prepareWindowingModeChange(displayId,
                targetWindowingMode), true /* transfer */);
                targetWindowingMode), true /* transfer */);
        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            mTransitions.startTransition(TRANSIT_CHANGE, wct, null);
        } else {
            mRootDisplayAreaOrganizer.applyTransaction(wct);
            mRootDisplayAreaOrganizer.applyTransaction(wct);
        }
        }
    }


    /**
    /**
     * A {@link ContentObserver} for listening to changes to {@link Settings.System#DESKTOP_MODE}
     * A {@link ContentObserver} for listening to changes to {@link Settings.System#DESKTOP_MODE}
+4 −1
Original line number Original line Diff line number Diff line
@@ -43,6 +43,7 @@ import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.sysui.ShellInit;
import com.android.wm.shell.transition.Transitions;


import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
@@ -63,6 +64,8 @@ public class DesktopModeControllerTest extends ShellTestCase {
    private ShellExecutor mTestExecutor;
    private ShellExecutor mTestExecutor;
    @Mock
    @Mock
    private Handler mMockHandler;
    private Handler mMockHandler;
    @Mock
    private Transitions mMockTransitions;


    private DesktopModeController mController;
    private DesktopModeController mController;
    private ShellInit mShellInit;
    private ShellInit mShellInit;
@@ -72,7 +75,7 @@ public class DesktopModeControllerTest extends ShellTestCase {
        mShellInit = Mockito.spy(new ShellInit(mTestExecutor));
        mShellInit = Mockito.spy(new ShellInit(mTestExecutor));


        mController = new DesktopModeController(mContext, mShellInit, mShellTaskOrganizer,
        mController = new DesktopModeController(mContext, mShellInit, mShellTaskOrganizer,
                mRootDisplayAreaOrganizer, mMockHandler);
                mRootDisplayAreaOrganizer, mMockHandler, mMockTransitions);


        mShellInit.init();
        mShellInit.init();
    }
    }