From c2c80d97c1d1e7f99975f052402d6841ad9140c9 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Fri, 9 Sep 2022 00:03:16 +0000 Subject: [PATCH] Flatten SplitscreenPipMixedHandler into DefaultMixedHandler It was just a thin wrapper and thus unneeded abstraction. Additionally, the mixed-handler is for general mixing, so wrapping it in a name for just one combination is confusing. Bug: 244486556 Test: Tests pass (meaning it still works) Change-Id: I7a02f803fa421bbec02344d479d1d90ea741e155 --- .../wm/shell/dagger/WMShellModule.java | 10 ++-- .../shell/transition/DefaultMixedHandler.java | 25 +++++++-- .../SplitscreenPipMixedHandler.java | 55 ------------------- 3 files changed, 24 insertions(+), 66 deletions(-) delete mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/transition/SplitscreenPipMixedHandler.java 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 7c50982b7b86e..347904e67f3ee 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 @@ -82,7 +82,7 @@ import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.sysui.ShellCommandHandler; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; -import com.android.wm.shell.transition.SplitscreenPipMixedHandler; +import com.android.wm.shell.transition.DefaultMixedHandler; import com.android.wm.shell.transition.Transitions; import com.android.wm.shell.unfold.ShellUnfoldProgressProvider; import com.android.wm.shell.unfold.UnfoldAnimationController; @@ -484,13 +484,13 @@ public abstract class WMShellModule { @WMSingleton @Provides - static SplitscreenPipMixedHandler provideSplitscreenPipMixedHandler( + static DefaultMixedHandler provideDefaultMixedHandler( ShellInit shellInit, Optional splitScreenOptional, Optional pipTouchHandlerOptional, Transitions transitions) { - return new SplitscreenPipMixedHandler(shellInit, splitScreenOptional, - pipTouchHandlerOptional, transitions); + return new DefaultMixedHandler(shellInit, transitions, splitScreenOptional, + pipTouchHandlerOptional); } // @@ -619,7 +619,7 @@ public abstract class WMShellModule { @ShellCreateTriggerOverride @Provides static Object provideIndependentShellComponentsToCreate( - SplitscreenPipMixedHandler splitscreenPipMixedHandler, + DefaultMixedHandler defaultMixedHandler, Optional desktopModeController) { return new Object(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java index e26c259b2397f..bcf4fbda0e0ca 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java @@ -35,10 +35,14 @@ import android.window.WindowContainerTransaction; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.pip.PipTransitionController; +import com.android.wm.shell.pip.phone.PipTouchHandler; import com.android.wm.shell.protolog.ShellProtoLogGroup; +import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.splitscreen.StageCoordinator; +import com.android.wm.shell.sysui.ShellInit; import java.util.ArrayList; +import java.util.Optional; /** * A handler for dealing with transitions involving multiple other handlers. For example: an @@ -47,8 +51,8 @@ import java.util.ArrayList; public class DefaultMixedHandler implements Transitions.TransitionHandler { private final Transitions mPlayer; - private final PipTransitionController mPipHandler; - private final StageCoordinator mSplitHandler; + private PipTransitionController mPipHandler; + private StageCoordinator mSplitHandler; private static class MixedTransition { static final int TYPE_ENTER_PIP_FROM_SPLIT = 1; @@ -77,13 +81,22 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler { mTransition = transition; } } + private final ArrayList mActiveTransitions = new ArrayList<>(); - public DefaultMixedHandler(@NonNull Transitions player, - @NonNull PipTransitionController pipHandler, @NonNull StageCoordinator splitHandler) { + public DefaultMixedHandler(@NonNull ShellInit shellInit, @NonNull Transitions player, + Optional splitScreenControllerOptional, + Optional pipTouchHandlerOptional) { mPlayer = player; - mPipHandler = pipHandler; - mSplitHandler = splitHandler; + if (Transitions.ENABLE_SHELL_TRANSITIONS && pipTouchHandlerOptional.isPresent() + && splitScreenControllerOptional.isPresent()) { + // Add after dependencies because it is higher priority + shellInit.addInitCallback(() -> { + mPipHandler = pipTouchHandlerOptional.get().getTransitionHandler(); + mSplitHandler = splitScreenControllerOptional.get().getTransitionHandler(); + mPlayer.addHandler(this); + }, this); + } } @Nullable diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/SplitscreenPipMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/SplitscreenPipMixedHandler.java deleted file mode 100644 index 678e91fd88290..0000000000000 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/SplitscreenPipMixedHandler.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.wm.shell.transition; - -import com.android.wm.shell.pip.phone.PipTouchHandler; -import com.android.wm.shell.splitscreen.SplitScreenController; -import com.android.wm.shell.sysui.ShellInit; - -import java.util.Optional; - -/** - * Handles transitions between the Splitscreen and PIP components. - */ -public class SplitscreenPipMixedHandler { - - private final Optional mSplitScreenOptional; - private final Optional mPipTouchHandlerOptional; - private final Transitions mTransitions; - - public SplitscreenPipMixedHandler(ShellInit shellInit, - Optional splitScreenControllerOptional, - Optional pipTouchHandlerOptional, - Transitions transitions) { - mSplitScreenOptional = splitScreenControllerOptional; - mPipTouchHandlerOptional = pipTouchHandlerOptional; - mTransitions = transitions; - if (Transitions.ENABLE_SHELL_TRANSITIONS - && mSplitScreenOptional.isPresent() && mPipTouchHandlerOptional.isPresent()) { - shellInit.addInitCallback(this::onInit, this); - } - } - - private void onInit() { - // Special handling for initializing based on multiple components - final DefaultMixedHandler mixedHandler = new DefaultMixedHandler(mTransitions, - mPipTouchHandlerOptional.get().getTransitionHandler(), - mSplitScreenOptional.get().getTransitionHandler()); - // Added at end so that it has highest priority. - mTransitions.addHandler(mixedHandler); - } -}