diff options
| author | 2023-04-27 00:01:46 +0000 | |
|---|---|---|
| committer | 2023-04-27 00:01:46 +0000 | |
| commit | 2d094275ea4dc297e84066210a388fc9a8e1b31c (patch) | |
| tree | 26b2dd73baf557493db1633ec447c7f0c5ed0a29 | |
| parent | 2edc38ccd5c73b347b8532afbb5cad973701dafc (diff) | |
| parent | 3b05dde504958692b2a55da5e3f8ff6d3a7a36bd (diff) | |
Merge "Make DragAndDropController optional" into udc-dev
10 files changed, 40 insertions, 20 deletions
diff --git a/libs/WindowManager/Shell/res/values/config.xml b/libs/WindowManager/Shell/res/values/config.xml index 76eb0945d990..a3916b71592b 100644 --- a/libs/WindowManager/Shell/res/values/config.xml +++ b/libs/WindowManager/Shell/res/values/config.xml @@ -125,4 +125,7 @@ <!-- Whether the additional education about reachability is enabled --> <bool name="config_letterboxIsReachabilityEducationEnabled">false</bool> + + <!-- Whether DragAndDrop capability is enabled --> + <bool name="config_enableShellDragDrop">true</bool> </resources> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java index 21f02b10035b..3eb9fa2eef6b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java @@ -260,7 +260,7 @@ public class BubbleController implements ConfigurationChangeListener, /** One handed mode controller to register transition listener. */ private Optional<OneHandedController> mOneHandedOptional; /** Drag and drop controller to register listener for onDragStarted. */ - private DragAndDropController mDragAndDropController; + private Optional<DragAndDropController> mDragAndDropController; /** Used to send bubble events to launcher. */ private Bubbles.BubbleStateListener mBubbleStateListener; @@ -286,7 +286,7 @@ public class BubbleController implements ConfigurationChangeListener, BubblePositioner positioner, DisplayController displayController, Optional<OneHandedController> oneHandedOptional, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler, @ShellBackgroundThread ShellExecutor bgExecutor, @@ -469,7 +469,7 @@ public class BubbleController implements ConfigurationChangeListener, }); mOneHandedOptional.ifPresent(this::registerOneHandedState); - mDragAndDropController.addListener(this::collapseStack); + mDragAndDropController.ifPresent(controller -> controller.addListener(this::collapseStack)); // Clear out any persisted bubbles on disk that no longer have a valid user. List<UserInfo> users = mUserManager.getAliveUsers(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java index e9957fd4f4f1..12d51f54a09c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/TvWMShellModule.java @@ -41,11 +41,11 @@ import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.transition.Transitions; -import java.util.Optional; - import dagger.Module; import dagger.Provides; +import java.util.Optional; + /** * Provides dependencies from {@link com.android.wm.shell}, these dependencies are only * accessible from components within the WM subcomponent (can be explicitly exposed to the @@ -81,7 +81,7 @@ public class TvWMShellModule { DisplayController displayController, DisplayImeController displayImeController, DisplayInsetsController displayInsetsController, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, Transitions transitions, TransactionPool transactionPool, IconProvider iconProvider, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java index 9808c591592f..36d941bda663 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java @@ -186,15 +186,15 @@ public abstract class WMShellBaseModule { @WMSingleton @Provides - static DragAndDropController provideDragAndDropController(Context context, + static Optional<DragAndDropController> provideDragAndDropController(Context context, ShellInit shellInit, ShellController shellController, DisplayController displayController, UiEventLogger uiEventLogger, IconProvider iconProvider, @ShellMainThread ShellExecutor mainExecutor) { - return new DragAndDropController(context, shellInit, shellController, displayController, - uiEventLogger, iconProvider, mainExecutor); + return Optional.ofNullable(DragAndDropController.create(context, shellInit, shellController, + displayController, uiEventLogger, iconProvider, mainExecutor)); } @WMSingleton @@ -796,7 +796,7 @@ public abstract class WMShellBaseModule { DisplayController displayController, DisplayImeController displayImeController, DisplayInsetsController displayInsetsController, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropControllerOptional, ShellTaskOrganizer shellTaskOrganizer, Optional<BubbleController> bubblesOptional, Optional<SplitScreenController> splitScreenOptional, 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 2f0f56cfdfb0..f3130d358ec1 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 @@ -171,7 +171,7 @@ public abstract class WMShellModule { BubblePositioner positioner, DisplayController displayController, @DynamicOverride Optional<OneHandedController> oneHandedOptional, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler, @ShellBackgroundThread ShellExecutor bgExecutor, @@ -320,7 +320,7 @@ public abstract class WMShellModule { DisplayController displayController, DisplayImeController displayImeController, DisplayInsetsController displayInsetsController, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, Transitions transitions, TransactionPool transactionPool, IconProvider iconProvider, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java index 4cfaae6e51c7..091de3a86461 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragAndDropController.java @@ -94,7 +94,24 @@ public class DragAndDropController implements DisplayController.OnDisplaysChange void onDragStarted(); } - public DragAndDropController(Context context, + /** + * Creates {@link DragAndDropController}. Returns {@code null} if the feature is disabled. + */ + public static DragAndDropController create(Context context, + ShellInit shellInit, + ShellController shellController, + DisplayController displayController, + UiEventLogger uiEventLogger, + IconProvider iconProvider, + ShellExecutor mainExecutor) { + if (!context.getResources().getBoolean(R.bool.config_enableShellDragDrop)) { + return null; + } + return new DragAndDropController(context, shellInit, shellController, displayController, + uiEventLogger, iconProvider, mainExecutor); + } + + DragAndDropController(Context context, ShellInit shellInit, ShellController shellController, DisplayController displayController, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java index 643245943916..af52350f5b48 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java @@ -165,7 +165,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, private final DisplayController mDisplayController; private final DisplayImeController mDisplayImeController; private final DisplayInsetsController mDisplayInsetsController; - private final DragAndDropController mDragAndDropController; + private final Optional<DragAndDropController> mDragAndDropController; private final Transitions mTransitions; private final TransactionPool mTransactionPool; private final IconProvider mIconProvider; @@ -191,7 +191,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, DisplayController displayController, DisplayImeController displayImeController, DisplayInsetsController displayInsetsController, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, Transitions transitions, TransactionPool transactionPool, IconProvider iconProvider, @@ -253,7 +253,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, mDisplayController = displayController; mDisplayImeController = displayImeController; mDisplayInsetsController = displayInsetsController; - mDragAndDropController = dragAndDropController; + mDragAndDropController = Optional.of(dragAndDropController); mTransitions = transitions; mTransactionPool = transactionPool; mIconProvider = iconProvider; @@ -289,7 +289,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, // TODO: Multi-display mStageCoordinator = createStageCoordinator(); } - mDragAndDropController.setSplitScreenController(this); + mDragAndDropController.ifPresent(controller -> controller.setSplitScreenController(this)); } protected StageCoordinator createStageCoordinator() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java index 46d2a5a11671..27d520d81c41 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/tv/TvSplitScreenController.java @@ -72,7 +72,7 @@ public class TvSplitScreenController extends SplitScreenController { DisplayController displayController, DisplayImeController displayImeController, DisplayInsetsController displayInsetsController, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, Transitions transitions, TransactionPool transactionPool, IconProvider iconProvider, diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index 1510ee89dcd9..47a86b1fca5c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -380,7 +380,7 @@ public class BubblesTest extends SysuiTestCase { mPositioner, mock(DisplayController.class), mOneHandedOptional, - mock(DragAndDropController.class), + Optional.of(mock(DragAndDropController.class)), syncExecutor, mock(Handler.class), mTaskViewTransitions, diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java index c3bb7716d9a9..14c3f3c4ada5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java @@ -69,7 +69,7 @@ public class TestableBubbleController extends BubbleController { BubblePositioner positioner, DisplayController displayController, Optional<OneHandedController> oneHandedOptional, - DragAndDropController dragAndDropController, + Optional<DragAndDropController> dragAndDropController, ShellExecutor shellMainExecutor, Handler shellMainHandler, TaskViewTransitions taskViewTransitions, |