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

Commit cae49cdd authored by mattsziklay's avatar mattsziklay
Browse files

Make DisplayDisconnectTransitionHandler an independent component.

Currently, DisplayDisconnectTransitionHandler only exists in
DesktopTasksController, meaning it only exists if the device supports
desktop mode. This causes test failures on devices that do not support
desktop since they do not create an instance of DesktopTasksController.

This CL fixes this by adding this transition handler as an independent
component, ensuring it's always built.

Bug: 365873835
Test: logcat on non-desktop device, confirm disconnect handler inits
Flag: com.android.window.flags.enable_display_disconnect_interaction
Change-Id: I81922aac7dcacd4cc143ab1d0a0834683d203356
parent 12aa326f
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -836,7 +836,6 @@ public abstract class WMShellModule {
            DesktopModeDragAndDropTransitionHandler desktopModeDragAndDropTransitionHandler,
            ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler,
            DragToDesktopTransitionHandler dragToDesktopTransitionHandler,
            DisplayDisconnectTransitionHandler displayDisconnectTransitionHandler,
            @DynamicOverride DesktopUserRepositories desktopUserRepositories,
            DesktopRepositoryInitializer desktopRepositoryInitializer,
            Optional<DesktopImmersiveController> desktopImmersiveController,
@@ -887,7 +886,6 @@ public abstract class WMShellModule {
                desktopModeDragAndDropTransitionHandler,
                toggleResizeDesktopTaskTransitionHandler,
                dragToDesktopTransitionHandler,
                displayDisconnectTransitionHandler,
                desktopImmersiveController.get(),
                desktopUserRepositories,
                desktopRepositoryInitializer,
@@ -1049,10 +1047,15 @@ public abstract class WMShellModule {

    @WMSingleton
    @Provides
    static DisplayDisconnectTransitionHandler provideDesktopDisconnectTransitionHandler(
            Transitions transitions,
            ShellInit shellInit) {
        return new DisplayDisconnectTransitionHandler(transitions, shellInit);
    static Optional<DisplayDisconnectTransitionHandler> provideDisplayDisconnectTransitionHandler(
            ShellInit shellInit, Transitions transitions) {
        if (!DesktopExperienceFlags.ENABLE_DISPLAY_DISCONNECT_INTERACTION.isTrue()) {
            return Optional.empty();
        } else {
            return Optional.of(
                    new DisplayDisconnectTransitionHandler(transitions, shellInit)
            );
        }
    }

    @WMSingleton
@@ -1792,6 +1795,7 @@ public abstract class WMShellModule {
            Optional<DesktopDisplayEventHandler> desktopDisplayEventHandler,
            Optional<DesktopModeKeyGestureHandler> desktopModeKeyGestureHandler,
            Optional<SystemModalsTransitionHandler> systemModalsTransitionHandler,
            Optional<DisplayDisconnectTransitionHandler> displayDisconnectTransitionHandler,
            Optional<DesktopImeHandler> desktopImeHandler,
            ShellCrashHandler shellCrashHandler) {
        return new Object();
+0 −3
Original line number Diff line number Diff line
@@ -205,7 +205,6 @@ class DesktopTasksController(
    private val desktopModeDragAndDropTransitionHandler: DesktopModeDragAndDropTransitionHandler,
    private val toggleResizeDesktopTaskTransitionHandler: ToggleResizeDesktopTaskTransitionHandler,
    private val dragToDesktopTransitionHandler: DragToDesktopTransitionHandler,
    private val displayDisconnectTransitionHandler: DisplayDisconnectTransitionHandler,
    private val desktopImmersiveController: DesktopImmersiveController,
    private val userRepositories: DesktopUserRepositories,
    desktopRepositoryInitializer: DesktopRepositoryInitializer,
@@ -734,8 +733,6 @@ class DesktopTasksController(
                }
            }
        }
        // Inform the transition handler here since this class will handle the request.
        displayDisconnectTransitionHandler.addPendingTransition(transition)
        return wct
    }

+6 −1
Original line number Diff line number Diff line
@@ -26,7 +26,12 @@ import android.window.WindowContainerTransaction
import com.android.wm.shell.sysui.ShellInit
import com.android.wm.shell.transition.Transitions

/** Handler to animate the transition from disconnecting a display. */
/**
 * Handler to animate the transition from disconnecting a display.
 *
 * TODO: b/391652399 Consider moving this out of desktop package as it becomes less
 *   desktop-specific.
 */
class DisplayDisconnectTransitionHandler(val transitions: Transitions, shellInit: ShellInit) :
    Transitions.TransitionHandler {

+0 −2
Original line number Diff line number Diff line
@@ -237,7 +237,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
    @Mock
    lateinit var toggleResizeDesktopTaskTransitionHandler: ToggleResizeDesktopTaskTransitionHandler
    @Mock lateinit var dragToDesktopTransitionHandler: DragToDesktopTransitionHandler
    @Mock lateinit var mDisplayDisconnectTransitionHandler: DisplayDisconnectTransitionHandler
    @Mock lateinit var mMockDesktopImmersiveController: DesktopImmersiveController
    @Mock lateinit var splitScreenController: SplitScreenController
    @Mock lateinit var recentsTransitionHandler: RecentsTransitionHandler
@@ -461,7 +460,6 @@ class DesktopTasksControllerTest(flags: FlagsParameterization) : ShellTestCase()
            dragAndDropTransitionHandler,
            toggleResizeDesktopTaskTransitionHandler,
            dragToDesktopTransitionHandler,
            mDisplayDisconnectTransitionHandler,
            mMockDesktopImmersiveController,
            userRepositories,
            repositoryInitializer,