Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 341df3e4 authored by Bill Lin's avatar Bill Lin Committed by Android (Google) Code Review
Browse files

Merge "Provides OneHandedController for wm shell features"

parents 45a04a61 87d6ddef
Loading
Loading
Loading
Loading
+29 −2
Original line number Diff line number Diff line
@@ -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
+0 −1
Original line number Diff line number Diff line
@@ -362,7 +362,6 @@ public abstract class WMShellBaseModule {
        return Optional.empty();
    }


    //
    // Task to Surface communication
    //
+6 −7
Original line number Diff line number Diff line
@@ -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);
    }

    //
+6 −4
Original line number Diff line number Diff line
@@ -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);
    }

+5 −0
Original line number Diff line number Diff line
@@ -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,
Loading