From 884719cd668a631b08b19e90f83d4db92a553738 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Thu, 14 Jan 2021 07:29:26 -0800 Subject: [PATCH] Make new split-screen module optiional So we don't initialize it on devices that don't support multi-window mode. Fixes: 177446604 Test: builds Change-Id: Ib9b69a1b2e89a19574d97dd86d423225b3ab3e82 --- .../systemui/wmshell/WMShellBaseModule.java | 16 ++++++++++++++-- .../android/systemui/wmshell/WMShellModule.java | 10 +--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java index a44fcec69e6a5..1b5877f9da660 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java @@ -19,6 +19,7 @@ package com.android.systemui.wmshell; import static android.os.Process.THREAD_PRIORITY_DISPLAY; import android.animation.AnimationHandler; +import android.app.ActivityTaskManager; import android.app.IActivityManager; import android.content.Context; import android.content.pm.LauncherApps; @@ -71,6 +72,7 @@ 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.splitscreen.SplitScreen; +import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.transition.Transitions; import java.util.Optional; @@ -310,8 +312,18 @@ public abstract class WMShellBaseModule { @BindsOptionalOf abstract LegacySplitScreen optionalLegacySplitScreen(); - @BindsOptionalOf - abstract SplitScreen optionalSplitScreen(); + @WMSingleton + @Provides + static Optional provideSplitScreen(ShellTaskOrganizer shellTaskOrganizer, + SyncTransactionQueue syncQueue, Context context, + RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { + if (ActivityTaskManager.supportsSplitScreenMultiWindow(context)) { + return Optional.of(new SplitScreenController(shellTaskOrganizer, syncQueue, context, + rootTaskDisplayAreaOrganizer)); + } else { + return Optional.empty(); + } + } @BindsOptionalOf abstract AppPairs optionalAppPairs(); diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java index ee761691a97db..8105250f0ca0d 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellModule.java @@ -17,6 +17,7 @@ package com.android.systemui.wmshell; import android.animation.AnimationHandler; +import android.app.ActivityTaskManager; import android.content.Context; import android.view.IWindowManager; @@ -87,15 +88,6 @@ public class WMShellModule { taskStackListener, transitions, mainExecutor, sfVsyncAnimationHandler); } - @WMSingleton - @Provides - static SplitScreen provideSplitScreen(ShellTaskOrganizer shellTaskOrganizer, - SyncTransactionQueue syncQueue, Context context, - RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { - return new SplitScreenController(shellTaskOrganizer, syncQueue, context, - rootTaskDisplayAreaOrganizer); - } - @WMSingleton @Provides static AppPairs provideAppPairs(ShellTaskOrganizer shellTaskOrganizer,