Merge "Removing 'override' from nav bar mode APIs." into tm-dev

This commit is contained in:
Pat Manning
2022-02-24 15:44:35 +00:00
committed by Android (Google) Code Review
5 changed files with 60 additions and 63 deletions

View File

@@ -915,10 +915,10 @@ package android.app {
public class StatusBarManager { public class StatusBarManager {
method @NonNull @RequiresPermission(android.Manifest.permission.STATUS_BAR) public android.app.StatusBarManager.DisableInfo getDisableInfo(); 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.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 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 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 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); 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_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_SUCCEEDED = 5; // 0x5
field public static final int MEDIA_TRANSFER_SENDER_STATE_TRANSFER_TO_THIS_DEVICE_TRIGGERED = 3; // 0x3 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_DEFAULT = 0; // 0x0
field public static final int NAV_BAR_MODE_OVERRIDE_NONE = 0; // 0x0 field public static final int NAV_BAR_MODE_KIDS = 1; // 0x1
} }
public static final class StatusBarManager.DisableInfo { public static final class StatusBarManager.DisableInfo {

View File

@@ -324,15 +324,15 @@ public class StatusBarManager {
public @interface RequestResult {} public @interface RequestResult {}
/** /**
* Constant for {@link #setNavBarModeOverride(int)} indicating the default navbar mode. * Constant for {@link #setNavBarMode(int)} indicating the default navbar mode.
* *
* @hide * @hide
*/ */
@SystemApi @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, * <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. * and the navbar will remain visible when apps are in immersive mode.
@@ -340,15 +340,15 @@ public class StatusBarManager {
* @hide * @hide
*/ */
@SystemApi @SystemApi
public static final int NAV_BAR_MODE_OVERRIDE_KIDS = 1; public static final int NAV_BAR_MODE_KIDS = 1;
/** @hide */ /** @hide */
@IntDef(prefix = {"NAV_BAR_MODE_OVERRIDE_"}, value = { @IntDef(prefix = {"NAV_BAR_MODE_"}, value = {
NAV_BAR_MODE_OVERRIDE_NONE, NAV_BAR_MODE_DEFAULT,
NAV_BAR_MODE_OVERRIDE_KIDS NAV_BAR_MODE_KIDS
}) })
@Retention(RetentionPolicy.SOURCE) @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 * 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 * @hide
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.STATUS_BAR) @RequiresPermission(android.Manifest.permission.STATUS_BAR)
public void setNavBarModeOverride(@NavBarModeOverride int navBarModeOverride) { public void setNavBarMode(@NavBarMode int navBarMode) {
if (navBarModeOverride != NAV_BAR_MODE_OVERRIDE_NONE if (navBarMode != NAV_BAR_MODE_DEFAULT && navBarMode != NAV_BAR_MODE_KIDS) {
&& navBarModeOverride != NAV_BAR_MODE_OVERRIDE_KIDS) { throw new IllegalArgumentException("Supplied navBarMode not supported: " + navBarMode);
throw new IllegalArgumentException(
"Supplied navBarModeOverride not supported: " + navBarModeOverride);
} }
try { try {
final IStatusBarService svc = getService(); final IStatusBarService svc = getService();
if (svc != null) { if (svc != null) {
svc.setNavBarModeOverride(navBarModeOverride); svc.setNavBarMode(navBarMode);
} }
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); 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 * @hide
*/ */
@SystemApi @SystemApi
@RequiresPermission(android.Manifest.permission.STATUS_BAR) @RequiresPermission(android.Manifest.permission.STATUS_BAR)
public @NavBarModeOverride int getNavBarModeOverride() { public @NavBarMode int getNavBarMode() {
int navBarModeOverride = NAV_BAR_MODE_OVERRIDE_NONE; int navBarMode = NAV_BAR_MODE_DEFAULT;
try { try {
final IStatusBarService svc = getService(); final IStatusBarService svc = getService();
if (svc != null) { if (svc != null) {
navBarModeOverride = svc.getNavBarModeOverride(); navBarMode = svc.getNavBarMode();
} }
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
return navBarModeOverride; return navBarMode;
} }
/** /**

View File

@@ -175,20 +175,20 @@ interface IStatusBarService
void cancelRequestAddTile(in String packageName); 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 * @hide
*/ */
void setNavBarModeOverride(int navBarModeOverride); void setNavBarMode(int navBarMode);
/** /**
* Gets the navigation bar mode override. * Gets the navigation bar mode.
* *
* @hide * @hide
*/ */
int getNavBarModeOverride(); int getNavBarMode();
/** /**
* Register a listener for certain sessions. Each session may be guarded by its own permission. * 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_GLOBAL_ACTIONS;
import static android.app.StatusBarManager.DISABLE2_NOTIFICATION_SHADE; 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_DEFAULT;
import static android.app.StatusBarManager.NAV_BAR_MODE_OVERRIDE_NONE; import static android.app.StatusBarManager.NAV_BAR_MODE_KIDS;
import static android.app.StatusBarManager.NavBarModeOverride; import static android.app.StatusBarManager.NavBarMode;
import static android.app.StatusBarManager.SessionFlags; import static android.app.StatusBarManager.SessionFlags;
import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVERLAY; 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(); enforceStatusBar();
if (navBarModeOverride != NAV_BAR_MODE_OVERRIDE_NONE if (navBarMode != NAV_BAR_MODE_DEFAULT && navBarMode != NAV_BAR_MODE_KIDS) {
&& navBarModeOverride != NAV_BAR_MODE_OVERRIDE_KIDS) {
throw new UnsupportedOperationException( throw new UnsupportedOperationException(
"Supplied navBarModeOverride not supported: " + navBarModeOverride); "Supplied navBarMode not supported: " + navBarMode);
} }
final int userId = mCurrentUserId; final int userId = mCurrentUserId;
final long userIdentity = Binder.clearCallingIdentity(); final long userIdentity = Binder.clearCallingIdentity();
try { try {
Settings.Secure.putIntForUser(mContext.getContentResolver(), Settings.Secure.putIntForUser(mContext.getContentResolver(),
Settings.Secure.NAV_BAR_KIDS_MODE, navBarModeOverride, userId); Settings.Secure.NAV_BAR_KIDS_MODE, navBarMode, userId);
IOverlayManager overlayManager = getOverlayManager(); 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)) { && isPackageSupported(NAV_BAR_MODE_3BUTTON_OVERLAY)) {
overlayManager.setEnabledExclusiveInCategory(NAV_BAR_MODE_3BUTTON_OVERLAY, userId); 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 * @hide
*/ */
public @NavBarModeOverride int getNavBarModeOverride() { public @NavBarMode int getNavBarMode() {
enforceStatusBar(); enforceStatusBar();
int navBarKidsMode = NAV_BAR_MODE_OVERRIDE_NONE; int navBarKidsMode = NAV_BAR_MODE_DEFAULT;
final int userId = mCurrentUserId; final int userId = mCurrentUserId;
final long userIdentity = Binder.clearCallingIdentity(); final long userIdentity = Binder.clearCallingIdentity();
try { try {

View File

@@ -584,55 +584,55 @@ public class StatusBarManagerServiceTest {
} }
@Test @Test
public void testSetNavBarModeOverride_setsOverrideModeKids() throws RemoteException { public void testSetNavBarMode_setsModeKids() throws RemoteException {
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).setEnabledExclusiveInCategory(anyString(), anyInt()); verify(mOverlayManager).setEnabledExclusiveInCategory(anyString(), anyInt());
} }
@Test @Test
public void testSetNavBarModeOverride_setsOverrideModeNone() throws RemoteException { public void testSetNavBarMode_setsModeNone() throws RemoteException {
int navBarModeOverrideNone = StatusBarManager.NAV_BAR_MODE_OVERRIDE_NONE; 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()); verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
} }
@Test @Test
public void testSetNavBarModeOverride_invalidInputThrowsError() throws RemoteException { public void testSetNavBarMode_invalidInputThrowsError() throws RemoteException {
int navBarModeOverrideInvalid = -1; int navBarModeInvalid = -1;
assertThrows(UnsupportedOperationException.class, assertThrows(UnsupportedOperationException.class,
() -> mStatusBarManagerService.setNavBarModeOverride(navBarModeOverrideInvalid)); () -> mStatusBarManagerService.setNavBarMode(navBarModeInvalid));
verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt()); verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
} }
@Test @Test
public void testSetNavBarModeOverride_noOverlayManagerDoesNotEnable() throws RemoteException { public void testSetNavBarMode_noOverlayManagerDoesNotEnable() throws RemoteException {
mOverlayManager = null; 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()); verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
} }
@Test @Test
public void testSetNavBarModeOverride_noPackageDoesNotEnable() throws Exception { public void testSetNavBarMode_noPackageDoesNotEnable() throws Exception {
mContext.setMockPackageManager(mPackageManager); mContext.setMockPackageManager(mPackageManager);
when(mPackageManager.getPackageInfo(anyString(), when(mPackageManager.getPackageInfo(anyString(),
any(PackageManager.PackageInfoFlags.class))).thenReturn(null); 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()); verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
} }