Removing 'override' from nav bar mode APIs.

Bug: 217668440
Test: StatusBarManagerTest.java, StatusBarManagerServiceTest.java
Change-Id: I1c5fa5f5d564a78e3abaf1457a105d5e8c6402b9
This commit is contained in:
Pat Manning
2022-02-16 15:08:04 +00:00
parent 673d54f64d
commit 5342b3d416
5 changed files with 60 additions and 63 deletions

View File

@@ -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 {

View File

@@ -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;
}
/**

View File

@@ -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.

View File

@@ -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 {

View File

@@ -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());
}