summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java31
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java1
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java13
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java7
7 files changed, 57 insertions, 15 deletions
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 f979f4d3b41f..ce1f8707da31 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
@@ -89,6 +89,8 @@ import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TaskStackListenerCallback;
import com.android.wm.shell.common.TaskStackListenerImpl;
+import com.android.wm.shell.onehanded.OneHandedController;
+import com.android.wm.shell.onehanded.OneHandedTransitionCallback;
import com.android.wm.shell.pip.PinnedStackListenerForwarder;
import java.io.FileDescriptor;
@@ -98,6 +100,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
import java.util.function.IntConsumer;
@@ -198,6 +201,9 @@ public class BubbleController {
/** True when user is in status bar unlock shade. */
private boolean mIsStatusBarShade = true;
+ /** One handed mode controller to register transition listener. */
+ private Optional<OneHandedController> mOneHandedOptional;
+
/**
* Creates an instance of the BubbleController.
*/
@@ -212,6 +218,7 @@ public class BubbleController {
UiEventLogger uiEventLogger,
ShellTaskOrganizer organizer,
DisplayController displayController,
+ Optional<OneHandedController> oneHandedOptional,
ShellExecutor mainExecutor,
Handler mainHandler,
TaskViewTransitions taskViewTransitions,
@@ -222,8 +229,9 @@ public class BubbleController {
return new BubbleController(context, data, synchronizer, floatingContentCoordinator,
new BubbleDataRepository(context, launcherApps, mainExecutor),
statusBarService, windowManager, windowManagerShellWrapper, launcherApps,
- logger, taskStackListener, organizer, positioner, displayController, mainExecutor,
- mainHandler, taskViewTransitions, syncQueue);
+ logger, taskStackListener, organizer, positioner, displayController,
+ oneHandedOptional, mainExecutor, mainHandler, taskViewTransitions,
+ syncQueue);
}
/**
@@ -244,6 +252,7 @@ public class BubbleController {
ShellTaskOrganizer organizer,
BubblePositioner positioner,
DisplayController displayController,
+ Optional<OneHandedController> oneHandedOptional,
ShellExecutor mainExecutor,
Handler mainHandler,
TaskViewTransitions taskViewTransitions,
@@ -271,9 +280,25 @@ public class BubbleController {
mBubbleIconFactory = new BubbleIconFactory(context);
mDisplayController = displayController;
mTaskViewTransitions = taskViewTransitions;
+ mOneHandedOptional = oneHandedOptional;
mSyncQueue = syncQueue;
}
+ private static void registerOneHandedState(OneHandedController oneHanded) {
+ oneHanded.registerTransitionCallback(
+ new OneHandedTransitionCallback() {
+ @Override
+ public void onStartFinished(Rect bounds) {
+ // TODO(b/198403767) mStackView.offSetY(int bounds.top)
+ }
+
+ @Override
+ public void onStopFinished(Rect bounds) {
+ // TODO(b/198403767) mStackView.offSetY(int bounds.top)
+ }
+ });
+ }
+
public void initialize() {
mBubbleData.setListener(mBubbleDataListener);
mBubbleData.setSuppressionChangedListener(this::onBubbleNotificationSuppressionChanged);
@@ -397,6 +422,8 @@ public class BubbleController {
}
}
});
+
+ mOneHandedOptional.ifPresent(BubbleController::registerOneHandedState);
}
@VisibleForTesting
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 6d158d591011..23d9b8b14159 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
@@ -362,7 +362,6 @@ public abstract class WMShellBaseModule {
return Optional.empty();
}
-
//
// Task to Surface communication
//
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 dff563589e5b..d681a7780295 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
@@ -107,6 +107,7 @@ public class WMShellModule {
UiEventLogger uiEventLogger,
ShellTaskOrganizer organizer,
DisplayController displayController,
+ @DynamicOverride Optional<OneHandedController> oneHandedOptional,
@ShellMainThread ShellExecutor mainExecutor,
@ShellMainThread Handler mainHandler,
TaskViewTransitions taskViewTransitions,
@@ -114,8 +115,8 @@ public class WMShellModule {
return BubbleController.create(context, null /* synchronizer */,
floatingContentCoordinator, statusBarService, windowManager,
windowManagerShellWrapper, launcherApps, taskStackListener,
- uiEventLogger, organizer, displayController, mainExecutor, mainHandler,
- taskViewTransitions, syncQueue);
+ uiEventLogger, organizer, displayController, oneHandedOptional,
+ mainExecutor, mainHandler, taskViewTransitions, syncQueue);
}
//
@@ -142,12 +143,10 @@ public class WMShellModule {
static OneHandedController provideOneHandedController(Context context,
WindowManager windowManager, DisplayController displayController,
DisplayLayout displayLayout, TaskStackListenerImpl taskStackListener,
- UiEventLogger uiEventLogger,
- @ShellMainThread ShellExecutor mainExecutor,
+ UiEventLogger uiEventLogger, @ShellMainThread ShellExecutor mainExecutor,
@ShellMainThread Handler mainHandler) {
- return OneHandedController.create(context, windowManager,
- displayController, displayLayout, taskStackListener, uiEventLogger, mainExecutor,
- mainHandler);
+ return OneHandedController.create(context, windowManager, displayController, displayLayout,
+ taskStackListener, uiEventLogger, mainExecutor, mainHandler);
}
//
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
index 72bb6552ff3d..507204ce0229 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java
@@ -198,7 +198,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
OneHandedSettingsUtil settingsUtil = new OneHandedSettingsUtil();
OneHandedAccessibilityUtil accessibilityUtil = new OneHandedAccessibilityUtil(context);
OneHandedTimeoutHandler timeoutHandler = new OneHandedTimeoutHandler(mainExecutor);
- OneHandedState transitionState = new OneHandedState();
+ OneHandedState oneHandedState = new OneHandedState();
OneHandedTutorialHandler tutorialHandler = new OneHandedTutorialHandler(context,
settingsUtil, windowManager);
OneHandedAnimationController animationController =
@@ -216,7 +216,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
ServiceManager.getService(Context.OVERLAY_SERVICE));
return new OneHandedController(context, displayController,
oneHandedBackgroundPanelOrganizer, organizer, touchHandler, tutorialHandler,
- settingsUtil, accessibilityUtil, timeoutHandler, transitionState,
+ settingsUtil, accessibilityUtil, timeoutHandler, oneHandedState,
oneHandedUiEventsLogger, overlayManager, taskStackListener, mainExecutor,
mainHandler);
}
@@ -392,8 +392,10 @@ public class OneHandedController implements RemoteCallable<OneHandedController>,
mEventCallback = callback;
}
- @VisibleForTesting
- void registerTransitionCallback(OneHandedTransitionCallback callback) {
+ /**
+ * Registers {@link OneHandedTransitionCallback} to monitor the transition status
+ */
+ public void registerTransitionCallback(OneHandedTransitionCallback callback) {
mDisplayAreaOrganizer.registerTransitionCallback(callback);
}
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 c7943c3ed121..d27a57077c9c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -124,6 +124,7 @@ import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TaskStackListenerImpl;
+import com.android.wm.shell.onehanded.OneHandedController;
import com.google.common.collect.ImmutableList;
@@ -137,6 +138,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.List;
+import java.util.Optional;
/**
* Tests the NotificationEntryManager setup with BubbleController.
@@ -248,6 +250,8 @@ public class BubblesTest extends SysuiTestCase {
private AuthController mAuthController;
@Mock
private TaskViewTransitions mTaskViewTransitions;
+ @Mock
+ private Optional<OneHandedController> mOneHandedOptional;
private TestableBubblePositioner mPositioner;
@@ -344,6 +348,7 @@ public class BubblesTest extends SysuiTestCase {
mShellTaskOrganizer,
mPositioner,
mock(DisplayController.class),
+ mOneHandedOptional,
syncExecutor,
mock(Handler.class),
mTaskViewTransitions,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java
index 65c219c1be16..ad26f0112a8e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java
@@ -107,6 +107,7 @@ import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TaskStackListenerImpl;
+import com.android.wm.shell.onehanded.OneHandedController;
import org.junit.Before;
import org.junit.Ignore;
@@ -118,6 +119,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.List;
+import java.util.Optional;
/**
* Tests the NotifPipeline setup with BubbleController.
@@ -222,6 +224,8 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase {
private ScreenOffAnimationController mScreenOffAnimationController;
@Mock
private TaskViewTransitions mTaskViewTransitions;
+ @Mock
+ private Optional<OneHandedController> mOneHandedOptional;
private TestableBubblePositioner mPositioner;
@@ -309,6 +313,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase {
mShellTaskOrganizer,
mPositioner,
mock(DisplayController.class),
+ mOneHandedOptional,
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 80834c8130e6..83f5987ac962 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/TestableBubbleController.java
@@ -35,6 +35,9 @@ import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.SyncTransactionQueue;
import com.android.wm.shell.common.TaskStackListenerImpl;
+import com.android.wm.shell.onehanded.OneHandedController;
+
+import java.util.Optional;
/**
* Testable BubbleController subclass that immediately synchronizes surfaces.
@@ -55,6 +58,7 @@ public class TestableBubbleController extends BubbleController {
ShellTaskOrganizer shellTaskOrganizer,
BubblePositioner positioner,
DisplayController displayController,
+ Optional<OneHandedController> oneHandedOptional,
ShellExecutor shellMainExecutor,
Handler shellMainHandler,
TaskViewTransitions taskViewTransitions,
@@ -62,7 +66,8 @@ public class TestableBubbleController extends BubbleController {
super(context, data, Runnable::run, floatingContentCoordinator, dataRepository,
statusBarService, windowManager, windowManagerShellWrapper, launcherApps,
bubbleLogger, taskStackListener, shellTaskOrganizer, positioner, displayController,
- shellMainExecutor, shellMainHandler, taskViewTransitions, syncQueue);
+ oneHandedOptional, shellMainExecutor, shellMainHandler, taskViewTransitions,
+ syncQueue);
setInflateSynchronously(true);
initialize();
}