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

Commit d3e221b4 authored by Pat Manning's avatar Pat Manning
Browse files

Set gestural navigation overlay when in default nav bar mode.

Bug: 440143079
Test: StatusBarManagerTest#testSetNavBarMode_kids_doesNotThrow
Flag: EXEMPT Bugfix
Change-Id: Iba2807ed9a1693ba81fede71416784e34292cb85
parent a450e642
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -32,7 +32,9 @@ import static android.os.UserHandle.getCallingUserId;
import static android.os.UserManager.isVisibleBackgroundUsersEnabled;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.ViewRootImpl.CLIENT_TRANSIENT;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY;

import android.Manifest;
import android.annotation.NonNull;
@@ -132,8 +134,10 @@ import com.android.systemui.shared.Flags;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@@ -2601,6 +2605,22 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
            if (overlayManager != null && navBarMode == NAV_BAR_MODE_KIDS
                    && isPackageSupported(NAV_BAR_MODE_3BUTTON_OVERLAY)) {
                overlayManager.setEnabledExclusiveInCategory(NAV_BAR_MODE_3BUTTON_OVERLAY, userId);
            } else if (overlayManager != null && navBarMode == NAV_BAR_MODE_DEFAULT) {
                List<String> defaultOverlayPackages =
                        Arrays.asList(overlayManager.getDefaultOverlayPackages());
                if (defaultOverlayPackages.contains(NAV_BAR_MODE_3BUTTON_OVERLAY)
                        && isPackageSupported(NAV_BAR_MODE_3BUTTON_OVERLAY)) {
                    overlayManager.setEnabledExclusiveInCategory(
                            NAV_BAR_MODE_3BUTTON_OVERLAY, userId);
                } else if (defaultOverlayPackages.contains(NAV_BAR_MODE_2BUTTON_OVERLAY)
                        && isPackageSupported(NAV_BAR_MODE_2BUTTON_OVERLAY)) {
                    overlayManager.setEnabledExclusiveInCategory(
                            NAV_BAR_MODE_2BUTTON_OVERLAY, userId);
                } else if (defaultOverlayPackages.contains(NAV_BAR_MODE_GESTURAL_OVERLAY)
                        && isPackageSupported(NAV_BAR_MODE_GESTURAL_OVERLAY)) {
                    overlayManager.setEnabledExclusiveInCategory(
                            NAV_BAR_MODE_GESTURAL_OVERLAY, userId);
                }
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
+8 −2
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import static android.app.StatusBarManager.DISABLE_NONE;
import static android.app.StatusBarManager.DISABLE_RECENT;
import static android.app.StatusBarManager.DISABLE_SEARCH;
import static android.app.StatusBarManager.DISABLE_SYSTEM_INFO;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -712,13 +713,18 @@ public class StatusBarManagerServiceTest {
    }

    @Test
    public void testSetNavBarMode_setsModeNone() throws RemoteException {
    public void testSetNavBarMode_setsModeGestural() throws Exception {
        when(mOverlayManager.getDefaultOverlayPackages())
                .thenReturn(new String[] {NAV_BAR_MODE_GESTURAL_OVERLAY});
        when(mPackageManager.getPackageInfo(eq(NAV_BAR_MODE_GESTURAL_OVERLAY),
                any(PackageManager.PackageInfoFlags.class))).thenReturn(new PackageInfo());
        int navBarModeNone = StatusBarManager.NAV_BAR_MODE_DEFAULT;

        mStatusBarManagerService.setNavBarMode(navBarModeNone);

        assertEquals(navBarModeNone, mStatusBarManagerService.getNavBarMode());
        verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
        verify(mOverlayManager)
                .setEnabledExclusiveInCategory(eq(NAV_BAR_MODE_GESTURAL_OVERLAY), anyInt());
    }

    @Test