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

Commit 627b8968 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Set gestural navigation overlay when in default nav bar mode." into main

parents 2f10baf6 d3e221b4
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