From 57000adf8e1fb94751cf6a5c16faa931e62787b8 Mon Sep 17 00:00:00 2001 From: Evan Rosky Date: Fri, 8 Jan 2021 12:19:42 -0800 Subject: [PATCH] Move shell Transitions into a package For organization. Bug: 169035082 Test: builds/runs (no logic changed) Change-Id: I224ab5f19df7ce49a2112dcf7c900a3fc310532d --- .../Shell/res/raw/wm_shell_protolog.json | 36 +++++++++---------- .../wm/shell/FullscreenTaskListener.java | 1 + .../com/android/wm/shell/ShellInitImpl.java | 11 +++++- .../LegacySplitScreenController.java | 2 +- .../LegacySplitScreenTaskListener.java | 2 +- .../SplitScreenTransitions.java | 2 +- .../legacysplitscreen/WindowManagerProxy.java | 2 +- .../shell/{ => transition}/Transitions.java | 6 ++-- .../systemui/wmshell/TvWMShellModule.java | 2 +- .../systemui/wmshell/WMShellBaseModule.java | 4 ++- .../systemui/wmshell/WMShellModule.java | 5 +-- 11 files changed, 42 insertions(+), 31 deletions(-) rename libs/WindowManager/Shell/src/com/android/wm/shell/{ => transition}/Transitions.java (98%) diff --git a/libs/WindowManager/Shell/res/raw/wm_shell_protolog.json b/libs/WindowManager/Shell/res/raw/wm_shell_protolog.json index 4070829fcfbe7..0290d9f4b316e 100644 --- a/libs/WindowManager/Shell/res/raw/wm_shell_protolog.json +++ b/libs/WindowManager/Shell/res/raw/wm_shell_protolog.json @@ -7,24 +7,12 @@ "group": "WM_SHELL_TASK_ORG", "at": "com\/android\/wm\/shell\/ShellTaskOrganizer.java" }, - "-1534364071": { - "message": "onTransitionReady %s: %s", - "level": "VERBOSE", - "group": "WM_SHELL_TRANSITIONS", - "at": "com\/android\/wm\/shell\/Transitions.java" - }, "-1501874464": { "message": "Fullscreen Task Appeared: #%d", "level": "VERBOSE", "group": "WM_SHELL_TASK_ORG", "at": "com\/android\/wm\/shell\/FullscreenTaskListener.java" }, - "-1480787369": { - "message": "Transition requested: type=%d %s", - "level": "VERBOSE", - "group": "WM_SHELL_TRANSITIONS", - "at": "com\/android\/wm\/shell\/Transitions.java" - }, "-1382704050": { "message": "Display removed: %d", "level": "VERBOSE", @@ -97,12 +85,6 @@ "group": "WM_SHELL_TASK_ORG", "at": "com\/android\/wm\/shell\/apppairs\/AppPairsController.java" }, - "-191422040": { - "message": "Transition animations finished, notifying core %s", - "level": "VERBOSE", - "group": "WM_SHELL_TRANSITIONS", - "at": "com\/android\/wm\/shell\/Transitions.java" - }, "157713005": { "message": "Task info changed taskId=%d", "level": "VERBOSE", @@ -115,6 +97,12 @@ "group": "WM_SHELL_DRAG_AND_DROP", "at": "com\/android\/wm\/shell\/draganddrop\/DropOutlineDrawable.java" }, + "325110414": { + "message": "Transition animations finished, notifying core %s", + "level": "VERBOSE", + "group": "WM_SHELL_TRANSITIONS", + "at": "com\/android\/wm\/shell\/transition\/Transitions.java" + }, "375908576": { "message": "Clip description: handlingDrag=%b itemCount=%d mimeTypes=%s", "level": "VERBOSE", @@ -145,6 +133,12 @@ "group": "WM_SHELL_TASK_ORG", "at": "com\/android\/wm\/shell\/ShellTaskOrganizer.java" }, + "846958769": { + "message": "Transition requested: type=%d %s", + "level": "VERBOSE", + "group": "WM_SHELL_TRANSITIONS", + "at": "com\/android\/wm\/shell\/transition\/Transitions.java" + }, "900599280": { "message": "Can't pair unresizeable tasks task1.isResizeable=%b task1.isResizeable=%b", "level": "ERROR", @@ -169,6 +163,12 @@ "group": "WM_SHELL_TASK_ORG", "at": "com\/android\/wm\/shell\/legacysplitscreen\/LegacySplitScreenTaskListener.java" }, + "1070270131": { + "message": "onTransitionReady %s: %s", + "level": "VERBOSE", + "group": "WM_SHELL_TRANSITIONS", + "at": "com\/android\/wm\/shell\/transition\/Transitions.java" + }, "1079041527": { "message": "incrementPool size=%d", "level": "VERBOSE", diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/FullscreenTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/FullscreenTaskListener.java index 8817f8aaec7c4..0146b728bcad2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/FullscreenTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/FullscreenTaskListener.java @@ -30,6 +30,7 @@ import androidx.annotation.NonNull; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.protolog.ShellProtoLogGroup; +import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java index 00567618ef06d..0cee0a21bde3d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellInitImpl.java @@ -24,9 +24,9 @@ import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.annotations.ExternalThread; import com.android.wm.shell.draganddrop.DragAndDropController; import com.android.wm.shell.legacysplitscreen.LegacySplitScreen; +import com.android.wm.shell.transition.Transitions; import java.util.Optional; -import java.util.concurrent.TimeUnit; /** * The entry point implementation into the shell for initializing shell internal state. @@ -41,6 +41,7 @@ public class ShellInitImpl { private final Optional mAppPairsOptional; private final FullscreenTaskListener mFullscreenTaskListener; private final ShellExecutor mMainExecutor; + private final Transitions mTransitions; private final InitImpl mImpl = new InitImpl(); @@ -50,6 +51,7 @@ public class ShellInitImpl { Optional legacySplitScreenOptional, Optional appPairsOptional, FullscreenTaskListener fullscreenTaskListener, + Transitions transitions, ShellExecutor mainExecutor) { return new ShellInitImpl(displayImeController, dragAndDropController, @@ -57,6 +59,7 @@ public class ShellInitImpl { legacySplitScreenOptional, appPairsOptional, fullscreenTaskListener, + transitions, mainExecutor).mImpl; } @@ -66,6 +69,7 @@ public class ShellInitImpl { Optional legacySplitScreenOptional, Optional appPairsOptional, FullscreenTaskListener fullscreenTaskListener, + Transitions transitions, ShellExecutor mainExecutor) { mDisplayImeController = displayImeController; mDragAndDropController = dragAndDropController; @@ -73,6 +77,7 @@ public class ShellInitImpl { mLegacySplitScreenOptional = legacySplitScreenOptional; mAppPairsOptional = appPairsOptional; mFullscreenTaskListener = fullscreenTaskListener; + mTransitions = transitions; mMainExecutor = mainExecutor; } @@ -89,6 +94,10 @@ public class ShellInitImpl { // Bind the splitscreen impl to the drag drop controller mDragAndDropController.initialize(mLegacySplitScreenOptional); + + if (Transitions.ENABLE_SHELL_TRANSITIONS) { + mTransitions.register(mShellTaskOrganizer); + } } @ExternalThread diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java index 9e1f0a2ed4935..a785cffb3df06 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java @@ -43,7 +43,6 @@ import android.window.WindowContainerTransaction; import com.android.internal.policy.DividerSnapAlgorithm; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.Transitions; import com.android.wm.shell.common.DisplayChangeController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayImeController; @@ -54,6 +53,7 @@ import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.TaskStackListenerCallback; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.TransactionPool; +import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.lang.ref.WeakReference; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenTaskListener.java index 3ed070b40816d..5a493c234ce3c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenTaskListener.java @@ -38,8 +38,8 @@ import androidx.annotation.NonNull; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.Transitions; import com.android.wm.shell.common.SyncTransactionQueue; +import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.util.ArrayList; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/SplitScreenTransitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/SplitScreenTransitions.java index 93520c0b59dee..94b2cc0455bdc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/SplitScreenTransitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/SplitScreenTransitions.java @@ -38,9 +38,9 @@ import android.view.WindowManager; import android.window.TransitionInfo; import android.window.WindowContainerTransaction; -import com.android.wm.shell.Transitions; import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.annotations.ExternalThread; +import com.android.wm.shell.transition.Transitions; import java.util.ArrayList; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/WindowManagerProxy.java b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/WindowManagerProxy.java index 90a8de02deb8e..ad05e6d3e6c48 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/WindowManagerProxy.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/WindowManagerProxy.java @@ -39,8 +39,8 @@ import android.window.WindowContainerTransaction; import android.window.WindowOrganizer; import com.android.internal.annotations.GuardedBy; -import com.android.wm.shell.Transitions; import com.android.wm.shell.common.SyncTransactionQueue; +import com.android.wm.shell.transition.Transitions; import java.util.ArrayList; import java.util.List; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java similarity index 98% rename from libs/WindowManager/Shell/src/com/android/wm/shell/Transitions.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java index 5213f6c80989c..7ce71b0a11589 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/Transitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2021 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. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.wm.shell; +package com.android.wm.shell.transition; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CLOSE; @@ -42,6 +42,7 @@ import android.window.WindowOrganizer; import androidx.annotation.BinderThread; import com.android.internal.protolog.common.ProtoLog; +import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.protolog.ShellProtoLogGroup; @@ -82,6 +83,7 @@ public class Transitions { mPlayerImpl = new TransitionPlayerImpl(); } + /** Register this transition handler with Core */ public void register(ShellTaskOrganizer taskOrganizer) { taskOrganizer.registerTransitionPlayer(mPlayerImpl); } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java index 1d3f26e730806..e20cd44974bba 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/TvWMShellModule.java @@ -21,7 +21,6 @@ import android.view.IWindowManager; import com.android.systemui.dagger.WMSingleton; import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.Transitions; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayImeController; import com.android.wm.shell.common.ShellExecutor; @@ -32,6 +31,7 @@ import com.android.wm.shell.common.TransactionPool; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.legacysplitscreen.LegacySplitScreen; import com.android.wm.shell.legacysplitscreen.LegacySplitScreenController; +import com.android.wm.shell.transition.Transitions; import dagger.Module; import dagger.Provides; diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java index b0bb3fd88ae59..572b15d5215aa 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java @@ -42,7 +42,6 @@ import com.android.wm.shell.ShellInitImpl; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.TaskViewFactory; import com.android.wm.shell.TaskViewFactoryController; -import com.android.wm.shell.Transitions; import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.apppairs.AppPairs; import com.android.wm.shell.bubbles.BubbleController; @@ -71,6 +70,7 @@ import com.android.wm.shell.pip.PipSurfaceTransactionHelper; import com.android.wm.shell.pip.PipUiEventLogger; import com.android.wm.shell.pip.phone.PipAppOpsListener; import com.android.wm.shell.pip.phone.PipTouchHandler; +import com.android.wm.shell.transition.Transitions; import java.util.Optional; @@ -176,6 +176,7 @@ public abstract class WMShellBaseModule { Optional legacySplitScreenOptional, Optional appPairsOptional, FullscreenTaskListener fullscreenTaskListener, + Transitions transitions, @ShellMainThread ShellExecutor shellMainExecutor) { return ShellInitImpl.create(displayImeController, dragAndDropController, @@ -183,6 +184,7 @@ public abstract class WMShellBaseModule { legacySplitScreenOptional, appPairsOptional, fullscreenTaskListener, + transitions, shellMainExecutor); } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java index 509419e5d11c8..e635e17088419 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java @@ -17,13 +17,10 @@ package com.android.systemui.wmshell; import android.content.Context; -import android.os.Handler; import android.view.IWindowManager; import com.android.systemui.dagger.WMSingleton; -import com.android.systemui.dagger.qualifiers.Main; import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.Transitions; import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.apppairs.AppPairs; import com.android.wm.shell.apppairs.AppPairsController; @@ -49,9 +46,9 @@ import com.android.wm.shell.pip.phone.PhonePipMenuController; import com.android.wm.shell.pip.phone.PipAppOpsListener; import com.android.wm.shell.pip.phone.PipController; import com.android.wm.shell.pip.phone.PipTouchHandler; +import com.android.wm.shell.transition.Transitions; import java.util.Optional; -import java.util.concurrent.Executor; import dagger.Module; import dagger.Provides;