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

Commit 5342b3d4 authored by Pat Manning's avatar Pat Manning
Browse files

Removing 'override' from nav bar mode APIs.

Bug: 217668440
Test: StatusBarManagerTest.java, StatusBarManagerServiceTest.java
Change-Id: I1c5fa5f5d564a78e3abaf1457a105d5e8c6402b9
parent 673d54f6
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -915,10 +915,10 @@ package android.app {
  public class StatusBarManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo();
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getNavBarModeOverride();
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public int getNavBarMode();
    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void registerNearbyMediaDevicesProvider(@NonNull android.media.NearbyMediaDevicesProvider);
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setDisabledForSetup(boolean);
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setNavBarModeOverride(int);
    method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setNavBarMode(int);
    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void unregisterNearbyMediaDevicesProvider(@NonNull android.media.NearbyMediaDevicesProvider);
    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void updateMediaTapToTransferReceiverDisplay(int, @NonNull android.media.MediaRoute2Info, @Nullable android.graphics.drawable.Icon, @Nullable CharSequence);
    method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void updateMediaTapToTransferSenderDisplay(int, @NonNull android.media.MediaRoute2Info, @Nullable java.util.concurrent.Executor, @Nullable Runnable);
@@ -933,8 +933,8 @@ package android.app {
    field public static final int MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_FAILED = 7; // 0x7
    field public static final int MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_SUCCEEDED = 5; // 0x5
    field public static final int MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_TRIGGERED = 3; // 0x3
    field public static final int NAV_BAR_MODE_OVERRIDE_KIDS = 1; // 0x1
    field public static final int NAV_BAR_MODE_OVERRIDE_NONE = 0; // 0x0
    field public static final int NAV_BAR_MODE_DEFAULT = 0; // 0x0
    field public static final int NAV_BAR_MODE_KIDS = 1; // 0x1
  }
  public static final class StatusBarManager.DisableInfo {
+19 −21
Original line number Diff line number Diff line
@@ -324,15 +324,15 @@ public class StatusBarManager {
    public @interface RequestResult {}

    /**
     * Constant for {@link #setNavBarModeOverride(int)} indicating the default navbar mode.
     * Constant for {@link #setNavBarMode(int)} indicating the default navbar mode.
     *
     * @hide
     */
    @SystemApi
    public static final int NAV_BAR_MODE_OVERRIDE_NONE = 0;
    public static final int NAV_BAR_MODE_DEFAULT = 0;

    /**
     * Constant for {@link #setNavBarModeOverride(int)} indicating kids navbar mode.
     * Constant for {@link #setNavBarMode(int)} indicating kids navbar mode.
     *
     * <p>When used, back and home icons will change drawables and layout, recents will be hidden,
     * and the navbar will remain visible when apps are in immersive mode.
@@ -340,15 +340,15 @@ public class StatusBarManager {
     * @hide
     */
    @SystemApi
    public static final int NAV_BAR_MODE_OVERRIDE_KIDS = 1;
    public static final int NAV_BAR_MODE_KIDS = 1;

    /** @hide */
    @IntDef(prefix = {"NAV_BAR_MODE_OVERRIDE_"}, value = {
            NAV_BAR_MODE_OVERRIDE_NONE,
            NAV_BAR_MODE_OVERRIDE_KIDS
    @IntDef(prefix = {"NAV_BAR_MODE_"}, value = {
            NAV_BAR_MODE_DEFAULT,
            NAV_BAR_MODE_KIDS
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface NavBarModeOverride {}
    public @interface NavBarMode {}

    /**
     * State indicating that this sender device is close to a receiver device, so the user can
@@ -926,25 +926,23 @@ public class StatusBarManager {
    }

    /**
     * Sets or removes the navigation bar mode override.
     * Sets or removes the navigation bar mode.
     *
     * @param navBarModeOverride the mode of the navigation bar override to be set.
     * @param navBarMode the mode of the navigation bar to be set.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.STATUS_BAR)
    public void setNavBarModeOverride(@NavBarModeOverride int navBarModeOverride) {
        if (navBarModeOverride != NAV_BAR_MODE_OVERRIDE_NONE
                && navBarModeOverride != NAV_BAR_MODE_OVERRIDE_KIDS) {
            throw new IllegalArgumentException(
                    "Supplied navBarModeOverride not supported: " + navBarModeOverride);
    public void setNavBarMode(@NavBarMode int navBarMode) {
        if (navBarMode != NAV_BAR_MODE_DEFAULT && navBarMode != NAV_BAR_MODE_KIDS) {
            throw new IllegalArgumentException("Supplied navBarMode not supported: " + navBarMode);
        }

        try {
            final IStatusBarService svc = getService();
            if (svc != null) {
                svc.setNavBarModeOverride(navBarModeOverride);
                svc.setNavBarMode(navBarMode);
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
@@ -952,23 +950,23 @@ public class StatusBarManager {
    }

    /**
     * Gets the navigation bar mode override. Returns default value if no override is set.
     * Gets the navigation bar mode. Returns default value if no mode is set.
     *
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.STATUS_BAR)
    public @NavBarModeOverride int getNavBarModeOverride() {
        int navBarModeOverride = NAV_BAR_MODE_OVERRIDE_NONE;
    public @NavBarMode int getNavBarMode() {
        int navBarMode = NAV_BAR_MODE_DEFAULT;
        try {
            final IStatusBarService svc = getService();
            if (svc != null) {
                navBarModeOverride = svc.getNavBarModeOverride();
                navBarMode = svc.getNavBarMode();
            }
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
        return navBarModeOverride;
        return navBarMode;
    }

    /**
+5 −5
Original line number Diff line number Diff line
@@ -175,20 +175,20 @@ interface IStatusBarService
    void cancelRequestAddTile(in String packageName);

    /**
    * Overrides the navigation bar mode.
    * Sets the navigation bar mode.
    *
    * @param navBarModeOverride the mode of the navigation bar override to be set.
    * @param navBarMode the mode of the navigation bar to be set.
    *
    * @hide
    */
    void setNavBarModeOverride(int navBarModeOverride);
    void setNavBarMode(int navBarMode);

    /**
    * Gets the navigation bar mode override.
    * Gets the navigation bar mode.
    *
    * @hide
    */
    int getNavBarModeOverride();
    int getNavBarMode();

    /**
    * Register a listener for certain sessions. Each session may be guarded by its own permission.
+13 −14
Original line number Diff line number Diff line
@@ -18,9 +18,9 @@ package com.android.server.statusbar;

import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
import static android.app.StatusBarManager.DISABLE2_NOTIFICATION_SHADE;
import static android.app.StatusBarManager.NAV_BAR_MODE_OVERRIDE_KIDS;
import static android.app.StatusBarManager.NAV_BAR_MODE_OVERRIDE_NONE;
import static android.app.StatusBarManager.NavBarModeOverride;
import static android.app.StatusBarManager.NAV_BAR_MODE_DEFAULT;
import static android.app.StatusBarManager.NAV_BAR_MODE_KIDS;
import static android.app.StatusBarManager.NavBarMode;
import static android.app.StatusBarManager.SessionFlags;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY;
@@ -1945,26 +1945,25 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
    }

    /**
     * Sets or removes the navigation bar mode override.
     * Sets or removes the navigation bar mode.
     *
     * @param navBarModeOverride the mode of the navigation bar override to be set.
     * @param navBarMode the mode of the navigation bar to be set.
     */
    public void setNavBarModeOverride(@NavBarModeOverride int navBarModeOverride) {
    public void setNavBarMode(@NavBarMode int navBarMode) {
        enforceStatusBar();
        if (navBarModeOverride != NAV_BAR_MODE_OVERRIDE_NONE
                && navBarModeOverride != NAV_BAR_MODE_OVERRIDE_KIDS) {
        if (navBarMode != NAV_BAR_MODE_DEFAULT && navBarMode != NAV_BAR_MODE_KIDS) {
            throw new UnsupportedOperationException(
                    "Supplied navBarModeOverride not supported: " + navBarModeOverride);
                    "Supplied navBarMode not supported: " + navBarMode);
        }

        final int userId = mCurrentUserId;
        final long userIdentity = Binder.clearCallingIdentity();
        try {
            Settings.Secure.putIntForUser(mContext.getContentResolver(),
                    Settings.Secure.NAV_BAR_KIDS_MODE, navBarModeOverride, userId);
                    Settings.Secure.NAV_BAR_KIDS_MODE, navBarMode, userId);

            IOverlayManager overlayManager = getOverlayManager();
            if (overlayManager != null && navBarModeOverride == NAV_BAR_MODE_OVERRIDE_KIDS
            if (overlayManager != null && navBarMode == NAV_BAR_MODE_KIDS
                    && isPackageSupported(NAV_BAR_MODE_3BUTTON_OVERLAY)) {
                overlayManager.setEnabledExclusiveInCategory(NAV_BAR_MODE_3BUTTON_OVERLAY, userId);
            }
@@ -1976,14 +1975,14 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D
    }

    /**
     * Gets the navigation bar mode override. Returns default value if no override is set.
     * Gets the navigation bar mode. Returns default value if no mode is set.
     *
     * @hide
     */
    public @NavBarModeOverride int getNavBarModeOverride() {
    public @NavBarMode int getNavBarMode() {
        enforceStatusBar();

        int navBarKidsMode = NAV_BAR_MODE_OVERRIDE_NONE;
        int navBarKidsMode = NAV_BAR_MODE_DEFAULT;
        final int userId = mCurrentUserId;
        final long userIdentity = Binder.clearCallingIdentity();
        try {
+19 −19
Original line number Diff line number Diff line
@@ -584,55 +584,55 @@ public class StatusBarManagerServiceTest {
    }

    @Test
    public void testSetNavBarModeOverride_setsOverrideModeKids() throws RemoteException {
        int navBarModeOverrideKids = StatusBarManager.NAV_BAR_MODE_OVERRIDE_KIDS;
    public void testSetNavBarMode_setsModeKids() throws RemoteException {
        int navBarModeKids = StatusBarManager.NAV_BAR_MODE_KIDS;

        mStatusBarManagerService.setNavBarModeOverride(navBarModeOverrideKids);
        mStatusBarManagerService.setNavBarMode(navBarModeKids);

        assertEquals(navBarModeOverrideKids, mStatusBarManagerService.getNavBarModeOverride());
        assertEquals(navBarModeKids, mStatusBarManagerService.getNavBarMode());
        verify(mOverlayManager).setEnabledExclusiveInCategory(anyString(), anyInt());
    }

    @Test
    public void testSetNavBarModeOverride_setsOverrideModeNone() throws RemoteException {
        int navBarModeOverrideNone = StatusBarManager.NAV_BAR_MODE_OVERRIDE_NONE;
    public void testSetNavBarMode_setsModeNone() throws RemoteException {
        int navBarModeNone = StatusBarManager.NAV_BAR_MODE_DEFAULT;

        mStatusBarManagerService.setNavBarModeOverride(navBarModeOverrideNone);
        mStatusBarManagerService.setNavBarMode(navBarModeNone);

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

    @Test
    public void testSetNavBarModeOverride_invalidInputThrowsError() throws RemoteException {
        int navBarModeOverrideInvalid = -1;
    public void testSetNavBarMode_invalidInputThrowsError() throws RemoteException {
        int navBarModeInvalid = -1;

        assertThrows(UnsupportedOperationException.class,
                () -> mStatusBarManagerService.setNavBarModeOverride(navBarModeOverrideInvalid));
                () -> mStatusBarManagerService.setNavBarMode(navBarModeInvalid));
        verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
    }

    @Test
    public void testSetNavBarModeOverride_noOverlayManagerDoesNotEnable() throws RemoteException {
    public void testSetNavBarMode_noOverlayManagerDoesNotEnable() throws RemoteException {
        mOverlayManager = null;
        int navBarModeOverrideKids = StatusBarManager.NAV_BAR_MODE_OVERRIDE_KIDS;
        int navBarModeKids = StatusBarManager.NAV_BAR_MODE_KIDS;

        mStatusBarManagerService.setNavBarModeOverride(navBarModeOverrideKids);
        mStatusBarManagerService.setNavBarMode(navBarModeKids);

        assertEquals(navBarModeOverrideKids, mStatusBarManagerService.getNavBarModeOverride());
        assertEquals(navBarModeKids, mStatusBarManagerService.getNavBarMode());
        verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
    }

    @Test
    public void testSetNavBarModeOverride_noPackageDoesNotEnable() throws Exception {
    public void testSetNavBarMode_noPackageDoesNotEnable() throws Exception {
        mContext.setMockPackageManager(mPackageManager);
        when(mPackageManager.getPackageInfo(anyString(),
                any(PackageManager.PackageInfoFlags.class))).thenReturn(null);
        int navBarModeOverrideKids = StatusBarManager.NAV_BAR_MODE_OVERRIDE_KIDS;
        int navBarModeKids = StatusBarManager.NAV_BAR_MODE_KIDS;

        mStatusBarManagerService.setNavBarModeOverride(navBarModeOverrideKids);
        mStatusBarManagerService.setNavBarMode(navBarModeKids);

        assertEquals(navBarModeOverrideKids, mStatusBarManagerService.getNavBarModeOverride());
        assertEquals(navBarModeKids, mStatusBarManagerService.getNavBarMode());
        verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
    }