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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user