Loading libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +11 −6 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.wm.shell.compatui.api.CompatUIEvent; import com.android.wm.shell.compatui.api.CompatUIHandler; import com.android.wm.shell.compatui.api.CompatUIInfo; import com.android.wm.shell.compatui.impl.CompatUIEvents.SizeCompatRestartButtonClicked; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.sysui.KeyguardChangeListener; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; Loading @@ -65,6 +66,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; Loading Loading @@ -194,7 +196,7 @@ public class CompatUIController implements OnDisplaysChangedListener, private final CompatUIStatusManager mCompatUIStatusManager; @NonNull private final IntPredicate mInDesktopModePredicate; private final Optional<DesktopUserRepositories> mDesktopUserRepositories; public CompatUIController(@NonNull Context context, @NonNull ShellInit shellInit, Loading @@ -210,7 +212,7 @@ public class CompatUIController implements OnDisplaysChangedListener, @NonNull CompatUIShellCommandHandler compatUIShellCommandHandler, @NonNull AccessibilityManager accessibilityManager, @NonNull CompatUIStatusManager compatUIStatusManager, @NonNull IntPredicate isDesktopModeEnablePredicate) { @NonNull Optional<DesktopUserRepositories> desktopUserRepositories) { mContext = context; mShellController = shellController; mDisplayController = displayController; Loading @@ -226,7 +228,7 @@ public class CompatUIController implements OnDisplaysChangedListener, mDisappearTimeSupplier = flags -> accessibilityManager.getRecommendedTimeoutMillis( DISAPPEAR_DELAY_MS, flags); mCompatUIStatusManager = compatUIStatusManager; mInDesktopModePredicate = isDesktopModeEnablePredicate; mDesktopUserRepositories = desktopUserRepositories; shellInit.addInitCallback(this::onInit, this); } Loading Loading @@ -267,7 +269,6 @@ public class CompatUIController implements OnDisplaysChangedListener, updateActiveTaskInfo(taskInfo); } // We're showing the first reachability education so we ignore incoming TaskInfo // until the education flow has completed or we double tap. The double-tap // basically cancel all the onboarding flow. We don't have to ignore events in case Loading Loading @@ -865,7 +866,11 @@ public class CompatUIController implements OnDisplaysChangedListener, } private boolean isInDesktopMode(@Nullable TaskInfo taskInfo) { return taskInfo != null && Flags.skipCompatUiEducationInDesktopMode() && mInDesktopModePredicate.test(taskInfo.displayId); if (mDesktopUserRepositories.isEmpty() || taskInfo == null) { return false; } boolean isDesktopModeShowing = mDesktopUserRepositories.get().getCurrent() .getVisibleTaskCount(taskInfo.displayId) > 0; return Flags.skipCompatUiEducationInDesktopMode() && isDesktopModeShowing; } } libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java +9 −14 Original line number Diff line number Diff line Loading @@ -87,8 +87,8 @@ import com.android.wm.shell.compatui.impl.DefaultCompatUIHandler; import com.android.wm.shell.compatui.impl.DefaultCompatUIRepository; import com.android.wm.shell.compatui.impl.DefaultComponentIdGenerator; import com.android.wm.shell.desktopmode.DesktopMode; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopTasksController; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.displayareahelper.DisplayAreaHelper; import com.android.wm.shell.displayareahelper.DisplayAreaHelperController; import com.android.wm.shell.freeform.FreeformComponents; Loading Loading @@ -138,7 +138,6 @@ import dagger.Module; import dagger.Provides; import java.util.Optional; import java.util.function.IntPredicate; /** * Provides basic dependencies from {@link com.android.wm.shell}, these dependencies are only Loading Loading @@ -267,7 +266,7 @@ public abstract class WMShellBaseModule { Lazy<CompatUIShellCommandHandler> compatUIShellCommandHandler, Lazy<AccessibilityManager> accessibilityManager, CompatUIRepository compatUIRepository, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, @NonNull CompatUIState compatUIState, @NonNull CompatUIComponentIdGenerator componentIdGenerator, @NonNull CompatUIComponentFactory compatUIComponentFactory, Loading @@ -280,10 +279,6 @@ public abstract class WMShellBaseModule { new DefaultCompatUIHandler(compatUIRepository, compatUIState, componentIdGenerator, compatUIComponentFactory, mainExecutor)); } final IntPredicate inDesktopModePredicate = desktopRepository.<IntPredicate>map(modeTaskRepository -> displayId -> modeTaskRepository.getVisibleTaskCount(displayId) > 0) .orElseGet(() -> displayId -> false); return Optional.of( new CompatUIController( context, Loading @@ -300,7 +295,7 @@ public abstract class WMShellBaseModule { compatUIShellCommandHandler.get(), accessibilityManager.get(), compatUIStatusManager, inDesktopModePredicate)); desktopUserRepositories)); } @WMSingleton Loading Loading @@ -704,14 +699,14 @@ public abstract class WMShellBaseModule { ShellCommandHandler shellCommandHandler, TaskStackListenerImpl taskStackListener, ActivityTaskManager activityTaskManager, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, TaskStackTransitionObserver taskStackTransitionObserver, @ShellMainThread ShellExecutor mainExecutor ) { return Optional.ofNullable( RecentTasksController.create(context, shellInit, shellController, shellCommandHandler, taskStackListener, activityTaskManager, desktopRepository, taskStackTransitionObserver, mainExecutor)); desktopUserRepositories, taskStackTransitionObserver, mainExecutor)); } @BindsOptionalOf Loading Loading @@ -1002,16 +997,16 @@ public abstract class WMShellBaseModule { @BindsOptionalOf @DynamicOverride abstract DesktopRepository optionalDesktopRepository(); abstract DesktopUserRepositories optionalDesktopUserRepositories(); @WMSingleton @Provides static Optional<DesktopRepository> provideDesktopRepository(Context context, @DynamicOverride Optional<Lazy<DesktopRepository>> desktopRepository) { static Optional<DesktopUserRepositories> provideDesktopUserRepositories(Context context, @DynamicOverride Optional<Lazy<DesktopUserRepositories>> desktopUserRepositories) { // Use optional-of-lazy for the dependency that this provider relies on. // Lazy ensures that this provider will not be the cause the dependency is created // when it will not be returned due to the condition below. return desktopRepository.flatMap((lazy) -> { return desktopUserRepositories.flatMap((lazy) -> { if (DesktopModeStatus.canEnterDesktopMode(context)) { return Optional.of(lazy.get()); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +28 −26 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ import com.android.wm.shell.desktopmode.DesktopTaskChangeListener; import com.android.wm.shell.desktopmode.DesktopTasksController; import com.android.wm.shell.desktopmode.DesktopTasksLimiter; import com.android.wm.shell.desktopmode.DesktopTasksTransitionObserver; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.desktopmode.DragToDesktopTransitionHandler; import com.android.wm.shell.desktopmode.EnterDesktopTaskTransitionHandler; import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler; Loading Loading @@ -363,7 +364,7 @@ public abstract class WMShellModule { Context context, ShellInit shellInit, ShellTaskOrganizer shellTaskOrganizer, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, Optional<DesktopTasksController> desktopTasksController, LaunchAdjacentController launchAdjacentController, WindowDecorViewModel windowDecorViewModel, Loading @@ -375,7 +376,7 @@ public abstract class WMShellModule { context, init, shellTaskOrganizer, desktopRepository, desktopUserRepositories, desktopTasksController, launchAdjacentController, windowDecorViewModel, Loading Loading @@ -691,7 +692,7 @@ public abstract class WMShellModule { DesktopModeDragAndDropTransitionHandler desktopModeDragAndDropTransitionHandler, ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler, DragToDesktopTransitionHandler dragToDesktopTransitionHandler, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, Optional<DesktopImmersiveController> desktopImmersiveController, DesktopModeLoggerTransitionObserver desktopModeLoggerTransitionObserver, LaunchAdjacentController launchAdjacentController, Loading Loading @@ -727,7 +728,7 @@ public abstract class WMShellModule { toggleResizeDesktopTaskTransitionHandler, dragToDesktopTransitionHandler, desktopImmersiveController.get(), desktopRepository, desktopUserRepositories, recentsTransitionHandler, multiInstanceHelper, mainExecutor, Loading @@ -750,7 +751,7 @@ public abstract class WMShellModule { ShellTaskOrganizer shellTaskOrganizer, ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler, ReturnToDragStartAnimator returnToDragStartAnimator, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, DesktopModeEventLogger desktopModeEventLogger) { return new DesktopTilingDecorViewModel( context, Loading @@ -761,7 +762,7 @@ public abstract class WMShellModule { shellTaskOrganizer, toggleResizeDesktopTaskTransitionHandler, returnToDragStartAnimator, desktopRepository, desktopUserRepositories, desktopModeEventLogger ); } Loading @@ -769,10 +770,10 @@ public abstract class WMShellModule { @WMSingleton @Provides static Optional<TaskChangeListener> provideDesktopTaskChangeListener( Context context, @DynamicOverride DesktopRepository desktopRepository) { Context context, @DynamicOverride DesktopUserRepositories desktopUserRepositories) { if (ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS.isTrue() && DesktopModeStatus.canEnterDesktopMode(context)) { return Optional.of(new DesktopTaskChangeListener(desktopRepository)); return Optional.of(new DesktopTaskChangeListener(desktopUserRepositories)); } return Optional.empty(); } Loading @@ -782,7 +783,7 @@ public abstract class WMShellModule { static Optional<DesktopTasksLimiter> provideDesktopTasksLimiter( Context context, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, ShellTaskOrganizer shellTaskOrganizer, InteractionJankMonitor interactionJankMonitor, @ShellMainThread Handler handler) { Loading @@ -795,7 +796,7 @@ public abstract class WMShellModule { return Optional.of( new DesktopTasksLimiter( transitions, desktopRepository, desktopUserRepositories, shellTaskOrganizer, maxTaskLimit, interactionJankMonitor, Loading @@ -809,7 +810,7 @@ public abstract class WMShellModule { Context context, ShellInit shellInit, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, DisplayController displayController, ShellTaskOrganizer shellTaskOrganizer, ShellCommandHandler shellCommandHandler) { Loading @@ -818,7 +819,7 @@ public abstract class WMShellModule { new DesktopImmersiveController( shellInit, transitions, desktopRepository, desktopUserRepositories, displayController, shellTaskOrganizer, shellCommandHandler)); Loading Loading @@ -883,7 +884,7 @@ public abstract class WMShellModule { ShellCommandHandler shellCommandHandler, IWindowManager windowManager, ShellTaskOrganizer taskOrganizer, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, DisplayController displayController, ShellController shellController, DisplayInsetsController displayInsetsController, Loading @@ -910,7 +911,7 @@ public abstract class WMShellModule { } return Optional.of(new DesktopModeWindowDecorViewModel(context, shellExecutor, mainHandler, mainChoreographer, bgExecutor, shellInit, shellCommandHandler, windowManager, taskOrganizer, desktopRepository, displayController, shellController, taskOrganizer, desktopUserRepositories, displayController, shellController, displayInsetsController, syncQueue, transitions, desktopTasksController, desktopImmersiveController.get(), rootTaskDisplayAreaOrganizer, interactionJankMonitor, genericLinksParser, Loading @@ -928,7 +929,7 @@ public abstract class WMShellModule { @ShellAnimationThread ShellExecutor animExecutor, ShellInit shellInit, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository) { @DynamicOverride DesktopUserRepositories desktopUserRepositories) { if (!DesktopModeStatus.canEnterDesktopMode(context) || !ENABLE_DESKTOP_WINDOWING_MODALS_POLICY.isTrue() || !Flags.enableDesktopSystemDialogsTransitions()) { Loading @@ -937,7 +938,7 @@ public abstract class WMShellModule { return Optional.of( new SystemModalsTransitionHandler( context, mainExecutor, animExecutor, shellInit, transitions, desktopRepository)); desktopUserRepositories)); } @WMSingleton Loading Loading @@ -996,16 +997,17 @@ public abstract class WMShellModule { @WMSingleton @Provides @DynamicOverride static DesktopRepository provideDesktopRepository( static DesktopUserRepositories provideDesktopUserRepositories( Context context, ShellInit shellInit, DesktopPersistentRepository desktopPersistentRepository, DesktopRepositoryInitializer desktopRepositoryInitializer, @ShellMainThread CoroutineScope mainScope @ShellMainThread CoroutineScope mainScope, UserManager userManager ) { return new DesktopRepository(context, shellInit, desktopPersistentRepository, return new DesktopUserRepositories(context, shellInit, desktopPersistentRepository, desktopRepositoryInitializer, mainScope); mainScope, userManager); } @WMSingleton Loading @@ -1016,7 +1018,7 @@ public abstract class WMShellModule { ShellTaskOrganizer shellTaskOrganizer, TaskStackListenerImpl taskStackListener, ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler, @DynamicOverride DesktopRepository desktopRepository) { @DynamicOverride DesktopUserRepositories desktopUserRepositories) { if (DesktopModeStatus.canEnterDesktopMode(context)) { return Optional.of( new DesktopActivityOrientationChangeHandler( Loading @@ -1025,7 +1027,7 @@ public abstract class WMShellModule { shellTaskOrganizer, taskStackListener, toggleResizeDesktopTaskTransitionHandler, desktopRepository)); desktopUserRepositories)); } return Optional.empty(); } Loading @@ -1034,12 +1036,12 @@ public abstract class WMShellModule { @Provides static Optional<DesktopTasksTransitionObserver> provideDesktopTasksTransitionObserver( Context context, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, Transitions transitions, ShellTaskOrganizer shellTaskOrganizer, Optional<DesktopMixedTransitionHandler> desktopMixedTransitionHandler, ShellInit shellInit) { return desktopRepository.flatMap( return desktopUserRepositories.flatMap( repository -> Optional.of( new DesktopTasksTransitionObserver( Loading @@ -1056,7 +1058,7 @@ public abstract class WMShellModule { static Optional<DesktopMixedTransitionHandler> provideDesktopMixedTransitionHandler( Context context, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, FreeformTaskTransitionHandler freeformTaskTransitionHandler, CloseDesktopTaskTransitionHandler closeDesktopTaskTransitionHandler, Optional<DesktopImmersiveController> desktopImmersiveController, Loading @@ -1074,7 +1076,7 @@ public abstract class WMShellModule { new DesktopMixedTransitionHandler( context, transitions, desktopRepository, desktopUserRepositories, freeformTaskTransitionHandler, closeDesktopTaskTransitionHandler, desktopImmersiveController.get(), Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +3 −3 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import com.android.wm.shell.common.pip.PipUiEventLogger; import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipParamsChangedForwarder; Loading Loading @@ -171,7 +171,7 @@ public abstract class Pip1Module { PipParamsChangedForwarder pipParamsChangedForwarder, Optional<SplitScreenController> splitScreenControllerOptional, Optional<PipPerfHintController> pipPerfHintControllerOptional, Optional<DesktopRepository> desktopRepositoryOptional, Optional<DesktopUserRepositories> desktopUserRepositoriesOptional, RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer, DisplayController displayController, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, Loading @@ -181,7 +181,7 @@ public abstract class Pip1Module { pipBoundsAlgorithm, menuPhoneController, pipAnimationController, pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder, splitScreenControllerOptional, pipPerfHintControllerOptional, desktopRepositoryOptional, rootTaskDisplayAreaOrganizer, displayController, desktopUserRepositoriesOptional, rootTaskDisplayAreaOrganizer, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +3 −3 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.pip2.phone.PhonePipMenuController; import com.android.wm.shell.pip2.phone.PipController; import com.android.wm.shell.pip2.phone.PipMotionHelper; Loading Loading @@ -131,10 +131,10 @@ public abstract class Pip2Module { PipBoundsState pipBoundsState, @ShellMainThread ShellExecutor mainExecutor, PipTransitionState pipTransitionState, Optional<DesktopRepository> desktopRepositoryOptional, Optional<DesktopUserRepositories> desktopUserRepositoriesOptional, RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { return new PipScheduler(context, pipBoundsState, mainExecutor, pipTransitionState, desktopRepositoryOptional, rootTaskDisplayAreaOrganizer); desktopUserRepositoriesOptional, rootTaskDisplayAreaOrganizer); } @WMSingleton Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +11 −6 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.wm.shell.compatui.api.CompatUIEvent; import com.android.wm.shell.compatui.api.CompatUIHandler; import com.android.wm.shell.compatui.api.CompatUIInfo; import com.android.wm.shell.compatui.impl.CompatUIEvents.SizeCompatRestartButtonClicked; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.sysui.KeyguardChangeListener; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; Loading @@ -65,6 +66,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.function.Consumer; import java.util.function.Function; Loading Loading @@ -194,7 +196,7 @@ public class CompatUIController implements OnDisplaysChangedListener, private final CompatUIStatusManager mCompatUIStatusManager; @NonNull private final IntPredicate mInDesktopModePredicate; private final Optional<DesktopUserRepositories> mDesktopUserRepositories; public CompatUIController(@NonNull Context context, @NonNull ShellInit shellInit, Loading @@ -210,7 +212,7 @@ public class CompatUIController implements OnDisplaysChangedListener, @NonNull CompatUIShellCommandHandler compatUIShellCommandHandler, @NonNull AccessibilityManager accessibilityManager, @NonNull CompatUIStatusManager compatUIStatusManager, @NonNull IntPredicate isDesktopModeEnablePredicate) { @NonNull Optional<DesktopUserRepositories> desktopUserRepositories) { mContext = context; mShellController = shellController; mDisplayController = displayController; Loading @@ -226,7 +228,7 @@ public class CompatUIController implements OnDisplaysChangedListener, mDisappearTimeSupplier = flags -> accessibilityManager.getRecommendedTimeoutMillis( DISAPPEAR_DELAY_MS, flags); mCompatUIStatusManager = compatUIStatusManager; mInDesktopModePredicate = isDesktopModeEnablePredicate; mDesktopUserRepositories = desktopUserRepositories; shellInit.addInitCallback(this::onInit, this); } Loading Loading @@ -267,7 +269,6 @@ public class CompatUIController implements OnDisplaysChangedListener, updateActiveTaskInfo(taskInfo); } // We're showing the first reachability education so we ignore incoming TaskInfo // until the education flow has completed or we double tap. The double-tap // basically cancel all the onboarding flow. We don't have to ignore events in case Loading Loading @@ -865,7 +866,11 @@ public class CompatUIController implements OnDisplaysChangedListener, } private boolean isInDesktopMode(@Nullable TaskInfo taskInfo) { return taskInfo != null && Flags.skipCompatUiEducationInDesktopMode() && mInDesktopModePredicate.test(taskInfo.displayId); if (mDesktopUserRepositories.isEmpty() || taskInfo == null) { return false; } boolean isDesktopModeShowing = mDesktopUserRepositories.get().getCurrent() .getVisibleTaskCount(taskInfo.displayId) > 0; return Flags.skipCompatUiEducationInDesktopMode() && isDesktopModeShowing; } }
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java +9 −14 Original line number Diff line number Diff line Loading @@ -87,8 +87,8 @@ import com.android.wm.shell.compatui.impl.DefaultCompatUIHandler; import com.android.wm.shell.compatui.impl.DefaultCompatUIRepository; import com.android.wm.shell.compatui.impl.DefaultComponentIdGenerator; import com.android.wm.shell.desktopmode.DesktopMode; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopTasksController; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.displayareahelper.DisplayAreaHelper; import com.android.wm.shell.displayareahelper.DisplayAreaHelperController; import com.android.wm.shell.freeform.FreeformComponents; Loading Loading @@ -138,7 +138,6 @@ import dagger.Module; import dagger.Provides; import java.util.Optional; import java.util.function.IntPredicate; /** * Provides basic dependencies from {@link com.android.wm.shell}, these dependencies are only Loading Loading @@ -267,7 +266,7 @@ public abstract class WMShellBaseModule { Lazy<CompatUIShellCommandHandler> compatUIShellCommandHandler, Lazy<AccessibilityManager> accessibilityManager, CompatUIRepository compatUIRepository, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, @NonNull CompatUIState compatUIState, @NonNull CompatUIComponentIdGenerator componentIdGenerator, @NonNull CompatUIComponentFactory compatUIComponentFactory, Loading @@ -280,10 +279,6 @@ public abstract class WMShellBaseModule { new DefaultCompatUIHandler(compatUIRepository, compatUIState, componentIdGenerator, compatUIComponentFactory, mainExecutor)); } final IntPredicate inDesktopModePredicate = desktopRepository.<IntPredicate>map(modeTaskRepository -> displayId -> modeTaskRepository.getVisibleTaskCount(displayId) > 0) .orElseGet(() -> displayId -> false); return Optional.of( new CompatUIController( context, Loading @@ -300,7 +295,7 @@ public abstract class WMShellBaseModule { compatUIShellCommandHandler.get(), accessibilityManager.get(), compatUIStatusManager, inDesktopModePredicate)); desktopUserRepositories)); } @WMSingleton Loading Loading @@ -704,14 +699,14 @@ public abstract class WMShellBaseModule { ShellCommandHandler shellCommandHandler, TaskStackListenerImpl taskStackListener, ActivityTaskManager activityTaskManager, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, TaskStackTransitionObserver taskStackTransitionObserver, @ShellMainThread ShellExecutor mainExecutor ) { return Optional.ofNullable( RecentTasksController.create(context, shellInit, shellController, shellCommandHandler, taskStackListener, activityTaskManager, desktopRepository, taskStackTransitionObserver, mainExecutor)); desktopUserRepositories, taskStackTransitionObserver, mainExecutor)); } @BindsOptionalOf Loading Loading @@ -1002,16 +997,16 @@ public abstract class WMShellBaseModule { @BindsOptionalOf @DynamicOverride abstract DesktopRepository optionalDesktopRepository(); abstract DesktopUserRepositories optionalDesktopUserRepositories(); @WMSingleton @Provides static Optional<DesktopRepository> provideDesktopRepository(Context context, @DynamicOverride Optional<Lazy<DesktopRepository>> desktopRepository) { static Optional<DesktopUserRepositories> provideDesktopUserRepositories(Context context, @DynamicOverride Optional<Lazy<DesktopUserRepositories>> desktopUserRepositories) { // Use optional-of-lazy for the dependency that this provider relies on. // Lazy ensures that this provider will not be the cause the dependency is created // when it will not be returned due to the condition below. return desktopRepository.flatMap((lazy) -> { return desktopUserRepositories.flatMap((lazy) -> { if (DesktopModeStatus.canEnterDesktopMode(context)) { return Optional.of(lazy.get()); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +28 −26 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ import com.android.wm.shell.desktopmode.DesktopTaskChangeListener; import com.android.wm.shell.desktopmode.DesktopTasksController; import com.android.wm.shell.desktopmode.DesktopTasksLimiter; import com.android.wm.shell.desktopmode.DesktopTasksTransitionObserver; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.desktopmode.DragToDesktopTransitionHandler; import com.android.wm.shell.desktopmode.EnterDesktopTaskTransitionHandler; import com.android.wm.shell.desktopmode.ExitDesktopTaskTransitionHandler; Loading Loading @@ -363,7 +364,7 @@ public abstract class WMShellModule { Context context, ShellInit shellInit, ShellTaskOrganizer shellTaskOrganizer, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, Optional<DesktopTasksController> desktopTasksController, LaunchAdjacentController launchAdjacentController, WindowDecorViewModel windowDecorViewModel, Loading @@ -375,7 +376,7 @@ public abstract class WMShellModule { context, init, shellTaskOrganizer, desktopRepository, desktopUserRepositories, desktopTasksController, launchAdjacentController, windowDecorViewModel, Loading Loading @@ -691,7 +692,7 @@ public abstract class WMShellModule { DesktopModeDragAndDropTransitionHandler desktopModeDragAndDropTransitionHandler, ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler, DragToDesktopTransitionHandler dragToDesktopTransitionHandler, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, Optional<DesktopImmersiveController> desktopImmersiveController, DesktopModeLoggerTransitionObserver desktopModeLoggerTransitionObserver, LaunchAdjacentController launchAdjacentController, Loading Loading @@ -727,7 +728,7 @@ public abstract class WMShellModule { toggleResizeDesktopTaskTransitionHandler, dragToDesktopTransitionHandler, desktopImmersiveController.get(), desktopRepository, desktopUserRepositories, recentsTransitionHandler, multiInstanceHelper, mainExecutor, Loading @@ -750,7 +751,7 @@ public abstract class WMShellModule { ShellTaskOrganizer shellTaskOrganizer, ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler, ReturnToDragStartAnimator returnToDragStartAnimator, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, DesktopModeEventLogger desktopModeEventLogger) { return new DesktopTilingDecorViewModel( context, Loading @@ -761,7 +762,7 @@ public abstract class WMShellModule { shellTaskOrganizer, toggleResizeDesktopTaskTransitionHandler, returnToDragStartAnimator, desktopRepository, desktopUserRepositories, desktopModeEventLogger ); } Loading @@ -769,10 +770,10 @@ public abstract class WMShellModule { @WMSingleton @Provides static Optional<TaskChangeListener> provideDesktopTaskChangeListener( Context context, @DynamicOverride DesktopRepository desktopRepository) { Context context, @DynamicOverride DesktopUserRepositories desktopUserRepositories) { if (ENABLE_WINDOWING_TRANSITION_HANDLERS_OBSERVERS.isTrue() && DesktopModeStatus.canEnterDesktopMode(context)) { return Optional.of(new DesktopTaskChangeListener(desktopRepository)); return Optional.of(new DesktopTaskChangeListener(desktopUserRepositories)); } return Optional.empty(); } Loading @@ -782,7 +783,7 @@ public abstract class WMShellModule { static Optional<DesktopTasksLimiter> provideDesktopTasksLimiter( Context context, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, ShellTaskOrganizer shellTaskOrganizer, InteractionJankMonitor interactionJankMonitor, @ShellMainThread Handler handler) { Loading @@ -795,7 +796,7 @@ public abstract class WMShellModule { return Optional.of( new DesktopTasksLimiter( transitions, desktopRepository, desktopUserRepositories, shellTaskOrganizer, maxTaskLimit, interactionJankMonitor, Loading @@ -809,7 +810,7 @@ public abstract class WMShellModule { Context context, ShellInit shellInit, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, DisplayController displayController, ShellTaskOrganizer shellTaskOrganizer, ShellCommandHandler shellCommandHandler) { Loading @@ -818,7 +819,7 @@ public abstract class WMShellModule { new DesktopImmersiveController( shellInit, transitions, desktopRepository, desktopUserRepositories, displayController, shellTaskOrganizer, shellCommandHandler)); Loading Loading @@ -883,7 +884,7 @@ public abstract class WMShellModule { ShellCommandHandler shellCommandHandler, IWindowManager windowManager, ShellTaskOrganizer taskOrganizer, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, DisplayController displayController, ShellController shellController, DisplayInsetsController displayInsetsController, Loading @@ -910,7 +911,7 @@ public abstract class WMShellModule { } return Optional.of(new DesktopModeWindowDecorViewModel(context, shellExecutor, mainHandler, mainChoreographer, bgExecutor, shellInit, shellCommandHandler, windowManager, taskOrganizer, desktopRepository, displayController, shellController, taskOrganizer, desktopUserRepositories, displayController, shellController, displayInsetsController, syncQueue, transitions, desktopTasksController, desktopImmersiveController.get(), rootTaskDisplayAreaOrganizer, interactionJankMonitor, genericLinksParser, Loading @@ -928,7 +929,7 @@ public abstract class WMShellModule { @ShellAnimationThread ShellExecutor animExecutor, ShellInit shellInit, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository) { @DynamicOverride DesktopUserRepositories desktopUserRepositories) { if (!DesktopModeStatus.canEnterDesktopMode(context) || !ENABLE_DESKTOP_WINDOWING_MODALS_POLICY.isTrue() || !Flags.enableDesktopSystemDialogsTransitions()) { Loading @@ -937,7 +938,7 @@ public abstract class WMShellModule { return Optional.of( new SystemModalsTransitionHandler( context, mainExecutor, animExecutor, shellInit, transitions, desktopRepository)); desktopUserRepositories)); } @WMSingleton Loading Loading @@ -996,16 +997,17 @@ public abstract class WMShellModule { @WMSingleton @Provides @DynamicOverride static DesktopRepository provideDesktopRepository( static DesktopUserRepositories provideDesktopUserRepositories( Context context, ShellInit shellInit, DesktopPersistentRepository desktopPersistentRepository, DesktopRepositoryInitializer desktopRepositoryInitializer, @ShellMainThread CoroutineScope mainScope @ShellMainThread CoroutineScope mainScope, UserManager userManager ) { return new DesktopRepository(context, shellInit, desktopPersistentRepository, return new DesktopUserRepositories(context, shellInit, desktopPersistentRepository, desktopRepositoryInitializer, mainScope); mainScope, userManager); } @WMSingleton Loading @@ -1016,7 +1018,7 @@ public abstract class WMShellModule { ShellTaskOrganizer shellTaskOrganizer, TaskStackListenerImpl taskStackListener, ToggleResizeDesktopTaskTransitionHandler toggleResizeDesktopTaskTransitionHandler, @DynamicOverride DesktopRepository desktopRepository) { @DynamicOverride DesktopUserRepositories desktopUserRepositories) { if (DesktopModeStatus.canEnterDesktopMode(context)) { return Optional.of( new DesktopActivityOrientationChangeHandler( Loading @@ -1025,7 +1027,7 @@ public abstract class WMShellModule { shellTaskOrganizer, taskStackListener, toggleResizeDesktopTaskTransitionHandler, desktopRepository)); desktopUserRepositories)); } return Optional.empty(); } Loading @@ -1034,12 +1036,12 @@ public abstract class WMShellModule { @Provides static Optional<DesktopTasksTransitionObserver> provideDesktopTasksTransitionObserver( Context context, Optional<DesktopRepository> desktopRepository, Optional<DesktopUserRepositories> desktopUserRepositories, Transitions transitions, ShellTaskOrganizer shellTaskOrganizer, Optional<DesktopMixedTransitionHandler> desktopMixedTransitionHandler, ShellInit shellInit) { return desktopRepository.flatMap( return desktopUserRepositories.flatMap( repository -> Optional.of( new DesktopTasksTransitionObserver( Loading @@ -1056,7 +1058,7 @@ public abstract class WMShellModule { static Optional<DesktopMixedTransitionHandler> provideDesktopMixedTransitionHandler( Context context, Transitions transitions, @DynamicOverride DesktopRepository desktopRepository, @DynamicOverride DesktopUserRepositories desktopUserRepositories, FreeformTaskTransitionHandler freeformTaskTransitionHandler, CloseDesktopTaskTransitionHandler closeDesktopTaskTransitionHandler, Optional<DesktopImmersiveController> desktopImmersiveController, Loading @@ -1074,7 +1076,7 @@ public abstract class WMShellModule { new DesktopMixedTransitionHandler( context, transitions, desktopRepository, desktopUserRepositories, freeformTaskTransitionHandler, closeDesktopTaskTransitionHandler, desktopImmersiveController.get(), Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +3 −3 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ import com.android.wm.shell.common.pip.PipUiEventLogger; import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipParamsChangedForwarder; Loading Loading @@ -171,7 +171,7 @@ public abstract class Pip1Module { PipParamsChangedForwarder pipParamsChangedForwarder, Optional<SplitScreenController> splitScreenControllerOptional, Optional<PipPerfHintController> pipPerfHintControllerOptional, Optional<DesktopRepository> desktopRepositoryOptional, Optional<DesktopUserRepositories> desktopUserRepositoriesOptional, RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer, DisplayController displayController, PipUiEventLogger pipUiEventLogger, ShellTaskOrganizer shellTaskOrganizer, Loading @@ -181,7 +181,7 @@ public abstract class Pip1Module { pipBoundsAlgorithm, menuPhoneController, pipAnimationController, pipSurfaceTransactionHelper, pipTransitionController, pipParamsChangedForwarder, splitScreenControllerOptional, pipPerfHintControllerOptional, desktopRepositoryOptional, rootTaskDisplayAreaOrganizer, displayController, desktopUserRepositoriesOptional, rootTaskDisplayAreaOrganizer, displayController, pipUiEventLogger, shellTaskOrganizer, mainExecutor); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +3 −3 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.desktopmode.DesktopRepository; import com.android.wm.shell.desktopmode.DesktopUserRepositories; import com.android.wm.shell.pip2.phone.PhonePipMenuController; import com.android.wm.shell.pip2.phone.PipController; import com.android.wm.shell.pip2.phone.PipMotionHelper; Loading Loading @@ -131,10 +131,10 @@ public abstract class Pip2Module { PipBoundsState pipBoundsState, @ShellMainThread ShellExecutor mainExecutor, PipTransitionState pipTransitionState, Optional<DesktopRepository> desktopRepositoryOptional, Optional<DesktopUserRepositories> desktopUserRepositoriesOptional, RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { return new PipScheduler(context, pipBoundsState, mainExecutor, pipTransitionState, desktopRepositoryOptional, rootTaskDisplayAreaOrganizer); desktopUserRepositoriesOptional, rootTaskDisplayAreaOrganizer); } @WMSingleton Loading