Merge "Make DragAndDropController optional" into udc-dev
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user