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

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

Change-Id: I8e5b1c58353dcb546b3d4ed64696f26c957f3e02
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Evan Rosky
2022-09-16 16:43:04 +00:00
committed by Automerger Merge Worker
3 changed files with 18 additions and 6 deletions

View File

@@ -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();
} }

View File

@@ -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,7 +94,11 @@ public class DesktopModeController {
} }
wct.merge(mRootDisplayAreaOrganizer.prepareWindowingModeChange(displayId, wct.merge(mRootDisplayAreaOrganizer.prepareWindowingModeChange(displayId,
targetWindowingMode), true /* transfer */); targetWindowingMode), true /* transfer */);
mRootDisplayAreaOrganizer.applyTransaction(wct); if (Transitions.ENABLE_SHELL_TRANSITIONS) {
mTransitions.startTransition(TRANSIT_CHANGE, wct, null);
} else {
mRootDisplayAreaOrganizer.applyTransaction(wct);
}
} }
/** /**

View File

@@ -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();
} }