summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java6
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java13
-rw-r--r--libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java5
3 files changed, 18 insertions, 6 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
index 18ce3642335d..247ba605ae58 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java
@@ -599,12 +599,12 @@ public abstract class WMShellModule {
Context context, ShellInit shellInit,
ShellTaskOrganizer shellTaskOrganizer,
RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
- @ShellMainThread Handler mainHandler
+ @ShellMainThread Handler mainHandler,
+ Transitions transitions
) {
if (DesktopMode.IS_SUPPORTED) {
return Optional.of(new DesktopModeController(context, shellInit, shellTaskOrganizer,
- rootDisplayAreaOrganizer,
- mainHandler));
+ rootDisplayAreaOrganizer, mainHandler, transitions));
} else {
return Optional.empty();
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java
index 7d34ea481de6..c07ce1065302 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java
@@ -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_FULLSCREEN;
+import static android.view.WindowManager.TRANSIT_CHANGE;
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.common.annotations.ShellMainThread;
import com.android.wm.shell.sysui.ShellInit;
+import com.android.wm.shell.transition.Transitions;
/**
* Handles windowing changes when desktop mode system setting changes
@@ -47,15 +49,18 @@ public class DesktopModeController {
private final ShellTaskOrganizer mShellTaskOrganizer;
private final RootDisplayAreaOrganizer mRootDisplayAreaOrganizer;
private final SettingsObserver mSettingsObserver;
+ private final Transitions mTransitions;
public DesktopModeController(Context context, ShellInit shellInit,
ShellTaskOrganizer shellTaskOrganizer,
RootDisplayAreaOrganizer rootDisplayAreaOrganizer,
- @ShellMainThread Handler mainHandler) {
+ @ShellMainThread Handler mainHandler,
+ Transitions transitions) {
mContext = context;
mShellTaskOrganizer = shellTaskOrganizer;
mRootDisplayAreaOrganizer = rootDisplayAreaOrganizer;
mSettingsObserver = new SettingsObserver(mContext, mainHandler);
+ mTransitions = transitions;
shellInit.addInitCallback(this::onInit, this);
}
@@ -89,7 +94,11 @@ public class DesktopModeController {
}
wct.merge(mRootDisplayAreaOrganizer.prepareWindowingModeChange(displayId,
targetWindowingMode), true /* transfer */);
- mRootDisplayAreaOrganizer.applyTransaction(wct);
+ if (Transitions.ENABLE_SHELL_TRANSITIONS) {
+ mTransitions.startTransition(TRANSIT_CHANGE, wct, null);
+ } else {
+ mRootDisplayAreaOrganizer.applyTransaction(wct);
+ }
}
/**
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java
index ef532e449bd6..577942505b13 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopModeControllerTest.java
@@ -43,6 +43,7 @@ import com.android.wm.shell.ShellTaskOrganizer;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.sysui.ShellInit;
+import com.android.wm.shell.transition.Transitions;
import org.junit.Before;
import org.junit.Test;
@@ -63,6 +64,8 @@ public class DesktopModeControllerTest extends ShellTestCase {
private ShellExecutor mTestExecutor;
@Mock
private Handler mMockHandler;
+ @Mock
+ private Transitions mMockTransitions;
private DesktopModeController mController;
private ShellInit mShellInit;
@@ -72,7 +75,7 @@ public class DesktopModeControllerTest extends ShellTestCase {
mShellInit = Mockito.spy(new ShellInit(mTestExecutor));
mController = new DesktopModeController(mContext, mShellInit, mShellTaskOrganizer,
- mRootDisplayAreaOrganizer, mMockHandler);
+ mRootDisplayAreaOrganizer, mMockHandler, mMockTransitions);
mShellInit.init();
}