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

Commit 5dcd7d36 authored by Riley Jones's avatar Riley Jones Committed by Android (Google) Code Review
Browse files

Merge "Floating menu repositions on navigation mode change" into main

parents c906b847 7c7849ce
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import com.android.systemui.accessibility.AccessibilityButtonModeObserver;
import com.android.systemui.accessibility.AccessibilityButtonModeObserver.AccessibilityButtonMode;
import com.android.systemui.accessibility.AccessibilityButtonTargetsObserver;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.settings.DisplayTracker;
import com.android.systemui.util.settings.SecureSettings;

@@ -61,6 +62,7 @@ public class AccessibilityFloatingMenuController implements

    private final SecureSettings mSecureSettings;
    private final DisplayTracker mDisplayTracker;
    private final NavigationModeController mNavigationModeController;
    @VisibleForTesting
    IAccessibilityFloatingMenu mFloatingMenu;
    private int mBtnMode;
@@ -106,7 +108,8 @@ public class AccessibilityFloatingMenuController implements
            AccessibilityButtonModeObserver accessibilityButtonModeObserver,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            SecureSettings secureSettings,
            DisplayTracker displayTracker) {
            DisplayTracker displayTracker,
            NavigationModeController navigationModeController) {
        mContext = context;
        mWindowManager = windowManager;
        mViewCaptureAwareWindowManager = viewCaptureAwareWindowManager;
@@ -117,6 +120,7 @@ public class AccessibilityFloatingMenuController implements
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mSecureSettings = secureSettings;
        mDisplayTracker = displayTracker;
        mNavigationModeController = navigationModeController;

        mIsKeyguardVisible = false;
    }
@@ -191,7 +195,8 @@ public class AccessibilityFloatingMenuController implements
            final Context windowContext = mContext.createWindowContext(defaultDisplay,
                    TYPE_NAVIGATION_BAR_PANEL, /* options= */ null);
            mFloatingMenu = new MenuViewLayerController(windowContext, mWindowManager,
                    mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings);
                    mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
                    mNavigationModeController);
        }

        mFloatingMenu.show();
+9 −1
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.messages.nano.SystemMessageProto;
import com.android.internal.util.Preconditions;
import com.android.systemui.Flags;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.res.R;
import com.android.systemui.util.settings.SecureSettings;
import com.android.wm.shell.bubbles.DismissViewUtils;
@@ -142,6 +143,8 @@ class MenuViewLayer extends FrameLayout implements
    private boolean mIsNotificationShown;
    private Optional<MenuEduTooltipView> mEduTooltipView = Optional.empty();
    private BroadcastReceiver mNotificationActionReceiver;
    private NavigationModeController mNavigationModeController;
    private NavigationModeController.ModeChangedListener mNavigationModeChangedListender;

    @IntDef({
            LayerIndex.MENU_VIEW,
@@ -220,7 +223,8 @@ class MenuViewLayer extends FrameLayout implements
            MenuViewModel menuViewModel,
            MenuViewAppearance menuViewAppearance, MenuView menuView,
            IAccessibilityFloatingMenu floatingMenu,
            SecureSettings secureSettings) {
            SecureSettings secureSettings,
            NavigationModeController navigationModeController) {
        super(context);

        // Simplifies the translation positioning and animations
@@ -253,6 +257,8 @@ class MenuViewLayer extends FrameLayout implements
        mNotificationFactory = new MenuNotificationFactory(context);
        mNotificationManager = context.getSystemService(NotificationManager.class);
        mStatusBarManager = context.getSystemService(StatusBarManager.class);
        mNavigationModeController = navigationModeController;
        mNavigationModeChangedListender = (mode -> mMenuView.onPositionChanged());

        if (Flags.floatingMenuDragToEdit()) {
            mDragToInteractAnimationController = new DragToInteractAnimationController(
@@ -381,6 +387,7 @@ class MenuViewLayer extends FrameLayout implements
                mMigrationTooltipObserver);
        mMessageView.setUndoListener(view -> undo());
        getContext().registerComponentCallbacks(this);
        mNavigationModeController.addListener(mNavigationModeChangedListender);
    }

    @Override
@@ -396,6 +403,7 @@ class MenuViewLayer extends FrameLayout implements
                mMigrationTooltipObserver);
        mHandler.removeCallbacksAndMessages(/* token= */ null);
        getContext().unregisterComponentCallbacks(this);
        mNavigationModeController.removeListener(mNavigationModeChangedListender);
    }

    @Override
+5 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;

import com.android.app.viewcapture.ViewCaptureAwareWindowManager;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.util.settings.SecureSettings;

/**
@@ -37,7 +38,8 @@ class MenuViewLayerController implements IAccessibilityFloatingMenu {

    MenuViewLayerController(Context context, WindowManager windowManager,
            ViewCaptureAwareWindowManager viewCaptureAwareWindowManager,
            AccessibilityManager accessibilityManager, SecureSettings secureSettings) {
            AccessibilityManager accessibilityManager, SecureSettings secureSettings,
            NavigationModeController navigationModeController) {
        mWindowManager = viewCaptureAwareWindowManager;

        MenuViewModel menuViewModel = new MenuViewModel(
@@ -49,7 +51,8 @@ class MenuViewLayerController implements IAccessibilityFloatingMenu {
                menuViewAppearance,
                new MenuView(context, menuViewModel, menuViewAppearance, secureSettings),
                this,
                secureSettings);
                secureSettings,
                navigationModeController);
    }

    @Override
+10 −4
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.systemui.Dependency;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.AccessibilityButtonModeObserver;
import com.android.systemui.accessibility.AccessibilityButtonTargetsObserver;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.settings.FakeDisplayTracker;
import com.android.systemui.util.settings.SecureSettings;

@@ -90,6 +91,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase {
    private SecureSettings mSecureSettings;
    @Mock
    private Lazy<ViewCapture> mLazyViewCapture;
    @Mock
    private NavigationModeController mNavigationModeController;

    @Before
    public void setUp() throws Exception {
@@ -163,7 +166,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase {
        enableAccessibilityFloatingMenuConfig();
        mController = setUpController();
        mController.mFloatingMenu = new MenuViewLayerController(mContextWrapper, mWindowManager,
                mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings);
                mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
                mNavigationModeController);
        captureKeyguardUpdateMonitorCallback();
        mKeyguardCallback.onUserUnlocked();

@@ -190,7 +194,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase {
        enableAccessibilityFloatingMenuConfig();
        mController = setUpController();
        mController.mFloatingMenu = new MenuViewLayerController(mContextWrapper, mWindowManager,
                mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings);
                mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
                mNavigationModeController);
        captureKeyguardUpdateMonitorCallback();

        mKeyguardCallback.onUserSwitching(fakeUserId);
@@ -204,7 +209,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase {
        enableAccessibilityFloatingMenuConfig();
        mController = setUpController();
        mController.mFloatingMenu = new MenuViewLayerController(mContextWrapper, mWindowManager,
                mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings);
                mViewCaptureAwareWindowManager, mAccessibilityManager, mSecureSettings,
                mNavigationModeController);
        captureKeyguardUpdateMonitorCallback();
        mKeyguardCallback.onUserUnlocked();
        mKeyguardCallback.onKeyguardVisibilityChanged(true);
@@ -340,7 +346,7 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase {
                new AccessibilityFloatingMenuController(mContextWrapper, windowManager,
                        viewCaptureAwareWindowManager, displayManager, mAccessibilityManager,
                        mTargetsObserver, mModeObserver, mKeyguardUpdateMonitor, mSecureSettings,
                        displayTracker);
                        displayTracker, mNavigationModeController);
        controller.init();

        return controller;
+3 −1
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.accessibility.utils.TestUtils;
import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.res.R;
import com.android.systemui.util.settings.SecureSettings;

@@ -94,7 +95,8 @@ public class MenuItemAccessibilityDelegateTest extends SysuiTestCase {
        mMenuViewLayer = spy(new MenuViewLayer(
                mContext, stubWindowManager, mAccessibilityManager,
                stubMenuViewModel, stubMenuViewAppearance, mMenuView,
                mock(IAccessibilityFloatingMenu.class), mSecureSettings));
                mock(IAccessibilityFloatingMenu.class), mSecureSettings,
                mock(NavigationModeController.class)));
        doNothing().when(mMenuViewLayer).gotoEditScreen();

        doReturn(mDraggableBounds).when(mMenuView).getMenuDraggableBounds();
Loading