Merge "Use transition for desktop-mode switch when enabled" into tm-qpr-dev
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user